Tabel Mnemonic.doc

8
Tabel Mnemonic Mnemonic ---- : AAA (ASCII Adjust For Addition) Tersedia pada : 8088 ke atas Syntax ------ : AAA Pengaruh flag : AF, CF Fungsi : Mengatur format bilangan biner/hexa ke bentuk BCD setelah dilakukan operasi penjumlahan 2 bilangan BCD. AAA hanya dapat dilakukan untuk bilangan sebesar 4 bit, maksimal hexa F dan diletakkan di register AL. Bila AL bernilai lebih dari 9, maka AL akan dikurangi 10 dan 4 bit tinggi dari AL akan dijadikan 0. Setelah itu AH akan ditambah dengan 1. CF dan AF akan diset 1. Contoh : Bilangan BCD 8+6=... MOV AL,8h MOV AH,6h ADD AL,AH ; AX = 060Eh AAA ----->; AX = 0704 Bilangan 0E dijadikan BCD menjadi 14, dimana bilangan di AX dibaca BCD 14 -> AH = 1(7-6), AL = 4 Ket : Pada MOV AL,8h -> register AL memiliki nilai = 8h Pada MOV AH,6h -> register AH memiliki nilai = 6h ADD AL,AH -> perubahan hanya terjadi pada register AL, yaitu menambahkan nilai AH ke AL sehingga AH tetap 06 dan AL memiliki nilai 0E AX = (AH dan AL) = 060Eh AX = 060E dimana AH = 06 dan AL = 0E pada BCD berbentuk desimal maka AH = 06 (=0000 0110) dan AL = 14 (= 0000 1110) Pada BCD (4 digit) nilai 14 adalah 0001 0100 Pada AAA hanya dapat menerima nilai 4 bit pertama paling kanan (dalam hal ini satuan), maka AL pada BCD bernilai 14 hanya bisa menerima nilai satuan 4 untuk itu nilai puluhan 1 pada AL ditambahkan ke AH. Sehingga AH = 06 + 01 = 07 dan AL = 04 AX = (AH dan AL) = 0704 Dimana 060Eh pada AAA yang mengambil hanya 4 bit pertama dari kanan pada AH dan AL adalah 6Eh, Pada BCD, 6Eh ke nilai desimal = 74 (yaitu 0704 pada AAA yang hanya pengambil 4 bit pertama dari kanan) ---------------------------------------------------------------------- Mnemonic ---- : AAD (ASCII Adjust For Division) Tersedia pada : 8088 ke atas Syntax ------ : AAD Pengaruh flag : SF, ZF, PF Fungsi : Mengkonversi bilangan BCD ke biner atau hexa. Adapun cara yang dilakukan adalah mengalikan AH dengan 10 dan menambahkan isi AL dengan hasil kali AH. Hasil pertambahan tersebut akan diletakkan di register AL kemudian AH akan dinolkan Contoh : Hexa dari BCD 53 adalah MOV AH,05 MOV AL,03 AAD --->; AL = 0035h yaitu hexa dari BCD 53

description

ghnjjk

Transcript of Tabel Mnemonic.doc

Page 1: Tabel Mnemonic.doc

Tabel Mnemonic

Mnemonic ---- : AAA (ASCII Adjust For Addition)Tersedia pada : 8088 ke atasSyntax ------ : AAAPengaruh flag : AF, CF

Fungsi : Mengatur format bilangan biner/hexa ke bentuk BCD setelah dilakukan operasi penjumlahan 2 bilangan BCD. AAA hanya dapat dilakukan untuk bilangan sebesar 4 bit, maksimal hexa F dan diletakkan di register AL. Bila AL bernilai lebih dari 9, maka AL akan dikurangi 10 dan 4 bit tinggi dari AL akan dijadikan 0. Setelah itu AH akan ditambah dengan 1. CF dan AF akan diset 1.

Contoh :Bilangan BCD 8+6=...MOV AL,8hMOV AH,6hADD AL,AH ; AX = 060EhAAA ----->; AX = 0704

Bilangan 0E dijadikan BCD menjadi 14, dimana bilangan di AX dibaca BCD 14 -> AH = 1(7-6), AL = 4

Ket :

Pada MOV AL,8h -> register AL memiliki nilai = 8hPada MOV AH,6h -> register AH memiliki nilai = 6hADD AL,AH -> perubahan hanya terjadi pada register AL, yaitu menambahkan nilai AH ke AL sehingga AH tetap 06 dan AL memiliki nilai 0EAX = (AH dan AL) = 060Eh

AX = 060E dimana AH = 06 dan AL = 0Epada BCD berbentuk desimal maka AH = 06 (=0000 0110) dan AL = 14 (= 0000 1110)Pada BCD (4 digit) nilai 14 adalah 0001 0100Pada AAA hanya dapat menerima nilai 4 bit pertama paling kanan (dalam hal ini satuan), maka AL pada BCD bernilai 14 hanya bisa menerima nilai satuan 4untuk itu nilai puluhan 1 pada AL ditambahkan ke AH. Sehingga AH = 06 + 01 = 07 dan AL = 04AX = (AH dan AL) = 0704

Dimana 060Eh pada AAA yang mengambil hanya 4 bit pertama dari kanan pada AH dan AL adalah 6Eh,Pada BCD, 6Eh ke nilai desimal = 74 (yaitu 0704 pada AAA yang hanya pengambil 4 bit pertama dari kanan)

----------------------------------------------------------------------

Mnemonic ---- : AAD (ASCII Adjust For Division)Tersedia pada : 8088 ke atasSyntax ------ : AADPengaruh flag : SF, ZF, PF

Fungsi : Mengkonversi bilangan BCD ke biner atau hexa. Adapun cara yang dilakukan adalah mengalikan AH dengan 10 dan menambahkan isi AL dengan hasil kali AH. Hasil pertambahan tersebut akan diletakkan di register AL kemudian AH akan dinolkan

Contoh :Hexa dari BCD 53 adalahMOV AH,05MOV AL,03AAD --->; AL = 0035h yaitu hexa dari BCD 53

Ket :BCD 53 pada AX berupa 0503 maka pertama kali memasukkan nilai AH = 05 (MOV AH,05) dan AL = 03 (MOV AL,03)Lalu AH dikalikan 10 -> 5h x 10 = 50hDItambahkan ke AL -> 50h + 3h = 53hAH dinolkan dan AL = 53h

----------------------------------------------------------------------

Mnemonic ---- : AAM (ASCII Adjust For Multiplication)Tersedia pada : 8088 ke atas

Page 2: Tabel Mnemonic.doc

Syntax ------ : AAMPengaruh flag : OF, SF, ZF, AF, PF, CF

Fungsi : Mengkonversi bilangan biner atau hexa ke BCD. Adapun cara yang dilakukan adalah membagi AL dengan 10, kemudian hasilnya dimasukkan ke register AH sedang sisanya ke register AL.

Contoh :Bilangan BCD; 12*9=...MOV AL,12hMOV BL,09hMUL BL --->; AX = 00A2hAAM --->; AX = 1002h

Bilangan 1002h pada AX dibaca sebagai desimal 162:- AH = 10h = 16- AL = 02h = 2

ket:AX = 00A2h -> AH = 00 dan AL = A2AH = 00 pada biner = 00000000AL = A2 pada biner = 10100010

Pada AAM hanya bisa menerima 4 digit pertama dari kanan, makaBCD AL = 1010 0010 = 10 2 hanya bisa mengambil nilai "2" saja.Nilai 10 pada BCD AL ditambahkan ke AH menjadi 00 + 10.Nilai akhir menjadi AH = 10 dan AL = 02 sehinga AX = (AH dan AL) = 1002

----------------------------------------------------------------------

Mnemonic ---- : AAS (ASCII Adjust For Subtraction)Tersedia pada : 8088 ke atasSyntax ------ : AASPengaruh flag : AF, CF

Fungsi : Mengatur format bilangan biner/hexa hasil pengurangan yang tidak lebih dari 4 bit. Jika 4 bit rendah dari AL lebih besar dari 9, maka AL akan dikurangi dengan 6 dan register AH akan dikurangi 1. 4 bit atas register AL akan dijadikan nol sedangkan 4 bit rendahnya akan bernilai 0-9.

Contoh :Bilangan BCD 11-5 = ...MOV AL,11hMOV BL,5hSUB AL,BL --->;AX = 000CAAS --->;AX = FF06

Ket :AX = 000C -> AH = 0 dan AL = 0C0C pada AL lebih besar dari 9, maka dilakukan pengurangan 6 menjadi AL = 0C - 6 = 06Akibatnya AH harus dikurang 1 menjadi AH = 00 - 1 = FF (pada desimal FF = -1 bukan 255)AX = (AH dan AL) = FF06

----------------------------------------------------------------------

Mnemonic ---- : ADC (Add With Carry)Tersedia pada : 8088 ke atasSyntax ------ : ADC Tujuan,SumberPengaruh flag : OF, SF, ZF, AF, PF

Fungsi : Menambahkan "Sumber", "Tujuan" dan Carry Flag (1=on, 0=off), hasilnya diletakkan pada "Tujuan". Instruksi ini biasanya digunakan setelah operasi pada pertambahan atau perkalian yang menyebabkan Carry. Misalnya pertambahan yang melibatkan bilangan yang besar.

Contoh :12345678h + 9ABCDEF0 = ...

Kedua operand di atas berukuran 4 byte. Jelas sudah melebihi kapasitas register. Disinilah digunakan mnemonic ADC.

MOV AX,1234h -->;AX = 1234MOV BX,9ABCh -->;BX = 9ABCMOV CX,5678h -->;CX = 5678

Page 3: Tabel Mnemonic.doc

MOV DX,DEF0h -->;DX = DEF0ADD CX,DX -->;CX = 3568 CF = 1 dimana 5678hexa + DEF0hexa = 13568hexa, 4digit terakhir di CX dan selebihnya di CFADC AX,BX -->;AX=AX+BX+CF = ACF1

Hasil penjumlahan tertampung di AX:CX yaitu ACF13568h.

----------------------------------------------------------------------

Mnemonic ---- : ADDTersedia pada : 8088 ke atasSyntax ------ : ADD Tujuan,SumberPengaruh flag : OF, SF, ZF, AF, PF, CF

Fungsi : Menambahkan "Sumber" dan "Tujuan" kemudian hasilnya disimpan pada "Tujuan". Bila hasil penjumlahan tidak tertampung seluruhnya pada "Tujuan", maka CF akan diset 1

Contoh :ADD AX,BX --->;Jumlahkan 2 registerADD AL,[350] -->;Jumlahkan register dengan isi memoriADD [350],AL -->;Jumlahkan isi memori dengan registerADD AH,10h ---->;Jumlahkan register dengan immediateADD [350],10h ->;Jumlahkan isi memori dengan immediate

----------------------------------------------------------------------

Mnemonic ---- : ANDTersedia pada : 8088 ke atasSyntax ------ : AND Tujuan,SumberPengaruh flag : OF, SF, ZF, PF, CF

Fungsi : Melakukan logika AND antara "Tujuan" dan "Sumber". Hasil dari operasi AND diletakkan pada "Tujuan". Instruksi AND umumnya digunakan untuk melihat kondisi suatu bit dengan menolkan bit-bit lainnya.

Contoh :AND AL,00001000b -->;AL=0000?000JZ Nol ------------>;Jika bit ketiga AL=0, maka lompat

----------------------------------------------------------------------

Mnemonic ---- : BOUND (Check Bounds of Array Index)Tersedia pada : 8088 ke atasSyntax ------ : BOUND Tujuan,SumberPengaruh flag : Tidak ada

Fungsi : Untuk memastikan bahwa index array bertanda negatif atau positif masih masuk dalam batas limit yang didefinisikan oleh Double Word blok memory.

----------------------------------------------------------------------

Mnemonic ---- : CALLTersedia pada : 8088 ke atasSyntax ------ : CALL nama-procedurePengaruh flag : Tidak ada

Fungsi : Melompat dan mengerjakan instruksi pada procedure program. Pada saat instruksi Call diberikan, maka processor akan melakukan :- PUSH CS ke stack bila procedure yang dipanggil bertipe Far- PUSH IP ke stack- Mengganti nilai CS dengan segmen dari procedure bila procedure tersebut bertipe Far.- Mengganti nilai IP dengan offset dari procedure. Lakukan instruksi yang terdapat pada alamat baru (CS:IP) sampai bertemu dengan instruksi RET, setelah itu:- POP IP- POP CS bila procedure bertipe Far- Kembali ke program induk/pemanggil

Contoh :1CFE:0125 CALL N_PROC;Push IP(=0128) ke stack, IP=10661CFE:0128 .......1CFE:0155 CALL F_PROC;Push CS(=1CFE),IP(=0160) ke stack CS=1FFF,IP=0179

Page 4: Tabel Mnemonic.doc

1CFE:0160 .......1CFE:1066 N_PROC PROC NEAR............RET ---------------->;Pop IP(=0128)N_PROC ENDP

1FFF:0179 F_PROC PROC FAR............RET ---------------->;Pop IP(=0160) dan CS(=1CFE)

----------------------------------------------------------------------

Mnemonic ---- : CBW (Convert Byte To Word)Tersedia pada : 8088 ke atasSyntax ------ : CBWPengaruh flag : Tidak ada

Fungsi : Mengubah isi register AL menjadi AX dengan mengubah isi register AH menjadi 0 bila AL bernilai positif atau AH akan bernilai FF bila AL negatif.

Contoh :MOV AL,FFhMOV BX,123FhCBW --------->;AX = FFFFADD AX,BX --->;AX = 123F + (-1) = 123EPada bilangan bertanda, angka FFh bagi Assembler pada AL adalah -1, bukannya 255 desimal

----------------------------------------------------------------------

Mnemonic ---- : CLC (Clear Carry Flag)Tersedia pada : 8088 ke atasSyntax ------ : CLCPengaruh flag : CF

Fungsi : Membuat carry flag menjadi 0.

Contoh :Untuk menjaga agar dalam operasi RCR, rotasi pertamnya yang masuk adalah 0, maka digunakan CLC dahulu.

CLCRCR AX,1

----------------------------------------------------------------------

Mnemonic ---- : CLD (Clear Direction Flag)Tersedia pada : 8088 ke atasSyntax ------ : CLDPengaruh flag : DF

Fungsi : Membuat direction flag berisi 0. Bila direction flag berisi 0, maka pembacaan string akan berlangsung dari memrori rendah ke tinggi. Sebaliknya bila direction flag bernilai 1, maka string akan diproses dari memori tinggi ke rendah.

Contoh :CLD --------->;Arah Operasi string ke kananMOV CX,0Fh -->;Bandingkan 16 byte dari stringREPE CMPSB -->;sampai ada satu yang tidak sama

----------------------------------------------------------------------

Mnemonic ---- : CLI (Clear Interrupt Flag)Tersedia pada : 8088 ke atasSyntax ------ : CLIPengaruh flag : IF

Fungsi : Membuat intterupt flag menjadi 0. Bila IF berisi 0 maka semua interupsi akan diabaikan oleh komputer, kecuali Nomaskable Interrupt (NMI). Umumnya CLI diberikan pada saat akan dilakukan proses yang fatal, dimana terjadinya interupsi akan menghancurkan proses tersebut.

Page 5: Tabel Mnemonic.doc

Contoh :Pengubahan alamay sebuah stack dilkukan dengan mengubah SS dan SP. Selama SS dan SP diubah, interupsi tidak boleh terjadi. Hal ini dikarenakan pada saat terjadi interupsi, register CS, IP dan Flags disimpan pada stack sebagai alamat kembali nantinya.

MOV AX,AlmStackMOV DX,AlmOffsetCLIMOV SP,DXMOV SS,AXSTI

----------------------------------------------------------------------

Mnemonic ---- : CMC (Complement Carry Flag)Tersedia pada : 8088 ke atasSyntax ------ : CMCPengaruh flag : CF

Fungsi : Mengubah Carry Flag menjadi kebalikan dari isi semulanya, seperti dari 0 menjadi 1 dan sebaliknya.

Contoh :Pada kebanyakan operasi, Carry flag dijadikan sebagai tanda berhasil atau tidaknya operasi tersebut. Biasanya Carry Flag akan bernilai 0 bila operasi berhasil dan bernilai 1 bila operasi mengalami kegagalan. Dengan menggunakan perintah CMC disertai dengan ADC (pertambahan dengan carry flag), pemanfaatannya dapat digunakn untuk menghitung banyaknya keberhasilan operasi yang dilakukan, seperti:

MOV CX,CounterXOR AX,AX

Ulang:PUSH AXOperasiPOP AXCMCADC Ax,0LOOP Ulang

Pada hasil akhir proses ini, register AX akan berisi banyaknya operasi yang berhasil dilakukan.

----------------------------------------------------------------------

Mnemonic ---- : CMP (Compare)Tersedia pada : 8088 ke atasSyntax ------ : CMP operand1,operand2Pengaruh flag : OF, SF, ZF, AF, PF, CF

Fungsi : Membandingkan "operand1" dengan "operand2". Adapun cara yang digunakan adalah dengan mengurangkan "operand1" dengan "operand2" (operand1-operand2). "Operand1" dan "operand2" yang dibandingkan harus mempunyai tipe data yang sama, seperti byte dengan byte (AL,AH,BL,BH,...) atau word dengan word (AX,BX,CX,...). Perintah CMP hanya mempengaruhi flags reguster tanpa mengubah isi "operand1" dan "operand2".

Contoh :Ulang:CMP CX,AXJE ExitLOOP Ulang

----------------------------------------------------------------------

Mnemonic ---- : CMPSB (Compare Strings Byte)Tersedia pada : 8088 ke atasSyntax ------ : CMPSBPengaruh flag : OF, SF, ZF, AF, PF, CF

Fungsi : Untuk membandingkan satu byte pada alamat DS;SI dengan ES:DI. Jika direction flag bernilai 1, maka setiap selesai perbandingan register SI dan DI akan ditambah dengan 1, sebaliknya jika direction flag bernilai 0, maka setiap selesai perbandingan register SI dan DI akan dikurangi dengan 1.

Page 6: Tabel Mnemonic.doc

----------------------------------------------------------------------

Mnemonic ---- : CMPSW (Compare Strings Word)Tersedia pada : 8088 ke atasSyntax ------ : CMPSWPengaruh flag : OF, SF, ZF, AF, PF, CF

Fungsi : Untuk membandingkan satu word pada alamat DS:SI dengan ES:DI. Jika direction flag bernilai 1, maka setiap selesai perbandingan register SI dan DI akan ditambah dengan 2, sebaliknya jika direction flag bernilai 0, maka setiap selesai perbandingan register SI dan DI akan dikurangi dengan 2.

----------------------------------------------------------------------

Mnemonic ---- : CWD (Convert Word to Doubleword)Tersedia pada : 8088 ke atasSyntax ------ : CWDPengaruh flag : Tidak ada

Fungsi : Mengubah tipe word(AX) menjadi doubleword(DX). Bila AX positif, maka DX berisi FFFF.L bernilai positif atau AH akan bernilai FF bila AL negatif.

Contoh :Fungsi CWD dapat digubakan untuk mendapatkan bilangan absolute.

Absolut MACRO Bil

MOVTEST AX,10000000b ;Apakah AX negatif?JZ Selesai ------>;Ya, selesaiCWDXOR AX,DX ------->;Jadikan positifSUB AX,DX

Selesai:ENDM

----------------------------------------------------------------------

Mnemonic ---- : DAA (Decimal Adjust After Addition)Tersedia pada : 8088 ke atasSyntax ------ : DAAPengaruh flag : OF,SF,ZF,AF,PF,CF

Fungsi : Mengubah hasil penjumlahan 2 bilangan bukan BCD pada register AL menjadi bentuk BCD. Jika 4 bit rendah dari AL lebih besar dari 9, maka AL akan dikurangi dengan 10 dan AF diset menjadi 1,sebaliknya jika 4 bit rendah AL lebih kecil atau sama dengan 9, maka AF akan dijadikan 0. DAA sebenarnya adalah sama dengan AAA kecuali dalam hal bahwa DAA dapat mengatur baik bilangan 8 bit maupun 4 bit pada AL, sementara AAA hanya 4 bit

Contoh :Bilangan BCD: 27h + 45h = ...

MOV AH,45hMOV AL,27hADD AL,AH -->;AL = 6ChDAA -------->;AL = 72

Ket:pada hekasdesimal 6C = 1101100bBCD mengubah nilai tiap 4 digit, maka 1101100b -> 110b 1100bBila diubah ke desimal menjadi 6 dan 12.Posisi 6 adalah puluhan bagi 12, maka nilai desimal pada BCD adalah 60 + 12 = 72

----------------------------------------------------------------------

Mnemonic ---- : DAS (Decimal Adjust After Substraction)Tersedia pada : 8088 ke atasSyntax ------ : DASPengaruh flag : OF,SF,ZF,AF,PF,CF

Page 7: Tabel Mnemonic.doc

Fungsi : Mengubah hasil pengurangan 2 bilangan pada AL menjadi bentuk BCD. Jika 4 bit rendah dari AL lebih besar dari 9, maka AL akan dikurangi dengan 6 dan AF diset menjadi 1, sebaliknya jika 4 bit rendah dari AL lebih kecil atau sama dengan 9, maka AF akan dijadikan 0.n dijadikan 0.

Contoh :Bilangan BCD: 50h + 23h = ...

MOV AX,50hSUB AX,23h -->;AX = 002DDAS --------->;AX = 0027

Ket:AX = 002D -> AH = 00(=00000000) dan AL = 2D(=0010 1101)

Pada DAS nilai 2D pada AL lebih besar dari 2, maka dilakukan pengurangan dengan nilai 6 menjadi AL = 2D - 6 = 27

Maka AX = (AH dan AL) = 0027