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
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 = 50h
DItambahkan ke AL -> 50h + 3h = 53h
AH dinolkan dan AL = 53h
----------------------------------------------------------------------
Mnemonic ---- : AAM (ASCII Adjust For Multiplication)
Tersedia pada : 8088 ke atas
Syntax ------ : AAM
Pengaruh 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,12h
MOV BL,09h
MUL BL --->; AX = 00A2h
AAM --->; AX = 1002h
Bilangan 1002h pada AX dibaca sebagai desimal 162:
- AH = 10h = 16
- AL = 02h = 2
ket:
AX = 00A2h -> AH = 00 dan AL = A2
AH = 00 pada biner = 00000000
AL = A2 pada biner = 10100010
Pada AAM hanya bisa menerima 4 digit pertama dari kanan, maka
BCD 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 atas
Syntax ------ : AAS
Pengaruh 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,11h
MOV BL,5h
SUB AL,BL --->;AX = 000C
AAS --->;AX = FF06
Ket :
AX = 000C -> AH = 0 dan AL = 0C
0C pada AL lebih besar dari 9, maka dilakukan pengurangan 6 menjadi AL = 0C - 6 = 06
Akibatnya 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 atas
Syntax ------ : ADC Tujuan,Sumber
Pengaruh 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 = 1234
MOV BX,9ABCh -->;BX = 9ABC
MOV CX,5678h -->;CX = 5678
MOV DX,DEF0h -->;DX = DEF0
ADD CX,DX -->;CX = 3568 CF = 1 dimana 5678hexa + DEF0hexa = 13568hexa, 4digit terakhir di CX dan selebihnya di CF
ADC AX,BX -->;AX=AX+BX+CF = ACF1
Hasil penjumlahan tertampung di AX:CX yaitu ACF13568h.
----------------------------------------------------------------------
Mnemonic ---- : ADD
Tersedia pada : 8088 ke atas
Syntax ------ : ADD Tujuan,Sumber
Pengaruh 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 register
ADD AL,[350] -->;Jumlahkan register dengan isi memori
ADD [350],AL -->;Jumlahkan isi memori dengan register
ADD AH,10h ---->;Jumlahkan register dengan immediate
ADD [350],10h ->;Jumlahkan isi memori dengan immediate
----------------------------------------------------------------------
Mnemonic ---- : AND
Tersedia pada : 8088 ke atas
Syntax ------ : AND Tujuan,Sumber
Pengaruh 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?000
JZ Nol ------------>;Jika bit ketiga AL=0, maka lompat
----------------------------------------------------------------------
Mnemonic ---- : BOUND (Check Bounds of Array Index)
Tersedia pada : 8088 ke atas
Syntax ------ : BOUND Tujuan,Sumber
Pengaruh 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 ---- : CALL
Tersedia pada : 8088 ke atas
Syntax ------ : CALL nama-procedure
Pengaruh 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=1066
1CFE:0128 .......
1CFE:0155 CALL F_PROC;Push CS(=1CFE),IP(=0160) ke stack CS=1FFF,IP=0179
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 atas
Syntax ------ : CBW
Pengaruh 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,FFh
MOV BX,123Fh
CBW --------->;AX = FFFF
ADD AX,BX --->;AX = 123F + (-1) = 123E
Pada bilangan bertanda, angka FFh bagi Assembler pada AL adalah -1, bukannya 255 desimal
----------------------------------------------------------------------
Mnemonic ---- : CLC (Clear Carry Flag)
Tersedia pada : 8088 ke atas
Syntax ------ : CLC
Pengaruh 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.
CLC
RCR AX,1
----------------------------------------------------------------------
Mnemonic ---- : CLD (Clear Direction Flag)
Tersedia pada : 8088 ke atas
Syntax ------ : CLD
Pengaruh 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 kanan
MOV CX,0Fh -->;Bandingkan 16 byte dari string
REPE CMPSB -->;sampai ada satu yang tidak sama
----------------------------------------------------------------------
Mnemonic ---- : CLI (Clear Interrupt Flag)
Tersedia pada : 8088 ke atas
Syntax ------ : CLI
Pengaruh 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.
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,AlmStack
MOV DX,AlmOffset
CLI
MOV SP,DX
MOV SS,AX
STI
----------------------------------------------------------------------
Mnemonic ---- : CMC (Complement Carry Flag)
Tersedia pada : 8088 ke atas
Syntax ------ : CMC
Pengaruh 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,Counter
XOR AX,AX
Ulang:
PUSH AX
Operasi
POP AX
CMC
ADC Ax,0
LOOP Ulang
Pada hasil akhir proses ini, register AX akan berisi banyaknya operasi yang berhasil dilakukan.
----------------------------------------------------------------------
Mnemonic ---- : CMP (Compare)
Tersedia pada : 8088 ke atas
Syntax ------ : CMP operand1,operand2
Pengaruh 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,AX
JE Exit
LOOP Ulang
----------------------------------------------------------------------
Mnemonic ---- : CMPSB (Compare Strings Byte)
Tersedia pada : 8088 ke atas
Syntax ------ : CMPSB
Pengaruh 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.
----------------------------------------------------------------------
Mnemonic ---- : CMPSW (Compare Strings Word)
Tersedia pada : 8088 ke atas
Syntax ------ : CMPSW
Pengaruh 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 atas
Syntax ------ : CWD
Pengaruh 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
MOV
TEST AX,10000000b ;Apakah AX negatif?
JZ Selesai ------>;Ya, selesai
CWD
XOR AX,DX ------->;Jadikan positif
SUB AX,DX
Selesai:
ENDM
----------------------------------------------------------------------
Mnemonic ---- : DAA (Decimal Adjust After Addition)
Tersedia pada : 8088 ke atas
Syntax ------ : DAA
Pengaruh 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,45h
MOV AL,27h
ADD AL,AH -->;AL = 6Ch
DAA -------->;AL = 72
Ket:
pada hekasdesimal 6C = 1101100b
BCD mengubah nilai tiap 4 digit, maka 1101100b -> 110b 1100b
Bila 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 atas
Syntax ------ : DAS
Pengaruh flag : OF,SF,ZF,AF,PF,CF
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,50h
SUB AX,23h -->;AX = 002D
DAS --------->;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