Manipulasi Bit dan Logika
Bit dan Logika Operasi terkecil dalam mikroprosesor Operasi per-bit Operasi lebih efisien dan efektif serta cepat Untuk operasi port io dan register Operasi bit : SHL, SHR, ROL, ROR, dll Operasi logika : NOT, AND, OR, XOR
NOT Menginvert masukan Bisa dioperasikan single bit maupun multi bit Input Output 1 0 0 1 Sintak : NOT variabel Contoh : Mov al, 11001001b Not al ; menghasilkan 00110110b
Mov ax,0abcdh Not ax ; ax = 5432h
AND Menghasilkan 0 jika salah satu inputnya 0 Input1 Input2 Output 0 0 0 0 1 0 1 0 0 1 1 1 Sintak : AND Operan1, Operan2 Flag register : OF, SF, ZF, PF, CF
Contoh : Mov al, 1 Mov ah, 2 And ah, al ; ah = 0 Mov ax, 01234h Mox bx, 01111h And ax, bx ; ax = 1010h
OR Sintak : OR Operan1, Operan2 Flag : OF, SF, ZF, PF, CF Menghasilkan keluaran 1 jika salah satu inputnya 1 Input1 Input2 Output 0 0 0 0 1 1 1 0 1 1 1 1 Sintak : OR Operan1, Operan2 Flag : OF, SF, ZF, PF, CF
Contoh : Mov al, 123 Mov ah, 23 Or ah, al ; ah = 127 Mov ax, 0abcdh Mov bx, 0bbcch Or ax, bx ; ax = BBCDh
XOR Sintak : XOR Operan1, Operan2 Flag : tidak ada yang terpengaruh Menghasilkan keluaran 1 jika kedua inputnya berbeda Input1 Input2 Output 0 0 0 0 1 1 1 0 1 1 1 0 Sintak : XOR Operan1, Operan2 Flag : tidak ada yang terpengaruh
Contoh : Mov al, 123 Mov ah, 23 Xor ah, al ; ah = 108 Mov ax, 0abcdh Mov bx, 0bbcch Xor ax, bx ; ax = 1001h
TEST Untuk mengetes apakah suatu bit ada dalam suatu variabel atau tidak Sintak : TEST Operan1, Operan2 Flag : OF, SF, ZF, PF, CF Output akan tetap aktif selama masih ada hasil bit operasinya yang bernilai 0 (ZF = 1) Bisa dioperasikan single maupun multi bit
Contoh : MOV AL, 066h TEST AL, 1 ; ZF = 1 TEST AL, 2 ; ZF = 0 TEST AL, 00001000b ; ZF = 1 TEST AL, 32 ; ZF = 0 MOV BX, 0dfeah ; ZF = 0 TEST BX, 5 ; ZF = 1 TEST BX, 0AH ; ZF = 0 TEST BX, 0f00h ; ZF = 0
SHL Menggeser bit-bit ke kiri. Bit yang ditinggalkan akan diset ke 0 Sintak : SHL Operan1, Operan2 Jika penggeseran lebih dari 1x maka Operan2 harus CL atau CX Flag : OF, ZF, PF, CF, SF Sebagai operator pengganti MUL (perkalian berbasis 2) Contoh : Mov al, 3 Mov cl, 3 Shl al, cl ; al = 3 * 2^3 = 24
SHR Menggeser bit-bit ke kanan. Bit yang ditinggalkan akan diset ke 0 Sintak : SHR Operan1, Operan2 Jika penggeseran lebih dari 1x maka Operan2 harus CL atau CX Flag : OF, ZF, PF, CF, SF Sebagai operator pengganti DIV (pembagian berbasis 2) Contoh : Mov al, 63 Mov cl, 3 Shr al, cl ; al = 63 div 2^3 = 7
ROL Memutar bit-bit ke kiri. Bit yang ditinggalkan tidak akan diset ke 0 Sintak : ROL Operan1, Operan2 Bit paling kiri akan dimasukkan ke CF Flag : OF, CF Contoh : Mov al, 3 Mov cl, 3 Rol al, cl ; al = 24
ROR Memutar bit-bit ke kanan. Bit yang ditinggalkan tidak akan diset ke 0 Sintak : ROR Operan1, Operan2 Bit paling kanan akan dimasukkan ke CF Flag : OF, CF Contoh : Mov al, 3 Mov cl, 3 Ror al, cl ; al = 96
Tugas Hitunglah hasil operasi bilangan berikut ini : ABCDH AND FEH ABCDH OR FEH NOT ABCDH XOR ABCDH, FEH SHR ABCDH, 3 ROR ABCDH, 3 Tuliskan langkahnya dengan menuliskan bilangan biner dari masing-masing operannya