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 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"
Tipe Data NamaLebar (byte) DB (define byte)1 DW (define word)2 DD (define doubleword)4 DF (define farword)6 DQ (define quadword)8 DT (define tenbyte)10
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
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 InputOutput Sintak : NOT variabel Contoh : Moval, b Notal; menghasilkan b
Movax,0abcdh Notax; ax = 5432h
AND Menghasilkan 0 jika salah satu inputnya 0 Input1Input2Output Sintak : AND Operan1, Operan2 Flag register : OF, SF, ZF, PF, CF
Contoh : Moval, 1 Movah, 2 Andah, al; ah = 0 Movax, 01234h Moxbx, 01111h Andax, bx; ax = 1010h
OR Menghasilkan keluaran 1 jika salah satu inputnya 1 Input1Input2Output Sintak: OR Operan1, Operan2 Flag : OF, SF, ZF, PF, CF
Contoh : Moval, 123 Movah, 23 Orah, al; ah = 127 Movax, 0abcdh Movbx, 0bbcch Orax, bx; ax = BBCDh
XOR Menghasilkan keluaran 1 jika kedua inputnya berbeda Input1Input2Output Sintak: XOR Operan1, Operan2 Flag : tidak ada yang terpengaruh
Contoh : Moval, 123 Movah, 23 Xorah, al; ah = 108 Movax, 0abcdh Movbx, 0bbcch Xorax, 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 : MOVAL, 066h TESTAL, 1; ZF = 1 TESTAL, 2; ZF = 0 TESTAL, b; ZF = 1 TESTAL, 32; ZF = 0 MOV BX, 0dfeah; ZF = 0 TEST BX, 5; ZF = 1 TESTBX, 0AH; ZF = 0 TESTBX, 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 : Moval, 3 Mov cl, 3 Shlal, 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 : Moval, 63 Mov cl, 3 Shral, 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 : Moval, 3 Mov cl, 3 Rolal, 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 : Moval, 3 Mov cl, 3 Roral, 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