assembly-cara hitung flags
hari ini dapat ilmu tentang flags register. kalo yang udah pernah belajar organisasi komputer, pasti ga asing ya?
flags register berguna untuk menentukan keadaaan processor saat ini. nilainya berubah otomatis oleh CPU setelah operasi tertentu. misal: conditional jump
anda bisa mengecek flags register di emu8086.
flag ada bermacam2, ada CF, PF, AF, SF, ZF, TF, OF, DF...
yang baru saya pelajari adalah CF, PF, AF, ZF, SF, dan OF
makhluk2 apakah mereka? cekidot.....
seperti ini tampilannya bila anda menggunakan emu8086
CF = Carry Flags
di set 1, bila kelebihan 1 diluar 16 bit
PF = Parity Flags
di set 1, bila pada 8 bit terakhir berjumlah genap.
misal: 0000 1010 0000 1100
liat 8 bit sebelah kanan, angka 1nya ada 2, artinya genap. maka set AF = 1
AF = Auxiliary Flags
di set 1 bila pada 4 bit terakhir kelebihan 1 bit.
gini..
misalnya:
1
0000 0001
0000 1111 +
0000 1111
ZF = Zero Flags
di set 1, bila jumlah 8 bit terkanan itu 0.
misal: 0000 0000 0000 0000
hasil jumlah bit diatas adalah 0, maka set ZF =1
SF = Sign Flags
di set 1, bila bit terkiri benilai negatif (bit terdepan adalah 1). dalam biner, negatif itu 1 dan positif itu 0.
misal: 1000 0001 1100 0001
liat bit paling terkiri, itu 1 kan..nah berarti SFnya bernilai 1. bilai 0, maka SFnya bernilai 0
OF = Overflow Flags
diset 1 bila, angka desimalnya diluar rentang -128...127
misal:
isi register AX,100
isi register BX, 50
100 + 50 = 150, nah lebih dari 127...berarti OF=1.
sebagai penutup..
ada contoh seperti ini:
a= 0h (hexa)
b= 1h (hexa)
kurangkan kedua bilangan tersebut!
langkah pertama, ubah bilangan hexa menjadi bilangan biner. kemudian kurangkan.
mariii kita tentukan tiap flagsnya:
lain waktu insya allah akan membahas flags lainnya...
semoga bermanfaat :)
#happycoding
flags register berguna untuk menentukan keadaaan processor saat ini. nilainya berubah otomatis oleh CPU setelah operasi tertentu. misal: conditional jump
anda bisa mengecek flags register di emu8086.
flag ada bermacam2, ada CF, PF, AF, SF, ZF, TF, OF, DF...
yang baru saya pelajari adalah CF, PF, AF, ZF, SF, dan OF
makhluk2 apakah mereka? cekidot.....
seperti ini tampilannya bila anda menggunakan emu8086
CF = Carry Flags
di set 1, bila kelebihan 1 diluar 16 bit
PF = Parity Flags
di set 1, bila pada 8 bit terakhir berjumlah genap.
misal: 0000 1010 0000 1100
liat 8 bit sebelah kanan, angka 1nya ada 2, artinya genap. maka set AF = 1
AF = Auxiliary Flags
di set 1 bila pada 4 bit terakhir kelebihan 1 bit.
gini..
misalnya:
1
0000 0001
0000 1111 +
0000 1111
ZF = Zero Flags
di set 1, bila jumlah 8 bit terkanan itu 0.
misal: 0000 0000 0000 0000
hasil jumlah bit diatas adalah 0, maka set ZF =1
SF = Sign Flags
di set 1, bila bit terkiri benilai negatif (bit terdepan adalah 1). dalam biner, negatif itu 1 dan positif itu 0.
misal: 1000 0001 1100 0001
liat bit paling terkiri, itu 1 kan..nah berarti SFnya bernilai 1. bilai 0, maka SFnya bernilai 0
OF = Overflow Flags
diset 1 bila, angka desimalnya diluar rentang -128...127
misal:
isi register AX,100
isi register BX, 50
100 + 50 = 150, nah lebih dari 127...berarti OF=1.
sebagai penutup..
ada contoh seperti ini:
a= 0h (hexa)
b= 1h (hexa)
kurangkan kedua bilangan tersebut!
langkah pertama, ubah bilangan hexa menjadi bilangan biner. kemudian kurangkan.
0000 0000 0000 0000
0000 0000 0000 0001 -
1111 1111 1111 1111
16 bit
mariii kita tentukan tiap flagsnya:
- CF = 1 , karena liat bit terkanan (0-1), ga bisa kan? bisa tapi minus, karena biner ga kenal minus, jadi artinya minjam 1 bit pada bit sebelumnya dan seterusnya sampe ujung bit terkiri. ujung bit terkiri juga minjem kan pada bit sebelumnya, diluar 16 bit. nah berarti ada carry flags
- PF = 1, liat 8 bit terakhir (1111 1111), jumlah 1nya ada 8 buah. genap kan? nah PFnya diset 1
- AF = 1, liat 4 bit terakhir. 1111 kan? nah angka terkiri itu hasil dr pinjam 1 dari bit sebelumnya.
- ZF = 0, kenapa? karena hasilnya 1111 1111 1111 1111 artinya ga 0. ada isinya. berarti ZFnya 0
- SF = 1, karena pada 4 bit terdepan 1111, liat bit pertama 1 kan? nah itu negatif jadi SFnya 1
- OF = 0 . ubah bilangan hexa tersebut jadi desimal. berarti 0h = 0, 1h=1, jumlahkan 1+0=1, 1 masih kurang dr 127 kan? nah jadi OF=0
lain waktu insya allah akan membahas flags lainnya...
semoga bermanfaat :)
#happycoding

Comments
Post a Comment