250 likes | 485 Views
Pointer. Karakteristik Operasi Assembly. Lebar data tujuan dan asal harus sama! Lebar data tidak sama => invalid opcode Operasi 8bit disimpan pada register 8bit Operasi 16bit bisa disimpan di register 16bit atau disimpan dalam 2 buah register 16bit
E N D
Karakteristik Operasi Assembly • Lebar data tujuan dan asal harus sama! • Lebar data tidak sama => invalid opcode • Operasi 8bit disimpan pada register 8bit • Operasi 16bit bisa disimpan di register 16bit atau disimpan dalam 2 buah register 16bit • Operasi perkalian 16bit x 16bit = 32bit => disimpan dalam pasangan register AX + DX
Penyimpanan sebagai 1 variabel => menggunakan pointer • Pointer akan memungkinkan mikroprosesor melakukan perpindahan data sesuai dengan lebar tujuan, sehingga data dengan lebar yang berbeda bisa diakses dengan mudah
Contoh : A DB 17 ; DB=8 bit jadi A=8 bit B DW 35 ; DW=16 bit jadi B=16 bit : MOV AL,A ; 8 bit dengan 8 bit MOV AX,B ; 16 bit dengan 16 bit. • MOV AX, A => "**Error** BAGI.ASM(20) Operand types do not match"
Contoh : A DB 4 ; 1 byte, nilai awal='4' B DB 4,4,4,2,? ; 1*5 byte, nilai awal=4,4,4,2,? C DB 4 DUP(5) ; 1*4 byte, nilai awal='5' D DB 'HAI !!' ; 6 byte berisi 6 karakter E DW ? ; 1 word tidak diketahui isinya F DW ?,?,? ; 3 word tidak diketahui isinya G DW 10 DUP(?) ; 10 word tidak diketahui isinya H DD ? ; 1 DoubleWord tanpa nilai awal I DF ?,? ; 2 FarWord tanpa nilai awal J DQ 0A12h ; 1 QuadWord, nilai awal='0A12' K DT 25*80 ; 1 TenBytes, nilai awal='2000' L EQU 666 ; Konstanta, L=666 M DB '123' ; String '123' N DB '1','2','3' ; String '123' O DB 49,50,51 ; String '123'
Penempatan Data • Data ditempatkan pada memori dengan urutan terbalik : • MSB menempati memori dengan alamat lebih tinggi daripada LSB • Contoh :
Penggunaan Pointer • Sintak : • Tipedata PTR Operan • Contoh : TData : JMP Proses ; Lompat ke Proses A DW 01EFh ; 2 Byte B DW 02FEh ; 2 Byte D DD ? ; 4 Byte Proses: MOV AL,BYTE PTR A ; AL=EF, AX=?EF MOV AH,BYTE PTR A+1 ; AH=01, AX=01EF MOV BX,B ; BX=02FE MOV WORD PTR D,AX ; D=??01EF MOV WORD PTR D+2,BX ; D=02FE01EF
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 • Menginvertmasukan • Bisadioperasikan 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 jikasalahsatuinputnya 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 • Moxbx, 01111h • And ax, bx ; ax = 1010h
OR • Menghasilkankeluaran 1 jikasalahsatuinputnya 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 • Movbx, 0bbcch • Or ax, bx ; ax = BBCDh
XOR • Menghasilkankeluaran 1 jikakeduainputnyaberbeda Input1 Input2 Output 0 0 0 0 1 1 1 0 1 1 1 0 • Sintak : XOR Operan1, Operan2 • Flag : tidakada yang terpengaruh
Contoh : • Mov al, 123 • Mov ah, 23 • Xor ah, al ; ah = 108 • Mov ax, 0abcdh • Movbx, 0bbcch • Xor ax, bx ; ax = 1001h
TEST • Untukmengetesapakahsuatu bit adadalamsuatuvariabelatautidak • Sintak : TEST Operan1, Operan2 • Flag : OF, SF, ZF, PF, CF • Output akantetapaktifselamamasihadahasil bit operasinya yang bernilai 0 (ZF = 1) • Bisadioperasikan 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 kekiri. Bit yang ditinggalkanakandisetke 0 • Sintak : SHL Operan1, Operan2 • Jikapenggeseranlebihdari 1x maka Operan2 harus CL atau CX • Flag : OF, ZF, PF, CF, SF • Sebagai operator pengganti MUL (perkalianberbasis 2) • Contoh : • Mov al, 3 • Movcl, 3 • Shl al, cl ; al = 3 * 2^3 = 24
SHR • Menggeser bit-bit kekanan. Bit yang ditinggalkanakandisetke 0 • Sintak : SHR Operan1, Operan2 • Jikapenggeseranlebihdari 1x maka Operan2 harus CL atau CX • Flag : OF, ZF, PF, CF, SF • Sebagai operator pengganti DIV (pembagianberbasis 2) • Contoh : • Mov al, 63 • Movcl, 3 • Shr al, cl ; al = 63 div 2^3 = 7
ROL • Memutar bit-bit kekiri. Bit yang ditinggalkantidakakandisetke 0 • Sintak : ROL Operan1, Operan2 • Bit paling kiriakandimasukkanke CF • Flag : OF, CF • Contoh : • Mov al, 3 • Movcl, 3 • Rol al, cl ; al = 24
ROR • Memutar bit-bit kekanan. Bit yang ditinggalkantidakakandisetke 0 • Sintak : ROR Operan1, Operan2 • Bit paling kananakandimasukkanke CF • Flag : OF, CF • Contoh : • Mov al, 3 • Movcl, 3 • Ror al, cl ; al = 96
Tugas • Hitunglahhasiloperasibilanganberikutini : • ABCDH AND FEH • ABCDH OR FEH • NOT ABCDH • XOR ABCDH, FEH • SHR ABCDH, 3 • ROR ABCDH, 3 • Tuliskanlangkahnyadenganmenuliskanbilanganbinerdarimasing-masingoperannya