Disusun oleh:
Dwiki Arlan (1001083029)
Sukma Hayati (1001083030)
Kelas : TK2M
Tujuan
1. Membuat program assambler dengan ekstensi .COM dengan menggunakan debug
2. Menampilkan dan membaca isi register
3. Menjelaskan fungsi-fungsi register sebagai pengalamatan data
4. Menjelaskan instruksi-instruksi dasar pada mikroprosesor X86
5. Menjelaskan mode alamat efektif dan alamat mutlak
Dasar Teori:
1. Bahasa Assambler
Dalam bahasa assembler mempunyai 3 instruksi dasar, yaitu mnemonic opcode), operan 1 dan operan2 serta komentar (jika diperlukan)
Mnemonic atau Opcode ialah kode yang akan melakukan aksi terhadap operand . Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand. Sedangkan komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly.
CJNE R0,#22H, Tasmi ;dibutuhkan 3 buah operand
MOVX @DPTR, A ;dibutuhkan 2 buah operand
RR A ;1 buah operand
NOP ; tidak memerlukan operand
Semua instruksi tersebut dapat dibagi menjadi lima kelompok menurut fungsinya, yaitu:
· Instruksi Pemindahan Data
· Instruksi Aritmatika
· Instruksi Logika dan Manipulasi Bit
· Instruksi Percabangan
· Instruksi Stack, I/O, dan Kontrol
2. Debug dan Interupt
A. Debug
Debug adalah suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM.
B. Interupt (Int)
Perintah ini merupakan pemanggilan subroutin yang sudah tersedia di memori computer.Subroutine yang dapat dipanggil menggunakan perintah int (Interup) terdiri dari dua jenis yaitu:
1. Bios Interrupt, yaitu Int yang disediakan oleh BIOS(Basic Input Output System). Int yang termasuk dalam Interrupt Bios adalah Int 0 hingga 1F hexa
2. DOS Interrupt yaitu Int yang disediakan oleh DOS (Disk Operation System). Yang termasuk dalam Interrupt ini adalah Interrupt diatas 1F hexa.Interupt DOS yang sering digunakan adalah Int 20h dan Int 21h service 02h
a. Int 20h
Int ini mempunyai tugas memberhentikan proses komputer terhadap suatu program.
b. Int 21h service 21h
Int 21h mempunyai banyak tugas sehingga dibagi menjadi berbagai macam service number. Service 02h merupakan bagian tugas Int 21h yang sering dipakai yaitu untuk mencetak sebuah huruf ke monitor.
Untuk menjalankan fungsi Int 21h service 02h harus memenuh syarat sebagai berikut:
1. Register AH harus berisi service number dari Int 21h yang akan dijalankan (02h)
2. Register DL, harus berisi bilangan hexa dari karakter ASCII yang akan dicetak.
3. Instruksi-Instruksi Dasar
1. Instruksi Pengalamatan
MOV tujuan,asal (tujuan: register/memori, asal:angka/register/memori)
Misal MOV AX,1234H (register AX diisi angka 1234 H)
2. Instruksi Penjumlahan
INC tujuan
Misal INC DX (DX = DX+1)
ADD tujuan,asal
Misal ADD AX
1234 (AX=AX+1234H)
3. Instruksi Pengurangan
DEC tujuan
Misal DEC AX (AX=AX-1)
SUB tujuan,asal
Misal SUB AX,1200H (AX = AX-1200H)
Langkah Kerja:
Berikut ini langkah membuat program :
1. Klik start, dari tampilan menu pilih Run. Ditampilan menu Run, ketik command dan selanjutnya pilih OK
2. Kemudian ketik Debug (huruf besar atau kecil tidak berpengaruh)
3. Ketik A/a
4. Kemudisn tulis programnya
5. Jalankan program dengan mengetikkan perintah G
6. Kemudian ketik U 0100 L (dua digit terakhir dari alamat akhir program) dari hasil inilah kita dapat mengisi table Instruksi
7. Ketik perintah T untuk mengecek program perbarisnya, dari hasil inilah kita dapat mengisi table Register
8. Ketik Q untuk keluar dari utility Debug
OUTPUT DAN CONTOH PROGRAM
Contoh Program 1 :
MOV AH,O2
MOV DL,41
INT 21
INT 20
TABEL INSTRUKSI
Alamat | Instruksi | Opcode | Keterangan | |
Segmen | offset | |||
14E2 | 0100 | MOV | B402 | AH,02 |
14E2 | 0102 | MOV | B241 | DL,41 |
14E2 | 0104 | INT | CD21 | 21 |
14E2 | 0106 | INT | CD20 | 20 |
TABEL REGISTER
Alamat | INSTRUKSI | ||||||
Segmen | Offset | AX | BX | CX | DX | SP | IP |
14E2 | 0102 | 0200 | 0000 | 0000 | 0000 | FFEE | 0102 |
14E2 | 0104 | 0200 | 0000 | 0000 | 0041 | FFEE | 0104 |
Contoh program 2 :
MOV CX,18
MOV AH,07
MOV DL,43
INT 21
LOOP 0120
INT 20
TABEL INSTRUKSI
Alamat | Instruksi | Opcode | Keterangan | |
Segmen | Offset | |||
14E2 | 0100 | MOV | B91800 | CX,0018 |
14E2 | 0103 | MOV | B407 | AH,07 |
14E2 | 0105 | MOV | B243 | DL,43 |
14E2 | 0107 | INT | CD21 | 21 |
14E2 | 0109 | LOOP | E215 | 0120 |
14E2 | 010B | INT | CD20 | 20 |
TABEL REGISTER
Alamat | INSTRUKSI | ||||||
Segmen | Offset | AX | BX | CX | DX | SP | IP |
14E2 | 0103 | 0000 | 0000 | 0018 | 0000 | FFEE | 0103 |
14E2 | 0105 | 0700 | 0000 | 0018 | 0000 | FFEE | 0105 |
14E2 | 0107 | 0700 | 0000 | 0018 | 0043 | FFEE | 0107 |
Contoh Program 3 :
MOV CX,1A
MOV DL,41
MOV AH,02
INT 21
INC DL
LOOP 0105
INT 20
TABEL INSTRUKSI
Alamat | Instruksi | Opcode | Keterangan | |
Segmen | Offset | |||
14E2 | 0100 | MOV | B91A00 | CX,001A |
14E2 | 0103 | MOV | B241 | DL,41 |
14E2 | 0105 | MOV | B402 | AH,02 |
14E2 | 0107 | INT | CD21 | 21 |
14E2 | 0109 | INC | FEC2 | DL |
14E2 | 010B | LOOP | E2F8 | 0105 |
14E2 | 010D | INT | CD20 | 20 |
TABEL REGISTER
Alamat | INSTRUKSI | ||||||
Segmen | Offset | AX | BX | CX | DX | SP | IP |
14E2 | 0103 | 0000 | 0000 | 001A | 0000 | FFEE | 0103 |
14E2 | 0105 | 0000 | 0000 | 001A | 0041 | FFEE | 0105 |
14E2 | 0107 | 0200 | 0000 | 001A | 0041 | FFEE | 0107 |
Contoh Program 4 :
MOV CX,1A
MOV DL,5A
MOV AH,02
INT 21
INC DL
LOOP 0105
INT 20
TABEL INSTRUKSI
Alamat | Instruksi | Opcode | Keterangan | |
Segmen | Offset | |||
14E2 | 0100 | MOV | B91A00 | CX,001A |
14E2 | 0103 | MOV | B25A | DL,5A |
14E2 | 0105 | MOV | B402 | AH,02 |
14E2 | 0107 | INT | CD21 | 21 |
14E2 | 0109 | DEC | FEGA | DL |
14E2 | 010B | LOOP | E2F8 | 0105 |
14E2 | 010D | INT | CD20 | 20 |
TABEL REGISTER
Alamat | INSTRUKSI | ||||||
Segmen | Offset | AX | BX | CX | DX | SP | IP |
14E2 | 0103 | 0000 | 0000 | 001A | 0000 | FFEE | 0103 |
14E2 | 0105 | 0000 | 0000 | 001A | 005A | FFEE | 0105 |
14E2 | 0107 | 0200 | 0000 | 001A | 005A | FFEE | 0107 |
Contoh Program 5 :
MOV BX,0000
MOV DL,41
MOV CX,0003
MOV AH,02
INT 21
LOOP 0108
INC DL
CMP DL,5B
JNE 0105
MOV DL,0D
MOV AH,02
INT 21
MOV DL,0A
INT 21
INC BX
CMP BX,000B
JLE 0103
INT 20
TABEL INSTRUKSI
Alamat | Instruksi | Opcode | Keterangan | |
Segmen | Offset | |||
14E2 | 0100 | MOV | BB0000 | BX,0000 |
14E2 | 0103 | MOV | B241 | DL,41 |
14E2 | 0105 | MOV | B90300 | CX,0003 |
14E2 | 0108 | MOV | B402 | AH,02 |
14E2 | 010A | INT | CD21 | 21 |
14E2 | 010C | LOOP | E2FA | 0108 |
14E2 | 010E | INC | FEC2 | DL |
14E2 | 0110 | CMP | 80FA5B | DL,5B |
14E2 | 0113 | JNZ | 75F0 | 0105 |
14E2 | 0115 | MOV | B20D | DL,0D |
14E2 | 0117 | MOV | B402 | AH,02 |
14E2 | 0119 | INT | CD21 | 21 |
14E2 | 011B | MOV | B20A | DL,0A |
14E2 | 011D | INT | CD21 | 21 |
14E2 | 011F | INC | 43 | BX |
14E2 | 0120 | CMP | 83FB0B | BX, +0B |
14E2 | 0123 | JLE | 7EDE | 0103 |
14E2 | 0125 | INT | CD20 | 20 |
TABEL REGISTER
Alamat | INSTRUKSI | ||||||
Segmen | Offset | AX | BX | CX | DX | SP | IP |
14E2 | 0103 | 0000 | 0000 | 0000 | 0000 | FFEE | 0103 |
14E2 | 0105 | 0000 | 0000 | 0000 | 0041 | FFEE | 0105 |
14E2 | 0108 | 0000 | 0000 | 0003 | 0041 | FFEE | 0108 |
14E2 | 010A | 0200 | 0000 | 0003 | 0041 | FFEE | 010A |
Contoh Program 6 :
MOV AH,02
MOV CX,1A
MOV DL,41
INT 21
MOV BL,DL
MOV DL,20
INT 21
MOV DL,BL
INC DL
LOOP 107
INT 20
TABEL INSTRUKSI
Alamat | Instruksi | Opcode | Keterangan | |
Segmen | Offset | |||
14E2 | 0100 | MOV | B402 | AH,02 |
14E2 | 0102 | MOV | B91A00 | CX,001A |
14E2 | 0105 | MOV | B241 | DL,41 |
14E2 | 0107 | INT | CD21 | 21 |
14E2 | 0109 | MOV | 88D3 | BL,DL |
14E2 | 010B | MOV | B220 | DL,20 |
14E2 | 010D | INT | CD21 | 21 |
14E2 | 010F | MOV | 88DA | DL,BL |
14E2 | 0111 | INC | FEC2 | DL |
14E2 | 0113 | LOOP | E2F2 | 0107 |
14E2 | 0115 | INT | CD20 | 20 |
TABEL REGISTER
Alamat | INSTRUKSI | ||||||
Segmen | Offset | AX | BX | CX | DX | SP | IP |
14E2 | 0102 | 0200 | 0000 | 0000 | 0000 | FFEE | 0102 |
14E2 | 0105 | 0200 | 0000 | 001A | 0000 | FFEE | 0105 |
14E2 | 0107 | 0200 | 0000 | 001A | 0041 | FFEE | 0107 |
Contoh Program 7 :
MOV AH,02
MOV CX,1A
MOV DL,41
INT 21
PUSH DX
MOV DL,20
INT 21
POP DX
INC DL
LOOP 107
INT 20
TABEL INSTRUKSI
Alamat | Instruksi | Opcode | Keterangan | |
Segmen | Offset | |||
14E2 | 0100 | MOV | B402 | AH,02 |
14E2 | 0102 | MOV | B91A00 | CX,001A |
14E2 | 0105 | MOV | B241 | DL,41 |
14E2 | 0107 | INT | CD21 | 21 |
14E2 | 0109 | PUSH | 52 | DX |
14E2 | 010A | MOV | B220 | DL,20 |
14E2 | 010C | INT | CD21 | 21 |
14E2 | 010E | POP | 5A | DX |
14E2 | 010F | INC | FEC2 | DL |
14E2 | 0111 | LOOP | E2F4 | 0107 |
14E2 | 0113 | INT | CD20 | 20 |
TABEL REGISTER
Alamat | INSTRUKSI | ||||||
Segmen | Offset | AX | BX | CX | DX | SP | IP |
14E2 | 0102 | 0200 | 0000 | 0000 | 0000 | FFEE | 0102 |
14E2 | 0105 | 0200 | 0000 | 001A | 0000 | FFEE | 0105 |
14E2 | 0107 | 0200 | 0000 | 001A | 0041 | FFEE | 0107 |