You are on page 1of 20

LAPORAN PRAKTIKUM MIKROPROSESSOR

O L E H
NAMA NO BP KELAS PRODI JURUSAN : ALFANDI MEMET : 100101005 : TK 2A : TEKNIK KOMPUTER : TEKNOLOGI INFORMASI

TEKNOLOGI INFORMASI POLITEKNIK NEGERI PADANG 2012

BAB 1 PEMROGRAMAN ASSAMBLER 1

1.1 Tujuan: Setelah melakukan praktikum ini diharapkan mahasiswa mampu 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 1.2 Dasar Teori: 1.2.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

1.2.2 Debug dan Interupt A. Debug DEBUG adalah alat bantu dalam perancangan peralatan berbasis mikro-prosesor, karena dapat mencapai tingkat perangkat keras yang paling dalam dari suatu komputer, misal menulis informasi ke dalam boot sector, direktori, FAT, menjalankan interupsi BIOS atau DOS. Hal-hal penting dalam Debug: Hanya mengenal dan selalu bekerja dengan bilangan-bilangan heksadesimal Bekerja dengan penunjukan ke alamat-alamat memori memakai format segment : offset Kemampuan mengakses daerah "very low level access" (software/hardware).Perintah-perintah debug antara lain : 1. Q (Quit) Mengembalikan ke dos prompt
C> Debug -Q A>

2. H (Hexa) Melaksanakan perintah penambahan dan pengurangan terhadap dua bilangan hexa
C>Debug -H 2204 2012 4216 01F2

3. A (assambler) Perintah untuk menulis program assambler


C>Debug -a 17C0:0100 mov ax,12

4. R(Register) Digunakan untuk mengetahui isi masing-masing register


C>debug -r
AX=0000 BX=0000 CX=0000 DX=0000 DS=17C0 ES=17C0 SS=17C0 CS=17C0 17C00:0100 B81200 mov ax,12 SP=FFEE IP=0100 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC

Perintah ini juga bisa untuk mengetahui atau memperbaharui isi register tertentu

C>Debug rCX CX 0000 :0100 C>Debug rCX CX 0100 :

5. N(Name) Perintah untuk membuat atau merubah nama file


C>Debug -N D:Coba.com

6. W(Writing) Menulis program dan data ke dalam disc


C>Debug -w writing 0008 bytes

7. G (Go) Menjalankan program (misal program cetak huruf A)


C>Debug -G A Program terminated normally

8. T(Trace) Menjalankan program perbaris dengan menampilkan register dipakai


C>Debug -T
AX=0000 BX=0000 CX=0000 DX=0000 DS=17C0 ES=17C0 SS=17C0 CS=17C0 17C00:0100 B81200 mov ax,12 SP=FFEE IP=0100 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC

9. U (Unsamble) Menampilkan list dari program yang sedang berjalan U[tempat awal program yang diinginkan]L[panjang program/1 byte akhir dari alamat akhir program]

B. Interupt (Int) Perintah ini merupakan pemanggilan subroutin yang sudah tersedia di memori komputer 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 COM. 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. C. 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) 1.3 Alat dan Bahan Alat-alat yang digunakan adalah 1. PC 2. Utility Debug 1.4 Pengujian A. Kerja 1 Menggunakan Debug.com LANGKAH KERJA Berikut adalah langkah- langkah untuk menjalankan sebuah program assembler pada command prompt adalah sebagai berikut : A. Pertama buka dulu jendela command prompt pada computer kita, B. Selanjutanya ketikan perintah DEBUG

1. Percobaan praktikum A. Untuk mencetak huruf A sampai dengan Z Mov cx,1a Mov dl,41 Mov ah,02 Int 21 Inc dl Loop 0105 Int 20 Dan tampilkan hasilnya:

B. Menampilkan Huruf Z ke A secarta berurutan Mov cx,1a Mov dl,5a Mov ah,02 Int 21 Dec dl Loop 0105 Int 20 Dan memampilkan hasil sebagai berikut:

Latihan :
Langkah Kerja : 1. Jika sudah berada di debug.com ulangi langkah 4 dan ketik program berikut, beri nama
MOV CX,05 MOV AH,02 MOV DL,41 INT 21 LOOP 0103 INT 20 Enter 2 kali

2. Lihat hasil program dengan ketikkan g 3. Kemudian Ketik U 100 L 0d dan isi tabel berikut

Tabel 1 Tabel Instruksi ALAMAT SEGMEN OFFSET 0AF2 0100 0AF2 0103 0AF2 0105 0AF2 0107 0AF2 0109 0AF2 010B INSTRUKSI Mov cx,0005 Mov ah,02 Mov dl,41 Int 21 Loop 0103 Int 20 OPCODE B90500 B402 B241 CD21 E2F8 CD20 KETERANGAN

4. Gunakan perintah Trace (T) dan isi tabel berikut Tabel 2 Isian Register ALAMAT SEGMEN OFFSET 0AF2 B402 REGISTER CX DX SP IP AX BX FFEE 0103 0000 0000 0005 0000

C . Operasi Aritmatika 1. Tulis program untuk menampilkan huruf A s/d Z berikut dan beri nama tambah1.com
MOV CX,1A MOV DL,41 MOV AH,02 INT 21 INC DL LOOP 0105 INT 20

2. Buat tabel seperti tabel 1. dan 2 Tabel 1. ALAMAT SEGMEN OFFSET 0AF2 0100 0AF2 0103 0AF2 0105 0AF2 0107 0AF2 0109 0AF2 010B INSTRUKSI Mov cx,1a Mov dl,41 Mov ah,02 Int 21 Inc dl Loop 0105 OPCODE B91A00 B241 B402 CD21 FEC2 E2F8 KETERANGAN

0AF2 0AF2

010D 010F

Int 20

Tabel 2. ALAMAT SEGMEN OFFSET 0AF2 0103 REGISTER CX DX SP IP AX BX FFEE 0103 0000 0000 001A 0000

3. Tulis program berikut dan beri nama kurang1.com


MOV CX,1A MOV DL,5A MOV AH,02 INT 21 INC DL LOOP 0105 INT 20

Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1. dan 2

Table 1 dan table 2 ALAMAT INSTRUKSI OPCODE KETERANGAN

SEGMEN 0AF2 0AF2 0AF2 0AF2 0AF2 0AF2

OFFSET 0100 0103 0105 0107 0109 010B

Mov cx,001A Mov dl,41 Mov ah,02 Int 21 Inc dl Loop 0105

B91A00 B241 B402 CD21 FEC2 E2F8

ALAMAT SEGMEN OFFSET

AX

BX

REGISTER CX DX SP

IP

D. Operasi Lompat dan perbandingan Tulis program berikut


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

Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1.dan 2

ALAMAT SEGMEN OFFSET 13A3 0100 13A3 0103 13A3 0105 13A3 0108 13A3 010A 13A3 010C 13A3 010E 13A3 0110 13A3 0112 13A3 0115 13A3 0117 13A3 0119 13A3 011B 13A3 011D 13A3 011F

INSTRUKSI MOV BX,0000 MOV DL,41 MOV CX,0003 MOV AH,02 INT 21 LOOP 0108 INT 0D INC DL CMP DL,5B JNZ 0105 MOV DL,0D MOV AH,02 INT 21 MOV DL,0A INT 21

OPCODE BB0000 B241 B90300 B402 CD21 E2FA CD0D FEC2 80FA5B 75EE B20D B402 CD21 B20A CD21

KETERANGAN

ALAMAT SEGMEN OFFSET 13A3 0103

REGISTER CX DX SP IP AX BX FFEE 0103 0000 0000 0000 0000

E. Operasi Stack 1. Tulis program berikut


MOV MOV MOV INT MOV MOV INT MOV AH,02 CX,1A DL,41 21 BL,DL DL,20 21 DL,BL

INC DL LOOP 107 INT 20

Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1. Dan 2

ALAMAT SEGMEN OFFSET


13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 0100 0102 0105 0107 0109 010B 010D 010F 0111 0113 0115 0117 0119 011B 011D

INSTRUKSI
MOV MOV MOV INT MOV MOV INT MOV INC INT ADD ADD ADD AH,02 CX,001A DL,41 21 BL,DL DL,20 21 DL,BL DL 20

OPCODE
B402 B91A00 B241 CD21 88D3 B220 CD21 88DA FEC2 E2F2 CD20 0000 0000 0034 00921300

KETERANGAN

LOOP 0107 [BX+SI],AL [BX+SI],AL [SI],DH

ADD [BP+SI+0013],DL

ALAMAT SEGMEN OFFSET 13A3 0102

REGISTER CX DX SP IP AX BX FFEE 0102 0200 0000 0000 0000

2. Tulis program berikut


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

Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1.dan 2

ALAMAT SEGMEN OFFSET


13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 13A3 0100 0102 0105 0107 0109 010A 010C 010E 010F 0111 0113 0115 0117 0119 011B

INSTRUKSI
MOV MOV MOV INT MOV INT POP INC INT INT ADD ADD ADD AH,02 CX,001A DL,41 21 DL,20 21 DX DL 20 20

OPCODE
B402 B91A00 B241 CD21 52 B220 CD21 5A FEC2 E2F4 CD20 CD20 0000 0000 0034

KETERANGAN

PUSH DX

LOOP 0107

[BX+SI],AL [BX+SI],AL [SI],DH

ALAMAT SEGMEN OFFSET 13A3 0102

REGISTER CX DX SP IP AX BX FFEE 0102 0200 0000 0000 0000

1.5. Pertanyaan 1. Dari program-program yang sudah ditulis dan diuji apa fungsi dari register AX,BX,CX,DX,SP,IP,DS,SS,ES,CS AX merupakan register yang menyimpan code program untuk mengisi program. BX merupakan register yang digunakan untuk menyimpan code operasi lompat dan perbandingan.

CX merupakan register yang menyimpan code perulangan dari program DX merupakan register yang menyimpan code object(karakter/kalimat) dari program. SP merupakan sebuah Segment IP , DS, SS , ES, CS merupakan sebuah offset 2. Apa yang bisa disimpulkan dari tabel 1.1 sampai dengan tabel terakhir yaitu ; a. Pada tabel intruksipada alamat segmentnya akan bernilai sama sedangkan alamat offsetnya melakukan perulangan dimana ada penambahan 2 bit untuk code program berikutnya. b. Pada tabel register hampir sama dengan table isian tegister diamana alamatnya bernilai tetap selama masih belum NOP saat di tracekan(T). c. Jika sudah NOP setelah di tracekan maka untuk alamat segmentnya akan lebih kecil sedangkan alamat OFFsetnya akan bernilai besar. d. Titiap code program yang difunakan mempunyai OPCODE yang beda-beda pada masing-masing code program yang digunakan. 3. Buat program untuk menampilkan 1*1 = 1

2*1 = 2

4. Buat program untuk menampilkan 1:1 = 1

2:1 = 2

KESIMPULAN :
Program assembler merupakan program yang mengguanakan perintah DEBUG yang bekerja pada DOS. Dalam program assembler, terdapat banyak intruksi dan fugnsi yang dapat digunaan untuk menampilkan karakter ataupun kalimat. Untuk menampilkan karakter atupun huruf kita perlu mengetahui ASCII dari karakter yang akan di tampilkan atau gunakan offset label untuk mencetak kalimat. Untuk mencetak program kita dapat menggunakan register dx.

You might also like