DAFTAR INSTRUKSI ASSEMBLY



DAFTAR INSTRUKSI ASSEMBLY

 Mnemonic : AAA (ASCII Adjust For Addition)

Tersedia pada : 8088 keatas
Syntax : AAA Pengaruh flag : AF, CF
Fungsi : Mengatur format bilangan biner/hexa ke bentuk BCD setelah dilakukan operasi penjumlahan dua 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 = 0704h
Jadi bilangan 0E dijadikan BCD menjadi 14, dimana bilangan di AX dibaca BCD 14 --> AH = 1(7-6), AL = 4

Mnemonic : AAD (ASCII Adjust For Division)

Tersedia pada : 8088 keatas
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 hasilkali 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

Mnemonic : AAM (ASCII Adjust For Multiplication)

Tersedia pada : 8088 keatas
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

Mnemonic : AAS (ASCII Adjust For Subtraction)

Tersedia pada : 8088 keatas
Syntax : AAS Pengaruh flag : AF, CF
Fungsi : Mengatur format bilangan biner/hexa hasil pengurangan ke bentuk BCD. AAS ini berlaku untuk 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

Mnemonic : ADC (Add With Carry)

Tersedia pada : 8088 keatas
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". Intruksi ini biasanya digunakan setelah operasi pada pertambahan atau perkalian yang menyebabkan Carry. Misalkan pertambahan yang melibatkan bilangan yang besar, seperti pada contoh dibawah ini:
Contoh:
12345678h + 9ABCDEF0 = ......
Kedua operand di atas berukuran 4 byte. Jelas sudah melebihi kapasitas register. Di sinilah digunakan mnemonic ADC.
Contoh:
MOV AX,1234h ; AX = 1234
MOV BX,9ABCh ; BX = 9ABC
MOV CX,5678h ; BX = 5678
MOV DX,0DEF0h ; DX = DEF0
ADD CX,DX ; CX = 3568 CF = 1
ADC AX,BX ; AX = AX+BX+CF = ACF1
Hasil penjumlahan tertampung di AX:CX yaitu ACF13568h.

Mnemonic : ADD

Tersedia pada : 8088 keatas
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 204 "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 memory dengan register
ADD AH,10h ; Jumlahkan register dengan immediate
ADD [350],10h ; Jumlahkan isi memori dengan immediate

Mnemonic : AND

Tersedia pada : 8088 keatas
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 keatas
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 keatas
Syntax : CALL nama-procedure
Pengaruh flag : Tidak ada
Fungsi : Melompat dan mengerjakan intruksi 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 intruksi yang terdapat pada alamat baru(CS:IP) sampai bertemu dengan intruksi 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) & CS(=1CFE)
F_PROC ENDP

Mnemonic : CBW (Convert Byte To Word)

Tersedia pada : 8088 keatas
Syntax : CBW
Fungsi : Mengubah isi register AL menjadi AX dengan mengubah isi register AH menjadi 0 bila AL benilai 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 pada AL adalah -1 bagi Assembler bukannya 255 desimal.

Mnemonic : CLC (Clear Carry Flag)

Tersedia pada : 8088 keatas
Syntax : CLC
Pengaruh flag : CF
Fungsi : Membuat carry flag menjadi 0.
Contoh:
Untuk menjaga agar dalam operasi RCR, rotasi pertamanya yang masuk adalah 0 maka digunakan CLC dahulu.
CLC
RCR AX,1

Mnemonic : CLD (Clear Direction Flag)

Tersedia pada : 8088 keatas
Syntax : CLD
Pengaruh flag : DF
Fungsi : Membuat direction flag berisi 0. Bila direction flag berisi 0 maka pembacaan string akan berlangsung dari memory rendah ke tinggi. Sebaliknya bila direction flag bernilai 1 maka string akan diproses dari memory 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 keatas
Syntax : CLI
Pengaruh flag : IF
Fungsi : Membuat interrupt flag menjadi 0. Bila IF berisi 0 maka semua interupsi akan diabaikan oleh komputer, kecuali Nonmaskable Interrupt(NMI). Umumnya CLI diberikan pada saat akan dilakukan proses yang fatal, dimana terjadinya interupsi akan menghancurkan proses tersebut.
Contoh:
Kita akan mengubah alamat sebuah stack, 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 keatas
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), anda dapat memanfaatkannya 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 dari proses ini register AX akan berisi banyaknya operasi yang berhasil dilakukan.

Mnemonic : CMP (Compare)

Tersedia pada : 8088 keatas
Syntax : CMP operand1,operand2
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Membandingkan "operand1" dengan "operand2". Adapun cara yang dilakukan 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 register tanpa merubah isi "operand1" dan "operand2". Contoh:
Ulang:
CMP CX,AX
JE Exit LOOP Ulang

Mnemonic : CMPSB (Compare Strings Byte)

Tersedia pada : 8088 keatas
Syntax : CMPSB
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk membandingkan satu byte pada alamat DS:SI dengan ES:DI. 209 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 dikurang dengan 1.

Mnemonic : CMPSW (Compare Strings Word)

Tersedia pada : 8088 keatas
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 dikurang dengan 2.

Mnemonic : CWD (Convert Word To Doubleword)

Tersedia pada : 8088 keatas
Syntax : CWD
Pengaruh flag : Tidak ada
Fungsi : Mengubah tipe word(AX) menjadi double word(DX). Bila AX positif maka DX akan berisi 0000, bila AX negatif maka DX berisi FFFF.
Contoh:
Anda dapat memanfaatkan fungsi CWD ini 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 210

Mnemonic : DAA (Decimal Adjust After Addition)

Tersedian pada : 8088 keatas
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 = 6C
DAA               ; AL = 72

Mnemonic : DAS (Decimal Adjust After Substraction)

Tersedia pada : 8088 keatas
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.
Contoh:
Bilangan BCD: 50h - 23h = ...
MOV AX,50h
SUB AX,23h ; AX = 002D
DAS ; AX = 0027 211

Mnemonic : DEC (Decrement)

Tersedia pada : 8088 keatas
Syntax : DEC Tujuan
Pengaruh flag : OF, SF, ZF, AF, PF
Fungsi : Untuk mengurangi "Tujuan" dengan 1. "Tujuan" dapat berupa register 8 bit, 16 bit, 32 bit maupun memory. Bila anda ingin mengurangi suatu register ataupun memory dengan 1, gunakanlah perintah DEC ini karena selain lebih cepat, perintah DEC juga menggunakan memory lebih sedikit dibandingkan dengan perintah SUB.
Contoh:
Kita dapat mengimplementasikan perintah Loop dengan menggunakan DEC. Di bawah ini kita akan menjumlahkan bilangan BX sampai 1. Misalnya bila BX = 5 maka dijumlahkan 5+4+3+2+1 = ....
XOR AX,AX
Loop1 :            ADD AX,BX
DEC BX
CMP BX,0
JNZ Loop1

Mnemonic : DIV (Divide)

Tersedia pada : 8088 keatas
Syntax : DIV Sumber
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Bila "sumber" bertipe 8 bit maka dilakukan pembagian AX dengan "Sumber" (AX / Sumber). Hasil pembagian akan disimpan pada register AL sedangkan sisa pembagian akan disimpan pada regiser AH. Jika "sumber" bertipe 16 bit maka dilakukan pembagian DX:AX dengan "Sumber" (DX:AX / Sumber). Hasil pembagian akan disimpan pada register AX sedangkan sisa pembagian akan disimpan pada regiser DX.
Contoh:
Untuk memeriksa apakah suatu bilangan merupakan kelipatan 3 atau bukan, 212 anda bisa membaginya dengan tiga. Bila merupakan kelipatan 3, maka sisa pembagian akan 0, sebaliknya jika bukan kelipatan tiga, sisa pembagian tidak akan 0. Macro ini akan menjadikan AL=1 bila bilangan yang ditest merupakan kelipatan tiga dan sebaliknya akan bernilai 0.
Lipat3 MACRO Bil
MOV AX,Bil
MOV BX,3
DIV BX
CMP AX,0 ; Apakah ada sisa pembagian ?
JE Tiga ; Tidak ada sisa , kelipatan 3
MOV AL,0
Tiga :   MOV AL,1
ENDM

Mnemonic : ENTER (Make Stack Frame)

 Tersedia pada : 8088 keatas
Syntax : Enter Operand1,operand2 pengaruh flag : Tidak ada Fungsi : Untuk memesan tempat pada stack yang dibutuhkan oleh bahasa tingkat tinggi. Mnemonic :ESC (Escape) Tersedia pada : 8088 keatas Syntax : ESC Operand1,Operand2 Pengaruh flag : Tidak ada Fungsi : Perintah ini digunakan terutama pada komputer yang mempunyai procesor lebih dari satu dan dirangkai secara paralel. Perintah ESC akan menyebabkan procesor yang sedang aktif dinonaktifkan sehingga procesor yang lain dapat digunakan.

Mnemonic : HLT (Halt)

Tersedia pada : 8088 keatas
Syntax : HLT
Pengaruh flag : Tidak ada 213
Fungsi : Untuk menghentikan program atau membuat procesor dalam keadaan tidak aktif. Setelah mendapat perintah ESC ini, procesor harus mendapat interrupt dari luar atau direset untuk berjalan secara normal kembali.

Mnemonic : IDIV (Signed Divide)

Tersedia pada : 8088 keatas
Syntax : IDIV Sumber
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : IDIV digunakan untuk pembagian pada bilangan bertanda. Bila "sumber" bertipe 8 bit maka dilakukan pembagian AX dengan "Sumber" (AX / Sumber). Hasil pembagian akan disimpan pada register AL sedangkan sisa pembagian akan disimpan pada regiser AH. Jika sumber bertipe 16 bit maka dilakukan pembagian DX:AX dengan Sumber(DX:AX / Sumber). Hasil pembagian akan disimpan pada register AX sedangkan sisa pembagian akan disimpan pada regiser DX.
Contoh:
MOV BL,10h
MOV AX,-10h
IDIV BL ; AX = 00FFh(-1)

Mnemonic : IMUL (Signed Multiply)

Tersedia pada : 8088 keatas
Syntax : IMUL Sumber Khusus 80386: IMUL Tujuan,Sumber IMUL Tujuan,Pengali,Sumber Pengaruh flag : OF, SF, ZF, AF, PF, CF Fungsi : IMUL digunakan untuk perkalian pada bilangan bertanda. Bila "sumber" bertipe 8 bit maka akan dilakukan perkalian pada register AL dengan "sumber" kemudian hasilnya disimpan pada AX. Bila "sumber" bertipe 16 bit maka akan dilakukan perkalian pada register AX dengan "sumber" kemudian hasilnya disimpan pada DX:AX.
Contoh:
MOV AX,100h ; AX=100h
MOV BX,-2 ; BX=FFFEh
IMUL BX ; DX=FFFFh, AX=FE00h

Mnemonic : IN (Input From Port)

Tersedia pada : 8088 keatas
Syntax : IN Operand,NoPort
Pengaruh flag : Tidak ada
Fungsi : Untuk mengambil data pada port. Jika "Operand" merupakan register AL maka akan diambil data pada port sebanyak 1 byte, bila "operand" merupakan register AX maka akan diambil data pada port sebanyak 1 word. "NoPort" mencatat nomor port yang akan dibaca datanya. "NoPort" bisa langsung diberi nilai bila nomor port dibawah 255. Bila nomor port melebihi 255 maka "NoPort" harus berupa register DX yang mencatat nomor port tersebut.
Contoh:
Interrupt dari keyboard diatur oleh PIC(Programmable Interrupt Controller) yang berada pada port 21h. Jika bit ke 1 dari port 21h bernilai 1, maka interupsi dari keyboard akan diabaikan.
NoKey MACRO
IN AL,21h
OR AL,00000010b
OUT 21h,AL
ENDM

Mnemonic : INC (Increment)

Tersedia pada : 8088 keatas
Syntax : INC Tujuan
Pengaruh flag : OF, SF, ZF, AF, PF
Fungsi : Untuk menambah "Tujuan" dengan 1. Bila anda ingin menambah suatu register ataupun memory dengan 1, gunakanlah perintah INC ini karena selain lebih cepat, perintah INC juga menggunakan memory lebih sedikit dibandingkan dengan perintah ADD.
Contoh:
Untuk membuat suatu pengulangan, seperti pada perintah 'FOR I:=1 TO 10 DO' pada bahasa tingkat tinggi:
XOR AX,AX
Ulang:             CMP AX,10
JE Selesai
INC AX
JMP Ulang


Mnemonic : INS (Input From Port To String)

Tersedia pada : 8088 keatas
Syntax : INS Operand,NoPort
Pengaruh flag : Tidak ada
Fungsi : Untuk mengambil data dari "NoPort" yang dicatat oleh register DX sebanyak 1 byte atau 1 word, sesuai dengan tipe "operand". Jadi "operand" hanya berfungsi sebagai penunjuk besarnya data yang akan dibaca dari port. Data yang diambil dari port akan disimpan pada lokasi ES:DI. Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi INS dijalankan register DI akan ditambah secara otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register DI akan dikurang secara otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai dengan perintah INS ini.

            Contoh:
MOV DX,123h
MOV CX,30
Ulang:             INS AX,DX
LOOP Ulang

Mnemonic : INSB ( Input String Byte From Port)

Tersedia pada : 8088 keatas
Syntax : INSB 216
Pengaruh flag : Tidak ada
Fungsi : Untuk mengambil data dari nomor port yang dicatat oleh register DX sebanyak 1 byte. Data yang diambil dari port akan disimpan pada lokasi ES:DI. Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi INS dijalankan register DI akan ditambah dengan 1 secara otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 1 secara otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai dengan perintah INSB ini.
Contoh:
REP INSB

Mnemonic : INSW

Tersedia pada : 8088 keatas
Syntax : INSW
Pengaruh Flag : Tidak ada
Fungsi : Untuk mengambil data dari nomor port yang dicatat oleh register DX sebanyak 1 Word. Data yang diambil dari port akan disimpan pada lokasi ES:DI. Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi INS dijalankan register DI akan ditambah dengan 2 secara otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 2 secara otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai dengan perintah INSW ini.
Contoh:
REP INSW

Mnemonic : INT (Interrupt)

Tersedia pada : 8088 keatas
Syntax : INT NoInt
Pengaruh flag : IF, TF
Fungsi : Untuk membangkitkan software interrupt yang bernomor 0 sampai 255. Setiap terjadi suatu interupsi data flags, CS dan IP akan disimpan pada 217 stack. Data ini selanjutmya digunakan sebagai alamat kembali setelah komputer melakukan suatu rutin atau interrupt handler.

Mnemonic : INTO (Interrupt If Overflow)

Tersedia pada : 8088 keatas
Syntax : INTO
Pengaruh Flag : Tidak ada
Fungsi : Jika Overflow flag bernilai 1, maka INTO akan melaksanakan interrupt 04h, sebaliknya jika Overflow flag bernilai 0 maka interrupt 04h tidak akan dilaksanakan. INTO hampir sama dengan INT hanya INTO khusus untuk membangkitkan interrupt 04h jika OF=1.

Mnemonic : IRET (Interrupt Return)

Tersedia pada : 8088 keatas
Syntax : IRET
Pengaruh Flag : OF, DF, IF, TF, SF, ZF, AF, PF, CF
Fungsi : Digunakan untuk mengakhiri suatu interrupt handler. IRET akan mengambil IP, CS dan Flags yang disimpan pada stack pada saat terjadi suatu interupsi(INT).



Mnemonic : JA (Jump If Above)

Tersedia pada : 8088 keatas
Syntax : JA Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila CF=0 dan ZF=0. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte kecuali pada 80386 yang mampu mencapai -32768 dan +32767. JA identik dengan perintah JNBE yang biasanya digunakan setelah dilakukan suatu perbandingan dengan CMP.
Catatan : JA dan JNBE melakukan operasi pada bilangan tidak bertanda.
Contoh:
CMP AX,BX
JA Besar
Pada perintah diatas, loncatan menuju label "besar" akan dilakukan bila pada perintah CMP diatasnya register AX lebih besar dari register BX. Perintah JA beroperasi pada bilangan tidak bertanda atau bilangan yang tidak mengenal tanda minus.

Mnemonic : JAE (Jump If Above or Equal)

Tersedia pada : 8088 keatas
Syntax : JAE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila CF=0. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JAE identik dengan perintah JNB yang biasanya digunakan setelah dilakukan suatu perbandingan dengan CMP.
Catatan : JAE dan JNB melakukan operasi pada bilangan tidak bertanda.
Contoh:
CMP AX,BX
JAE BesarSama
Pada perintah diatas, loncatan menuju label "BesarSama" akan dilakukan bila pada perintah CMP diatasnya register AX lebih besar atau sama dengan register BX. Perintah JAE beroperasi pada bilangan tidak bertanda atau bilangan yang tidak mengenal tanda minus.

Mnemonic : JB (Jump If Bellow)

Tersedia pada : 8088 keatas
Syntax : JB Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila CF=1. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JB identik dengan 219 perintah JNAE dan JC.
Catatan : JB dan JNAE melakukan operasi pada bilangan tidak bertanda.
Contoh:
CMP AX,BX
JB Kecil Pada perintah diatas, loncatan menuju label "Kecil" akan dilakukan bila pada perintah CMP diatasnya register AX lebih kecil dibandingkan dengan register BX.

Mnemonic : JBE (Jump If Below or Equal)

Tersedia pada : 8088 keatas
Syntax : JBE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila CF=1 atau ZF=1. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JBE identik dengan perintah JNA. Catatan : JBE dan JNA melakukan operasi pada bilangan tidak bertanda.
Contoh:
CMP AX,BX
JBE KecilSama
Pada perintah diatas, loncatan menuju label "KecilSama" akan dilakukan bila pada perintah CMP diatasnya register AX lebih kecil atau sama dengan register BX.

Mnemonic : JC (Jump On Carry)

Tersedia pada : 8088 keatas
Syntax : JC Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Sama dengan JB dan JNAE.

Mnemonic : JCXZ (Jump If CX = 0)

Tersedia pada : 8088 keatas
Syntax : JCXZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila register CX=0. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte.
Contoh:
MOV AH,00 ;
LEA DX,Buffer ; Masukan string dari keyboard
INT 21h ;
MOV CX,Buffer[1] ; CX = banyaknya masukan string
JCXZ Tdk ; Jika tidak ada, lompat ke "Tdk"

Mnemonic : JE (Jump Equal)

Tersedia pada : 8088 keatas
Syntax : JE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "Tujuan" bila ZF=1. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JE identik dengan JZ.
Contoh:
CMP AX,BX
JE Sama
Pada perintah diatas, loncatan menuju label "Sama" akan dilakukan bila pada perintah CMP diatasnya register AX sama dengan register BX yang menyebabkan zero flag bernilai 1.

Mnemonic : JG (Jump If Greater)

Tersedia pada : 8088 keatas
Syntax : JG Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila ZF=0 dan SF=OF. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JG identik dengan perintah JNLE. Catatan : JG dan JNLE melakukan operasi pada bilangan bertanda.
Contoh:
CMP AX,BX
JG Besar
Pada perintah diatas, loncatan menuju label "Besar" akan dilakukan bila pada perintah CMP diatasnya register AX lebih besar dibandingkan dengan register BX.

Mnemonic : JGE (Jump If Greater or Equal)

Tersedia pada : 8088 keatas
Syntax : JGE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila SF=OF. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JGE identik dengan perintah JNL. Catatan : JGE dan JNL melakukan operasi pada bilangan bertanda.
Contoh:
CMP AX,BX
JGE BesarSama
Pada perintah diatas, loncatan menuju label "BesarSama" akan dilakukan bila pada perintah CMP diatasnya register AX lebih besar atau sama dengan register BX.

Mnemonic : JL (Jump If Less Than)

Tersedia pada : 8088 keatas
Syntax : JL Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila SF tidak sama dengan OF. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JL identik dengan perintah JNGE. Catatan : JL dan JNGE melakukan operasi pada bilangan bertanda.
Contoh:
CMP AX,BX
JL Kecil
Pada perintah diatas, loncatan menuju label "Kecil" akan dilakukan bila pada perintah CMP diatasnya register AX lebih kecil dibandingkan dengan register BX.

Mnemonic : JLE (Jump If Less Than or Equal)

Tersedia pada : 8088 keatas
Syntax : JLE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila ZF=1 atau SF tidak sama dengan OF. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JLE identik dengan perintah JNG. Catatan : JLE dan JNG melakukan operasi pada bilangan bertanda.
Contoh:
CMP AX,BX
JLE KecilSama
Pada perintah diatas, loncatan menuju label "KecilSama" akan dilakukan bila pada perintah CMP diatasnya register AX lebih kecil atau sama dengan register BX.

Mnemonic : JMP (Jump)

Tersedia pada : 8088 keatas
Syntax : JMP Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan lompatan menuju "Tujuan" yang dapat berupa suatu label maupun alamat memory. Tidak seperti lompatan bersyarat, perintah JMP dapat melakukan lompatan ke segment lain. Contoh: JMP Proses

Mnemonic : JNA (Jump If Not Above)

Tersedia pada : 8088 keatas
Syntax : JNA Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JBE.

Mnemonic : JNAE (Jump If Not Above or Equal)

 Tersedia pada : 8088 keatas
Syntax : JNAE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JB.

Mnemonic : JNB (Jump If Not Bellow)

Tersedia pada : 8088 keatas
Syntax : JNB Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JAE.

Mnemonic : JNBE (Jump If Not Bellow or Equal)

Tersedia pada : 8088 keatas
Syntax : JNBE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JA.

Mnemonic : JNC (Jump Not Carry)

Tersedia pada : 8088 keatas
Syntax : JNC Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JNB.

Mnemonic : JNE (Jump Not Equal)

Tersedia pada : 8088 keatas
Syntax : JNE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila ZF=0. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JNE identik dengan perintah JNZ.
Contoh:
CMP AX,BX
JNE TidakSama
Pada perintah diatas, loncatan menuju label "TidakSama" akan dilakukan bila pada perintah CMP diatasnya register AX tidak sama dengan register BX.

Mnemonic : JNG (Jump If Not Greater)

Tersedia pada : 8088 keatas
Syntax : JNG Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JLE.

Mnemonic : JNGE (Jump If Not Greater or Equal)

Tersedia pada : 8088 keatas
Syntax : JNGE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JL.

 Mnemonic : JNL (Jump If Not Less Than)

Tersedia pada : 8088 keatas
Syntax : JNL Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JGE.

Mnemonic : JNLE (Jump If Not Less or Equal)

Tersedia pada : 8088 keatas
Syntax : JNLE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JG.

Mnemonic : JNO (Jump On Not Overflow)

Tersedia pada : 8088 keatas
Syntax : JNO Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila OF=0. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. Catatan : JNO melakukan operasi pada bilangan bertanda.

Mnemonic : JNP (Jump On No Parity)

Tersedia pada : 8088 keatas
Syntax : JNP Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila PF=0. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JNP identik dengan perintah JPO. Catatan : JNP dan JPO melakukan operasi pada bilangan tidak bertanda.

Mnemonic : JNS (Jump On No Sign)

Tersedia pada : 8088 keatas
Syntax : JNS Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila SF=0. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. Catatan : JNS melakukan operasi pada bilangan bertanda.
Mnemonic : JNZ (Jump On Not Zero)
Tersedia pada : 8088 keatas
Syntax : JNZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JNE.

Mnemonic : JO (Jump On Overflow)

Tersedia pada : 8088 keatas
Syntax : JO Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila OF=1. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. Catatan : JO melakukan operasi pada bilangan bertanda.

Mnemonic : JP (Jump On Parity)

Tersedia pada : 8088 keatas
Syntax : JP Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila PF=1. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JP identik dengan perintah JPE.

Mnemonic : JPE (Jump On Parity Even)

Tersedia pada : 8088 keatas
Syntax : JPE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JP.

Mnemonic : JPO (Jump On Parity Odd)

Tersedia pada : 8088 keatas
Syntax : JPO Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JNP.

Mnemonic : JS (Jump On Sign)

Tersedia pada : 8088 keatas
Syntax : JS Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila SF=1. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. Catatan : JS melakukan operasi pada bilangan bertanda.

Mnemonic : JZ (Jump On Zero)

Tersedia pada : 8088 keatas
Syntax : JZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JE.

Mnemonic : LAHF (Load Flags Into AH Register)

Tersedia pada : 8088 keatas
Pengaruh flag : Tidak Ada
Syntax : LAHF
Fungsi : Untuk mengcopykan CF, PF, AF, ZF dan SF yang terletak pada bit ke 0, 2, 4, 6 dan 7 dari flags register menuju register AH pada bit yang sesuai(0, 2, 4, 6 dan 7).
Contoh:
Dengan fungsi ini, anda bisa menyimpan 8 bit rendah dari flags register untuk menghindari perubahan akibat dari suatu proses, seperti:
LAHF ; Simpan flags pada AH
PUSH AX ; Nilai AH disimpan ke stack
+--------+ | Proses | +--------+
POP AX ; Keluarkan AH dari stack
SAHF ; Masukkan ke flag register

Mnemonic : LDS (Load Pointer Using DS Register)

Tersedia pada : 8088 keatas
Syntax : LDS Operand,Mem32
Pengaruh flag : Tidak Ada
Fungsi : Untuk menyimpan Double Word dari memory. 16 bit rendah akan disimpan pada "Operand" sedangkan 16 bit tingginya akan disimpan pada register DS. "Mem32" mencatat lokasi dari suatu memory yang didefinisikan dengan tipe Double Word(DD). Contoh:
TData: JMP Proses
Tabel DD ?,?,? Proses:
LDS BX,Tabel Setelah intruksi diatas dijalankan, maka pasangan register DS:BX akan mencatat alamat dari variabel "Tabel".

Mnemonic : LEA (Load Effective Address)

Tersedia pada : 8088 keatas
Syntax : LEA Operand,Mem16
Pengaruh flag : Tidak Ada
Fungsi : Untuk mendapatkan alamat efektif atau offset dari "Mem16" dimana "Operand" merupakan suatu register 16 bit. Perintah LEA hampir sama dengan perintah OFFSET yang juga digunakan untuk mendapatkan offset dari suatu memory. Perintah LEA lebih fleksibel untuk digunakan dibandingkan dengan perintah OFFSET karena dengan LEA kita bisa memberikan tambahan nilai pada "Mem16".
Contoh:
TData :JMP Proses
Kal '0123456789abcd'
Proses:
MOV SI,10
LEA BX,Kal[SI]
Dengan perintah diatas, register BX akan mencatat offset ke 10 dari Kal.

Mnemonic : LES (Load Pointer Using ES Register)

Tersedia pada : 8088 keatas
Syntax : LES Operand,Mem32
Pengaruh flag : Tidak Ada
Fungsi : Untuk menyimpan Double Word dari memory. 16 bit rendah akan disimpan pada "Operand" sedangkan 16 bit tingginya akan disimpan pada register ES. "Mem32" mencatat lokasi dari suatu memory yang didefinisikan dengan tipe Double Word(DD).  Contoh:
TData:
JMP Proses
Tabel DD ?,?,?
Proses:            
LES BX,Tabel
Setelah intruksi diatas dijalankan, maka pasangan register ES:BX akan mencatat alamat dari variabel "Tabel".

Mnemonic : LOCK (Lock The BUS)

Tersedia pada : 8088 keatas
Syntax : LOCK Operand
Pengaruh flag : Tidak Ada
Fungsi : Perintah ini digunakan terutama pada komputer yang mempunyai procesor lebih dari satu. Perintah LOCK mengunci suatu area terhadap pemakaian oleh mikroprocesor lainnya. Catatan: Perintah XCHG selalu mengaktifkan LOCK.

Mnemonic : LODSB (Load A Byte From String Into AL)

Tersedia pada : 8088 keatas
Syntax : LODSB
Pengaruh flag : Tidak Ada
Fungsi : Untuk mengcopy data 1 byte dari alamat DS:SI ke register AL.
Mnemonic : LOOP

Tersedia pada : 8088 keatas
Syntax : LOOP Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Untuk melakukan suatu proses yang berulang (Looping) dengan CX sebagai counternya. Perintah LOOP akan mengurangkan CX dengan 1 kemudian dilihat apakah CX telah mencapai nol. Proses looping akan selesai jika register CX telah mencapai nol. Oleh karena inilah maka jika kita menjadikan CX=0 pada saat pertama kali, kita akan mendapatkan suatu pengulangan yang terbanyak karena pengurangan 0-1=-1(FFFF). Catatan: LOOP hanya dapat melakukan lompatan menuju "Tujuan" bila jaraknya tidak lebih dari -128 dan +127 byte. Contoh: XOR CX,CX ; Melakukan pengulangan Ulang: ; sebanyak FFFF kali LOOP Ulang ; 231

Mnemonic : LOOPE ( Loop While Equal)

Tersedia pada : 8088 keatas
Syntax : LOOPE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Untuk melakukan pengulangan selama register CX tidak sama dengan 0 dan ZF=1. LOOPE hanya dapat melakukan lompatan menuju "Tujuan" bila jaraknya tidak lebih dari -128 dan +127 byte. LOOPE identik dengan LOOPZ.

Mnemonic : LOOPNE (Loop While Not Equal)

Tersedia pada : 8088 keatas
Syntax : LOOPNE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Untuk melakukan pengulangan selama register CX tidak sama dengan 0 dan ZF=0. LOOPNE hanya dapat melakukan lompatan menuju "Tujuan" bila jaraknya tidak lebih dari -128 dan +127 byte. LOOPE identik dengan LOOPNZ.

Mnemonic : LOOPNZ (Loop While Not Zero)

Tersedia pada : 8088 keatas
Syntax : LOOPNZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan LOOPNE.

Mnemonic : LOOPZ

Tersedia pada : 8088 keatas
Syntax : LOOPZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan LOOPE.

Mnemonic : MOV (Move)

Tersedia pada : 8088 keatas
Syntax : MOV Tujuan,Sumber
Pengaruh flag : Tidak Ada
Fungsi : Untuk mengcopykan isi "Sumber" ke "Tujuan". Antara "Sumber" dan "Tujuan" harus mempunyai tipe data yang sama, seperti AL dan BL, AX dan BX. Pada perintah MOV ini harus anda perhatikan bahwa:
- Segment register tidak bisa langsung diisi nilainya, seperti:
MOV ES,0B800h
Untuk masalah seperti ini anda bisa menggunakan register general purpose sebagai perantara, seperti:
MOV AX,0B800h
MOV ES,AX
- Register CS sebaiknya tidak digunakan sebagai "Tujuan" karena hal ini akan mengacaukan program anda.
- Pengcopyan data antar segment register tidak bisa digunakan, seperti:
MOV ES,DS
Untuk masalah seperti ini anda bisa menggunakan register general purpose atau stack sebagai perantara, seperti:
MOV AX,DS
MOV ES,AX atau:
PUSH DS
POP ES
- Pengcopyan data antar lokasi memory, seperti:
MOV A,B
Untuk masalah seperti ini anda bisa menggunakan suatu register sebagai perantara, seperti:
MOV AX,B
MOV A,AX

Mnemonic : MOVSW (Move String Byte By Byte)

Tersedia pada : 8088 keatas
Syntax : MOVSB
Pengaruh flag : Tidak Ada
Fungsi : Untuk mengcopy data 1 byte dari alamat DS:SI ke alamat ES:DI. Bila DF=0(CLD) maka setelah intruksi MOVSB dijalankan, register SI dan DI akan ditambah dengan 1 sebaliknya jika DF=1(STD) maka register SI dan DI akan dikurang dengan 1.

Mnemonic : MOVSW (Move String Word By Word)

Tersedia pada : 8088 keatas
Syntax : MOVSW
Pengaruh flag : Tidak Ada
Fungsi : Untuk mengcopy data 1 Word dari alamat DS:SI ke alamat ES:DI. Bila DF=0(CLD) maka setelah intruksi MOVSW dijalankan, register SI dan DI akan ditambah dengan 2 sebaliknya jika DF=1(STD) maka register SI dan DI akan dikurang dengan 2.

Mnemonic : MUL (Multiply)

Tersedia pada : 8088 keatas
Syntax : MUL Sumber
Pengaruh flag : OF, CF
Fungsi : Bila "Sumber" bertipe 8 bit maka akan dilakukan perkalian antara "Sumber" dengan AL. Hasilnya disimpan pada register AX. Bila "Sumber" bertipe 16 bit maka akan dilakukan perkalian antara "Sumber" dengan AX. Hasilnya disimpan pada pasangan register DX:AX.
Contoh:
MUL BH ; AX = BH * AL
MUL BX ; DX:AX = BX * AX 234

Mnemonic : NEG (Negate)

Tersedia pada : 8088 keatas
Syntax : NEG Operand
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk mengubah "Operand" menjadi negatif. Contoh: MOV BH,1 ; BH = 01h NEG BH ; BH = FFh

Mnemonic : NOT

Tersedia pada : 8088 keatas
Syntax : NOT Operand
Pengaruh flag : Tidak Ada
Fungsi : Membalikkan bit pada operand. Jika bit operand bernilai 0 akan dijadikan 1 sebaliknya jika 1 akan dijadikan 0. Contoh: MOV AL,10010011b NOT AL ; AL = 01101100b \

Mnemonic : OR

Tersedia pada : 8088 keatas
Syntax : OR Tujuan,Sumber
Pengaruh flag : OF, SF, ZF, PF, CF
Fungsi : Melakukan logika OR antara "Tujuan" dan "Sumber". Hasil dari operasi OR diletakkan pada "Tujuan". Instruksi OR umumnya digunakan untuk menjadikan suatu bit menjadi 1.
Contoh:
OR AL,00000001b ; Jadikan bit ke 0 dari AL menjadi 1

Mnemonic : OUT (Output to Port)

Tersedia pada : 8088 keatas
Syntax : OUT NoPort,Operand
Pengaruh flag : Tidak ada
Fungsi : Untuk memasukkan 1 byte atau 1 word dari "operand" ke "NoPort" sesuai dengan tipe data "operand". Jika "Operand" merupakan register AL maka akan dikirimkan data pada port sebanyak 1 byte, bila "operand" merupakan register AX maka akan dikirimkan data pada port sebanyak 1 word. "NoPort" bisa langsung diberi nilai bila nomor port dibawah 255. Bila nomor port melebihi 255 maka "NoPort" harus berupa register DX yang mencatat nomor port tersebut.

Mnemonic : OUTS (Output String To Port)

Tersedia pada : 8088 keatas
Syntax : OUTS NoPort,Operand
Pengaruh flag : Tidak ada
Fungsi : Untuk mengirimkan data dari "operand" ke "NoPort" yang dicatat oleh register DX sebanyak 1 byte atau 1 word, sesuai dengan tipe "operand". Jadi "operand" hanya berfungsi sebagai penunjuk besarnya data yang akan dikirimkan menuju port. Data yang akan dikirimkan menuju port disimpan pada lokasi ES:SI.
Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi OUTS dijalankan register SI akan ditambah secara otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register SI akan dikurang secara otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai dengan perintah OUTS ini.

Mnemonic : OUTSB (Output String Byte To Port)

Tersedia pada : 8088 keatas
Syntax : OUTSB
Pengaruh flag : Tidak ada
Fungsi : Untuk memasukkan data dari lokasi DS:SI ke nomor port yang dicatat oleh register DX sebanyak 1 byte. Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi OUTSB dijalankan register SI akan ditambah dengan 1 secara otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register SI akan dikurang dengan 1 secara otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai dengan perintah OUTSB

Mnemonic : OUTSW (Output String Wyte To Port)

Tersedia pada : 8088 keatas
Syntax : OUTSW
Pengaruh flag : Tidak ada
Fungsi : Untuk memasukkan data dari lokasi DS:SI ke nomor port yang dicatat oleh register DX sebanyak 1 word. Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi OUTSW dijalankan register SI akan ditambah dengan 2 secara otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register SI akan dikurang dengan 2 secara otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai dengan perintah OUTSW ini.
Mnemonic : POP (Pop A Word From Stack)

Tersedia pada : 8088 keatas
Syntax : POP Tujuan

Pengaruh flag : Tidak ada
Fungsi : Untuk mengambil data 1 word dari stack(SS:SP) dan disimpan pada "Tujuan". Setelah intruksi POP dijalankan register SP akan ditambah dengan 2.
Contoh:
PUSH DS
POP ES

Mnemonic : POPA (Pop All General Purpose Registers)

Tersedia pada : 8088 keatas
Syntax : POPA
Pengaruh flag : Tidak ada
Fungsi : Untuk mengambil 8 word dari stack menuju register berturut-turut DI, SI, BP, SP, BX, DX, CX dan AX. Dengan PUSHA program anda akan berjalan lebih cepat dan efesian dibandingkan bila anda menyimpannya dengan cara:
POP DI
POP SI
POP BP
POP SP
POP BX
POP DX
POP CX
POP AX

Mnemonic : POPF (Pop Flags Off Stack)

Tersedia pada : 8088 keatas
Syntax : POPF
Pengaruh flag : OF, DF, IF, TF, SF, ZF, AF, PF, CF
Fungsi : Untuk mengambil 1 word dari stack ke flags registers. Setelah intruksi POPF dijalankan register SP akan ditambah dengan 2.

Mnemonic : PUSH (Push Operand Onto Stack)

Tersedia pada : 8088 keatas
Syntax : PUSH Sumber
Pengaruh flag : Tidak ada
Fungsi : Untuk menyimpan data 1 word dari "Sumber" ke stack(SS:SP). "Sumber" merupakan operand yang bertipe 16 bit. Setelah intruksi PUSH dijalankan register SP akan dikurang dengan 2.

Mnemonic : PUSHF (Push Flags Onto Stack)

Tersedia pada : 8088 keatas
Syntax : PUSHF
Pengaruh flag : Tidak ada
Fungsi : Untuk menyimpan flags registers ke stack. Intruksi ini merupakan kebalikan dari intruksi POPF. Setelah intruksi PUSHF dijalankan register SP akan dikurang dengan 2.

Mnemonic : RCL (Rotate Through Carry Left)

Tersedia pada : 8088 keatas
Syntax : RCL Operand,Reg
Pengaruh flag : OF, CF
Fungsi : Untuk memutar "Operand" sebanyak "Reg" kali ke kiri melalui CF. Bit yang tergeser keluar dari kiri akan dimasukkan pada CF dan nilai CF akan dimasukkan pada bit terkanan dari "Operand".


Pada mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila perputaran yang dilakukan terhadap "Operand" lebih dari 1.
Contoh:
MOV BL,00100110b ; Misalkan CF=1
RCL BL,1 ; BL = 01001101b CF=0

Mnemonic : RCR (Rotate through Carry Right)

Tersedia pada : 8088 keatas
Syntax : RCR Operand,Reg
Pengaruh flag : OF, CF
Fungsi : Untuk memutar "Operand" sebanyak "Reg" kali ke kanan melalui CF. Bit yang tergeser keluar dari kanan akan dimasukkan pada CF dan nilai CF akan dimasukkan pada bit terkiri dari "Operand".
           

Pada mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila perputaran yang dilakukan terhadap "Operand" lebih dari 1.
Contoh:
MOV BL,00100110b ; Misalkan CF=1
RCR BL,1 ; BL = 10010011b CF=0

Mnemonic : REP (Repeat)

Tersedia pada : 8088 keatas
Syntax : REP Instruksi
Pengaruh flag : Tidak ada
Fungsi : Melakukan "intruksi" sebanyak CX kali. Intruksi REP biasanya diikuti oleh Intruksi yang berhubungan dengan operasi pada string.
Mnemonic : REPE (Repeat While Equal)
Tersedia pada : 8088 keatas
Syntax : REPE Intruksi
Pengaruh flag : Tidak ada
Fungsi : Melakukan "intruksi" sebanyak CX kali atau sampai zero flag bernilai 1. Intruksi REPE biasanya diikuti oleh Intruksi yang berhubungan dengan operasi pada string.
Contoh:
MOV CX,200
REPE CMPS String1,String2
Intruksi diatas akan membandingkan string1 dengan string2 sebanyak 200 kali atau sampai ditemukan adanya ketidaksamaan antara String1 dan String2 yang membuat zero flag bernilai 1.

Mnemonic : REPNE (Repeat While Not Equal)

Tersedia pada : 8088 keatas
Syntax : REPNE Instruksi
Pengaruh flag : Tidak ada
Fungsi : Melakukan "intruksi" sebanyak CX kali atau sampai zero flag bernilai 0. Intruksi REPNE biasanya diikuti oleh Intruksi yang berhubungan dengan operasi pada string.
Contoh:
MOV CX,200
REPNE CMPS String1,String2
Intruksi diatas akan membandingkan string1 dengan string2 sebanyak 200 kali atau sampai ditemukan adanya kesamaan antara String1 dan String2 yang membuat zero flag bernilai 0.

Mnemonic : REPNZ (Repeat While Not Zero)

Tersedia pada : 8088 keatas
Syntax : REPNZ Instruksi
Pengaruh flag : Tidak ada
Fungsi : Identik dengan REPNE.

Mnemonic : REPZ (Repeat While Zero)

Tersedia pada : 8088 keatas
Syntax : REPZ Instruksi
Pengaruh flag : Tidak ada
Fungsi : Identik dengan REPE.

Mnemonic : RET (Return From Procedure)

Tersedia pada : 8088 keatas
Syntax : RET [Size]
Pengaruh flag : Tidak ada
Fungsi : RET akan mengambil alamat pada stack untuk melakukan lompatan pada alamat tersebut. RET biasanya diletakkan pada akhir dari suatu procedure yang dipanggil dengan CALL (Lihat CALL). Bila pada perintah RET diberi parameter, maka paramter itu akan digunakan sebagai angka tambahan dalam mengambil data pada stack.
Contoh:
RET 2


Mnemonic : ROL (Rotate Left)

Tersedia pada : 8088 keatas
Syntax : ROL Operand,Reg
Pengaruh flag : OF, CF
Fungsi : Untuk memutar "Operand" sebanyak "Reg" kali ke kiri. Bit yang tergeser keluar dari kiri akan dimasukkan pada CF dan pada bit terkanan dari "Operand".
           

Pada mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila perputaran yang dilakukan terhadap "Operand" lebih dari 1.
Contoh:
MOV BL,00100110b ; Misalkan CF=1
ROL BL,1 ; BL = 01001100b CF=0

Mnemonic : ROR (Rotate Right)

Tersedia pada : 8088 keatas 
Syntax : ROR Operand,Reg
Pengaruh flag : OF, CF
Fungsi : Untuk memutar "Operand" sebanyak "Reg" kali ke kanan. Bit yang tergeser keluar dari kanan akan dimasukkan pada CF dan pada bit terkiri dari "Operand".   
           


Pada mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila perputaran yang dilakukan terhadap "Operand" lebih dari 1.
Contoh:
MOV BL,00100110b ; Misalkan CF=1
ROR BL,1 ; BL = 00010011b CF=0

Mnemonic : SAHF (Store AH into Flag Register)

Tersedia pada : 8088 keatas
Syntax : SAHF Pengaruh flag : SF, ZF, AF, PF, CF
Fungsi : Untuk mengcopykan nilai AH pada 8 bit rendah dari flag register, yaitu: CF, PF, AF, ZF dan SF. Intruksi ini merupakan kebalikan dari Intruksi LAHF.

Mnemonic : SAL (Arithmatic Shift Left)

Tersedia pada : 8088 keatas
Syntax : SAL Operand,Reg
Pengaruh flag : OF, SF, ZF, PF, CF
Fungsi : Untuk menggerser "Operand" sebanyak "Reg" kali ke kiri(Lihat SHL).

Mnemonic : SBB (Substract With Carry)

Tersedia pada : 8088 keatas
Syntax : SBB Tujuan,Sumber
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk mengurangkan "Sumber" dengan "Tujuan" dan Carry Flag (1=on, 0=off), hasilnya diletakkan pada "Tujuan" (Tujuan=Tujuan-Sumber-CF).

Mnemonic : SCASB (Scan String For Byte)

Tersedia pada : 8088 keatas
Syntax : SCASB Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk membandingkan isi register AL dengan data pada alamat ES:DI.

Mnemonic : SCASW (Scan String for Word)

Tersedia pada : 8088 keatas
Syntax : SCASW Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk membandingkan isi register AX dengan data pada alamat ES:DI.

Mnemonic : SHL (Shift Left)

Tersedia pada : 8088 keatas
Pengaruh flag : OF, SF, ZF, PF, CF Syntax : SHL Operand,Reg Fungsi : Untuk menggeser bit dari "operand" sebanyak "Reg" kali ke kiri. Bila pergeseran yang dilakukan lebih dari 1 kali maka "Reg" harus berupa regisrer CL atau CX.
Contoh:
MOV BL,00000001b
SHL BL,1 ; BL=00000010b
Dengan menggeser n kali kekiri adalah sama bila bilangan tersebut dikali dengan 2 pangkat n.

Mnemonic : SHR (Shift Right)

Tersedia pada : 8088 keatas
Syntax : SHR Operand,Reg
Pengaruh flag : OF, SF, ZF, PF, CF
Fungsi : Untuk menggeser bit dari "operand" sebanyak "Reg" kali ke kanan. Bila pergeseran yang dilakukan lebih dari 1 kali maka "Reg" harus berupa regisrer CL atau CX.
Contoh:
MOV BL,00000100b
SHR BL,1 ; BL=00000010b
Dengan menggeser n kali kekanan adalah sama bila bilangan tersebut dibagi dengan 2 pangkat n.

Mnemonic : STC (Set Carry Flag)

Tersedia pada : 8088 keatas
Syntax : STC Pengaruh flag : CF
Fungsi : Untuk menjadikan Carry flag menjadi 1.
Mnemonic : STD (Set Direction Flag)

Tersedia pada : 8088 keatas
Syntax : STD Pengaruh flag : DF
Fungsi : Untuk menjadikan Direction flag menjadi 1. Intruksi ini merupakan kebalikan dari intruksi CLD (lihat CLD).

Mnemonic : STI (Set Interrupt Flag)

Tersedia pada : 8088 keatas
Syntax : STI Pengaruh flag : IF
Fungsi : Untuk membuat Interrupt flag menjadi 1 agar interupsi dapat terjadi lagi. Intruksi ini merupakan kebalikan dari intruksi CLI (lihat CLI).

Mnemonic : STOSB (Store AL )

Tersedia pada : 8088 keatas Syntax : STOSB
Pengaruh flag : Tidak ada
Fungsi : Untuk mengcopykan isi register AL pada alamat ES:DI. Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi STOSB dijalankan register DI akan ditambah dengan 1 secara otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 1 secara otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai dengan perintah STOSB ini.

Mnemonic : STOSW (Store Word in AX at String)

Tersedia pada : 8088 keatas
Syntax : STOSW
Pengaruh flag : Tidak ada
Fungsi : Untuk mengcopykan isi register AX pada alamat ES:DI. Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi STOSW dijalankan register DI akan ditambah dengan 2 secara otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 2 secara otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai dengan perintah STOSW ini.

Mnemonic : SUB (Substract)

Tersedia pada : 8088 keatas
Syntax : SUB Tujuan,Sumber
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk mengurangkan "Tujuan" dengan "Sumber". Hasil pengurangan akan disimpan pada "Tujuan". Contoh: 246 SUB BX,BX ; BX=0

Mnemonic : TEST

Tersedia pada : 8088 keatas
Syntax : TEST Operand1,Operand2
Pengaruh flag : OF, SF, ZF, PF, CF
Fungsi : Untuk melakukan operasi AND antara "Operand1" dan "Operand2". Hasil dari operasi AND hanya mempengaruhi flag register saja dan tidak mempengaruhi nilai "operand1" maupun "operand2".

Mnemonic : WAIT

Tersedia pada : 8088 keatas
Syntax : WAIT
Pengaruh flag : Tidak ada
Fungsi : Untuk menghentikan CPU sampai adanya interupsi dari luar. Intruksi ini bisanya digunakan untuk bekerja sama dengan Coprosesor.

Mnemonic : XCHG (Exchange)

Tersedia pada : 8088 keatas
Syntax : XCHG Operand1,Operand2
Pengaruh flag : Tidak ada
Fungsi : Untuk menukar "Operand1" dengan "Operand2".
Contoh:
Potongan program di bawah akan mengatur agar AX > BX
CMP AX,BX
JAE Selesai
XCHG AX,BX
Selesai :
..........

 Mnemonic : XLAT (Translate)

Tersedia pada : 8088 keatas
Syntax : XLAT
Pengaruh flag : Tidak ada
Fungsi : Untuk mengcopykan isi dari alamat DS:[BX] ditambah dengan AL ke AL (AL=DS:[BX]+AL).

Mnemonic : XOR

Tersedia pada : 8088 keatas
Syntax : XOR Tujuan,
Sumber Pengaruh flag : Tidak ada
Fungsi : Melakukan logika XOR antara "Tujuan" dan "Sumber". Hasil dari operasi XOR diletakkan pada "Tujuan". Fungsi XOR yg paling populer adalah untuk menolkan suatu register. Dengan logika XOR program akan berjalan lebih cepat dan efisien. Contoh:
XOR AX,AX ; AX akan bernilai nol setelah perintah ini 248


DAFTAR INTERRUPT PILIHAN

 INTERRUPT 05h
Print Screen
Fungsi : Mencetak seluruh isi layar ke printer. Register Input : Tidak Ada. Register Output : Tidak Ada.

NTERRUPT 09h
Keyboard
Fungsi : Interupsi 09 merupakan HardWare interupsi dari keyboard. Setiap penekanan tombol keyboard akan membangkitkan interupsi 09. Handler dari interupsi 09 kemudian akan mengambil data dari tombol apa yang ditekan dari Port 60h yang berisi kode scan tombol. Dari kode scan ini kemudian akan diterjemahkan dalam kode ASCII atau Extended dan disimpan pada keyboard buffer untuk kemudian digunakan oleh interupsi lain.

INTERRUPT 10h - Service 00h
Set Video Mode
Fungsi : Mengubah Mode Video.
Register Input :                                 Register Output : Tidak Ada.
AH = 00h
AL = nomor mode
Penjelasan : Setiap dilakukan pergantian mode akan menimbulkan efek CLS, kecuali nomor mode dijumlahkan dengan 128 atau bit ke-7 pada AL diset 1.

INTERRUPT 10h - Service 01h
Set Cursor Size
Fungsi : Merubah ukuran kursor pada mode teks.
Register Input :                                 Register Output : Tidak Ada.
AH = 01h
CH = awal garis bentuk kursor
CL = akhir garis bentuk kursor

INTERRUPT 10h - Service 02h
Set Cursor Position
Fungsi : Meletakkan kursor pada posisi tertentu.
Register Input :                                 Register Output : Tidak Ada.
AH = 02h
BH = nomor halaman tampilan
DH = nomor baris (dimulai 00)
DL = nomor kolom (dimulai 00)


INTERRUPT 10h - Service 03h
Cursor Information
Fungsi : Memperoleh Informasi posisi kursor dan ukurannya.
Register Input :                                 Register Output :
 AH = 03h
CH = awal garis bentuk kursor
BH = nomor halaman tampilan
CL = akhir garis bentuk kursor
DH = nomor baris
DL = nomor kolom
Penjelasan : Setiap halaman tampilan memiliki kursornya sendiri- sendiri.

INTERRUPT 10h - Service 05h
Select Active Page
Fungsi : Merubah halaman tampilan aktif.
Register Input :                                 Register Output : Tidak Ada.
AH = 05h
AL = nomor halaman tampilan

INTERRUPT 10h - Service 06h
Scroll Up Window
Fungsi : Menggulung jendela ke atas.
Register Input :                                 Register Output : Tidak Ada.
AH = 06h
AL = jumlah baris untuk digulung
BH = atribut untuk baris kosong
CH,CL = koordinat kiri atas jendela
DH,DL = koordinat kanan bawah jendela
Penjelasan : AL diisi 00 akan mengosongkan keseluruhan jendela.

INTERRUPT 10h - Service 07h
Scroll Down Window
Fungsi : Menggulung jendela ke bawah.
Register Input :                                 Register Output : Tidak Ada.
AH = 07h
AL = jumlah baris untuk digulung
BH = atribut untuk baris kosong
CH,CL = koordinat kiri atas jendela
DH,DL = koordinat kanan bawah jendela
Penjelasan : AL diisi 00 akan mengosongkan keseluruhan jendela.

 INTERRUPT 10h - Service 09h
Write Character And Attribute At Cursor Position
Fungsi : Mencetak karakter dan atribut pada posisi kursor.
Register Input :                     Register Output : Tidak Ada.
AH = 09h
AL = kode ASCII karakter
BH = nomor halaman
BL = atribut karakter
CX = jumlah pengulangan pencetakan
Penjelasan : Karakter kontrol akan dicetak sebagai karakter biasa.

INTERRUPT 10h - Service 0Ah
Write Character At Cursor Position
Fungsi : Mencetak karakter pada posisi kursor.
Register Input :                     Register Output : Tidak Ada.
AH = 0Ah
AL = kode ASCII karakter
BH = nomor halaman CX = jumlah pengulangan pencetakan
Penjelasan : Karakter kontrol akan dicetak sebagai karakter biasa, atribut yang digunakan akan sama dengan atribut yang lama.

INTERRUPT 10h - Service 0Eh
Teletype Output
Fungsi : Output karakter sederhana.
Register Input :                                 Register Output : Tidak Ada.
AH = 0Eh
AL = kode ASCII karakter
BH = nomor halaman
Penjelasan : Karakter kontrol berpengaruh sesuai fungsinya. Pada ROM BIOS dengan tanggal antara 24/4/81 ke atas umumnya register BH tidak berfungsi karena setiap output akan dicetak ke halaman aktif.

INTERRUPT 10h - Service 0Fh
Get Current Video Mode
Fungsi : Mendapatkan mode video aktif.
Register Input :                                 Register Output :
 AH = 0Fh                                           AL = mode video (gambar 5.1.)
AH = jumlah karakter per kolom
BH = nomor halaman tampilan
Penjelasan : Jika mode video diset dengan bit 7 on, maka AL yang didapat juga akan berisi bit 7 on.
Konflik : Driver tampilan VUIMAGE

INTERRUPT 10h - Service 11h,
Subservice 00h Load User Specific Character
Fungsi : Membuat karakter ASCII baru.
Terdapat pada : Sistem dilengkapi tampilan EGA, VGA, dan MCGA. Register Input :                          Register Output : Tidak Ada
AH = 11h
AL = 00h
CX = jumlah karakter akan diubah
DX = nomor karakter mulai diubah BL = nomor blok untuk diubah BH = jumlah byte per karakter ES:BP = buffer bentuk karakter

INTERRUPT 10h - Service 11h,
Subservice 03h Set Block Specifier
Fungsi : Memberikan identitas tabel karakter untuk ditampilkan. Terdapat pada : Sistem dilengkapi tampilan EGA, VGA, dan MCGA. Register Input :                                     Register Output : Tidak Ada
AH = 11h
AL = 03h
BL = penanda tabel karakter


INTERRUPT 10h - Service 12h,Subservice 10h
Get EGA Information
Fungsi : Memperoleh karakteristik sistem video.
Terdapat pada : Sistem dilengkapi tampilan EGA ke atas.
Register Input :                                 Register Output :
AH = 12h                                            BH = 00h monitor warna
BL = 10h                                                         01h monitor mono
BL = 00h Card 64 KB
01h Card 128 KB
02h Card 192 KB
03h Card 256 KB


INTERRUPT 10h - Service 13h
Write String Fungsi : Mencetak string ke Layar
Terdapat pada : Mesin 80286 ke atas dengan tampilan EGA ke atas. Register Input :                             Register Output : Tidak Ada.
AH = 13h
AL = 00h
BH = nomor halaman
BL = atribut untuk string
CX = jumlah karakter pada string
DH,DL = koordinat untuk memulai pencetakan
ES:BP = alamat string yang akan dicetak
Penjelasan : Memperlakukan karakter kontrol sesuai fungsinya.

INTERRUPT 10h - Service 1Ah,Subservice 00h
Get Display Combination
Fungsi : Memperoleh informasi tampilan
Terdapat pada : Sistem dengan tampilan VGA dan MCGA.
Register Input :                                 Register Output :
AH = 1Ah                                           AL = 1Ah jika berhasil
AL = 00h                                            BL = kode tampilan aktif
BH = kode tampilan kedua

INTERRUPT 10h - Service 1Bh
VGA State Information
Fungsi : Memperoleh informasi tampilan.
Terdapat pada : Sistem dengan tampilan VGA dan MCGA.
Register Input :                                 Register Output :
 AH = 1Bh                                          AL = 1Bh bila berhasil
BX = 0000h                            ES:DI = alamat buffer 64
ES:DI = alamat buffer 64 byte informasi byte untuk diisi

INTERRUPT 10h - Service 4Fh,Subservice 00h
VESA SuperVga Information
Fungsi : Memperoleh informasi VESA.
Terdapat pada : Sistem dengan card tampilan VESA SuperVga.
Register Input :                                    Register Output :
AX = 4F00h                             AL = 4Fh jika berhasil
ES:DI = alamat buffer 256 AH = 00h jika berhasil byte untuk                                               diis                                   diisi
ES:DI = alamat buffer 256 byte informasi


INTERRUPT 16h - Service 00h
Get Keystroke
Fungsi : Menunggu masukan keyboard.
Terdapat pada : Semua mesin.
Register Input :                                 Register Output :
AH = 00h                                            Jika AL=0 maka
AH = kode Extended Jika AL<>0 maka
AL = Kode ASCII AH = Kode Scan

INTERRUPT 16h - Service 01h
Check Keystroke
Fungsi : Mengecek isi keyboard buffer.
Terdapat pada : Semua mesin.
 Register Input :                                Register Output :
AH = 01h                                            ZF=0 bila buffer tidak kosong
Jika AL=0 maka AH = kode Extended Jika AL<>0 maka
AL = Kode ASCII
AH = Kode Scan ZF=1 bila buffer kosong

INTERRUPT 16h - Service 10h
Get Enhanced Keystroke
Fungsi : Menunggu masukan keyboard.
Terdapat pada : Mesin AT dengan keyboard Enhanced.
Register Input :                                 Register Output :
AH = 10h                                            AH = kode scan
AL = kode ASCII

INTERRUPT 16h - Service 11h
Check Enhanced Keystroke
Fungsi : Mengecek isi keyboard buffer.
Terdapat pada : Mesin AT dengan keyboard Enhanced.
Register Input :                                 Register Output :
AH = 11h                                            ZF=0 bila buffer tidak kosong
Jika AL=0 maka AH = kode Extended Jika AL<>0 maka
AL = Kode ASCII
AH = Kode Scan ZF=1 bila buffer kosong


INTERRUPT 19h
Bootstrap Loader
Fungsi : Melakukan Warm Boot.
Register Input : Tidak Ada. Register Output : Tidak Ada.


INTERRUPT 1Bh
Control Break Handler
Fungsi : Interupsi ini terjadi setiap kali terjadi penekanan tombol Ctrl+Break.
Register Input : Tidak Ada.              Register Output : Tidak Ada.

INTERRUPT 1Ch
Timer Tick
Fungsi : Interupsi ini disediakan untuk digunakan oleh pemakai. Interupsi 1Ch akan terjadi kurang lebih 18,2 kali setiap detik. Anda bisa membuat program residen dengan memanfaatkan timer tick ini.
Register Input : Tidak Ada.              Register Output : Tidak Ada.

INTERRUPT 21h - Service 01h
Read Character With Echo
Fungsi : Untuk membaca masukan 1 karakter dari keyboard dan menampilkannya ke layar. Fungsi ini dapat dihentikan oleh penekanan tombol Ctrl+Break.
Register Input :                                 Register Output :
AH = 10h                                            AL = Kode ASCII
Catatan : Berbeda dengan fungsi dari BIOS, untuk membaca karakter khusus yang mempunyai kode Extended, anda harus membacanya dua kali dengan fungsi dari DOS ini.

INTERRUPT 21h - Service 02h
Write Character To Standard Output
Fungsi : Untuk mencetak satu buah karakter pada layar.
Register Input :                                 Register Output : Tidak ada
AH = 02h
DL = Kode ASCII

INTERRUPT 21h - Service 07h
Direct Character Input Without Echo
Fungsi : Untuk membaca masukan 1 karakter dari keyboard. Fungsi ini tidak akan 257 menampilkan karakter yang ditekan pada layar, selain itu penekanan tombol Ctrl+Break juga akan diabaikan.
Register Input :                                 Register Output :
AH = 07h                                            AL = Kode ASCII

INTERRUPT 21h - Service 08h
Character Input Without Echo
Fungsi : Untuk membaca masukan 1 karakter dari keyboard. Fungsi ini tidak akan menampilkan karakter yang ditekan pada layar. Penekanan tombol Ctrl+Break akan menghentikan fungsi ini. Register Input :                                   Register Output :
AH = 08h                                            AL = Kode ASCII

INTERRUPT 21h - Service 09h
Write String To Standard Output
Fungsi : Untuk mencetak string ke layar.
Register Input :                                 Register Output : Tidak ada
AH = 09h
DS:DX = String yang
diakhiri dengan tanda "$".

INTERRUPT 21h - Service 0Ah
Input String Fungsi : Untuk mendapatkan masukan string dari keyboard. Register Input :                                  Register Output :
AH = 0Ah                                           Buffer terisi
DS:DX = Buffer Spesifikasi buffer:
- Offset 00 mencatat maksimum karakter yang dapat dimasukkan. - Offset 01 banyaknya masukan dari keyboard yang telah diketikkan. Tombol CR tidak akan dihitung.
- Offset 02 keatas, tempat dari string yang diketikkan disimpan.

INTERRUPT 21h - Service 0Bh
Get Status
Fungsi : Mengecek isi keyboard buffer.
Register Input :                                 Register Output :
AH = 0Bh                                           AL = 00 jika tidak ada karakter
AL = FFh jika ada karakter

INTERRUPT 21h - Service 0Ch
Clear Buffer dan Read Input
Fungsi : Untuk mengosongkan keyboard buffer, kemudian melaksanakan fungsi DOS 01, 06, 07, 08 atau 0Ah.
Register Input :                                 Register Output : Tidak ada
AH = 0Ch
AL = Fungsi yang akan dieksekusi
setelah buffer dikosongkan (01,06,0,08 atau 0Ah).

INTERRUPT 21h - Service 0Fh
Open File Using FCB
Fungsi : Membuka file dengan cara FCB.
Register Input :                                 Register Output :
AH = 0Fh                                            AL = 00h Jika sukses
DS:DX = FCB                                    AL = FFh Jika gagal

INTERRUPT 21h - Service 10h
Closes File Using FCB
Fungsi : Untuk menutup file dengan cara FCB.
Register Input :                                 Register Output :
AH = 10h                                            AL = 00h Jika sukses
DS:DX = FCB                                    AL = FFh Jika gagal

INTERRUPT 21h - Service 13h
Delete File Using FCB
Fungsi: Menghapus file dengan cara FCB.
Register Input :                                 Register Output :  
AH = 13h                                            AL = 00h Jika sukses
DS:DX = FCB                                    AL = FFh Jika gagal

INTERRUPT 21h - Service 14h
Sequential Read From FCB File
Fungsi : Untuk membaca file secara sekuensial.
Register Input :                                 Register Output :
AH = 14h                                            AL = status
DS:DX = FCB

INTERRUPT 21h - Service 15h
Sequential Write To FCB File
 Fungsi : Untuk menulis file secara sekuential.
Register Input :                                 Register Output :
AH = 14h                                            AL = Status
DS:DX = FCB

INTERRUPT 21h - Service 16h
Create File Using FCB
Fungsi : Untuk menciptakan sebuah file baru dengan cara FCB. Register Input :                          Register Output :
AH = 16h                                            AL = Status
DS:DX = FCB

INTERRUPT 21h - Service 17h
Rename File Using FCB
Fungsi : Untuk mengganti nama file dengan cara FCB.
Register Input :                                 Register Output :
AH = 17h                                            AL = Status
DS:DX = FCB

INTERRUPT 21h - Service 1Ah
Set DTA
Fungsi : Untuk merubah alamat DTA. Secara default DTA terletak pada PSP offset ke 80h sebanyak 128 byte.
Register Input :                                 Register Output : Tidak ada
AH = 1Ah
DS:DX = Lokasi DTA yang baru

INTERRUPT 21h - Service 21h
Read Random Record From FCB File
Fungsi : Untuk membaca record dari file FCB.
Register Input :                                 Register Output :
AH = 21h                                                        AL = Status
DS:DX = FCB                                                DTA = Hasil pembacaan

INTERRUPT 21h - Service 22h
Write random Record To FCB File
Fungsi : untuk menulis record ke file FCB.
Register Input :                                 Register Output :
AH = 22h                                            AL = Status
DS:DX = FCB                                    DTA = Data record

INTERRUPT 21h - Service 23h
Get File Size
Fungsi : Untuk mengetahui besarnya suatu file.
Register Input :                                 Register Output :
AH = 23h                                            AL = Status
DS:DX = FCB

INTERRUPT 21h - Service 24h
Set Random Record Number For FCB
Fungsi : Untuk memindahkan record untuk diakses oleh fungsi 21h dan 22h.
Register Input :                                 Register Output :  
AH = 24h
DS:DX = FCB

INTERRUPT 21h - Service 25h
Set Interrupt Vektor
Fungsi : Untuk merubah vektor interupsi ke suatu lokasi dengan merubah alamat awal vektor interupsi.
Register Input :                                 Register Output :
AH = 25h
AL = Nomor Interupsi
DS:DX = Lokasi baru
Konflik : Phar Lap

INTERRUPT 21h - Service 27h
Random Block Read From FCB File
Fungsi : Untuk membaca sejumlah record dari suatu file.
Register Input :                                 Register Output :
AH = 27h                                            AL = Status
CX = Banyaknya record yang DTA = hasil pembacaan akan dibaca CX = Banyaknya record yang
DS:DX = FCB berhasil dibaca

INTERRUPT 21h - Service 28h
Random Block Write To FCB File
 Fungsi : Untuk menulis sejumlah record ke suatu file
Register Input :                                 Register Output :
 AH = 28h AL =                                 Status
CX = Banyaknya record yang CX = Banyaknya record yang akan ditulisi berhasil ditulis
DS:DX = FCB
DTA = Data dari record

 INTERRUPT 21h - Service 2Fh
Get DTA Address
 Fungsi : Untuk mengetahui alamat dari DTA yang digunakan.
Register Input :                                 Register Output :
AH = 2Fh                                            ES:BX = Lokasi DTA

INTERRUPT 21h - Service 30h
Get DOS Version
Fungsi : Untuk mengetahui versi DOS yang sedang digunakan
Register Input :                                 Register Output :
AH = 30h                                            AL = Angka mayor
AH = Angka minor

INTERRUPT 21h - Service 31h
Terminate And Stay Residen
Fungsi : Untuk meresidenkan suatu program.
Register Input :                                 Register Output :
AH = 31h
AL = Kode return
DX = Besar memory dalam paragraf

INTERRUPT 21h - Service 33h
Extended Break Checking
Fungsi : Untuk menghidup dan matikan pengecekan tombol Ctrl+Break oleh fungsi DOS.
Register Input :                                 Register Output :
AH = 33h                                            Jika input
AL=0 AL = 0 untuk mengambil keterangan
DL=0 Off Ctrl+Break
DL=1 On
= 1 untuk merubah status Ctrl+Break
DL = 0 Ctrl+Break dijadikan Off
DL = 1 Ctrl+Break dijadikan On

 INTERRUPT 21h - Service 34h
GET ADDRESS OF INDOS FLAG
Fungsi : Untuk mendapatkan alamat dari BAD (Bendera Aktif DOS). Nilai BAD akan bertambah pada saat interupsi dari DOS dijalankan dan akan berkurang saat interupsi dari DOS selesai. Dengan melihat pada BAD anda dapat mengetahui apakah interupsi dari DOS sedang aktif atau tidak(Lihat bagian residen).
Register Input :                                 Register Output :
AH = 34h                                            ES:BX = Alamat BAD

INTERRUPT 21h - Service 35h
Get Interrupt Vektor
Fungsi : Untuk mendapatkan alamat vektor interupsi dari suatu nomor interupsi.
Register Input :                                 Register Output :
AH = 35h                                            ES:BX = Alamat vektor interupsi
AL = Nomor Interupsi

INTERRUPT 21h - Service 3Ch
Create File Handle
Fungsi : Untuk menciptakan sebuah file baru dengan metode File Handle.
Register Input :                                 Register Output :
AH = 3Ch                                           Jika CF=0 maka
AL = Mode, dengan bit:         AX=Nomor file handle
0 file Read only                      Jika CF=1 maka
1 file Hidden                           AX=Kode kesalahan
2 file System
3 Volume label
4 Cadangan
5 file Archive
DS:DX = Nama file ASCIIZ

INTERRUPT 21h - Service 3Dh
Open Existing File
Fungsi : Untuk membuka file yang telah ada dengan metode file handle.
Register Input :                                 Register Output :
AH = 3Dh                                           Jika CF=0 maka
AL = Mode, dengan bit:         AX=Nomor file handle
0 untuk Read only Jika           CF=1 maka
1 untuk Write only                  AX=Kode kesalahan
2 untuk Read/Write
DS:DX = Nama file ASCIIZ

INTERRUPT 21h - Service 3Eh
Close File Handle
Fungsi : Untuk menutup file handle
Register Input :                                 Register Output :
 AH = 3Eh                                          CF=0 jika sukses
BX = Nomor file handle         CF=1 jika gagal, maka
AX=Kode kesalahan

INTERRUPT 21h - Service 3Fh
Read From File Or Device Using File Handle
 Fungsi : Untuk membaca data dari suatu file atau device.
Register Input :                                 Register Output :
AH = 3Fh                                            CF=0 jika sukses
BX = Nomor file handle         AX=byte yang berhasil dibaca
CX = Banyaknya byte yang CF=1 jika gagal
akan dibaca                             AX=Kode kesalahan
DS:DX = Alamat buffer

INTERRUPT 21h - Service 40h
Write To File Or Device Using File Handle
Fungsi : Untuk menulisi file atau device.
Register Input :                                 Register Output :
AH = 40h                                            CF=0 jika sukses
BX = Nomor file handle         AX=byte yang berhasil ditulisi
CX = Banyaknya byte yang CF=1 jika gagal akan ditulisi
AX=Kode kesalahan
DS:DX = Alamat data

INTERRUPT 21h - Service 41h
Delete File Using File Handle
Fungsi : Untuk menghapus file
Register Input :                                 Register Output :
AH = 41h                                            CF=0 jika sukses
CL = Nama file ASCIIZ        CF=1 jika gagal, maka
AX=kode kesalahan

INTERRUPT 21h - Service 42h
Set Current File Position ‘
Fungsi : Untuk memindahkan pointer dari suatu file.
Register Input :                                 Register Output :
AH = 42h                                            CF=0 jika sukses
AL = Mode perpindahan:       CF=1 jika gagal
00 dari awal file                      AX= kode kesalahan
01 dari posisi aktif
02 dari akhir file
BX = Nomor file handle
CX:DX = Banyaknya perpindahan

INTERRUPT 21h - Service 43h
Set And Get File Atribut
 Fungsi : Untuk mengetahui dan merubah atribut dari suatu file. Register Input :                                                  Register Output :
AH = 43h                                                                    Jika input AL=0, maka:
AL = 0 untuk mendapatkan atribut    jika CF=0
file                                                                   CX = atribut
1 untuk merubah atribut file jika CF=1
CX = atribut baru dengan bit:             AX = Kode kesalahan
0 = Read Only
1 = Hidden
2 = System
5 = Archive
DS:DX = Nama file ASCIIZ

INTERRUPT 21h - Service 4Ch
Terminate With Return Code
 Fungsi : Untuk menghentikan program dan mengembalikan kendali kepada DOS. Fungsi ini lebih efektif untuk digunakan dibandingkan dengan interupsi 20h.
Register Input :                                             Register Output : Tidak ada
AH = 4Ch
AL = Kode return

INTERRUPT 21h - Service 56h
Rename File
Fungsi : Untuk mengganti nama file. Fungsi ini juga bisa memindahkan file ke directory lain.
Register Input :                                             Register Output :
AH = 56h                                                        CF=0 jika sukses
DS:DX = Nama file ASCIIZ lama CF=1 jika gagal
ES:BX = Nama file ASCIIZ baru AX=Kode kesalahan

INTERRUPT 27h
Terminate And Stay Residen
Fungsi : Untuk meresidenkan program.
Register Input :                                             Register Output :
DS:DX = Batas alamat residen





Lampiran II Tabel Kode Scan Keyboard

Subscribe to receive free email updates:

0 Response to "DAFTAR INSTRUKSI ASSEMBLY"

Post a Comment