LAPORAN PRAKTIKUM ASSAMBLER

download LAPORAN PRAKTIKUM ASSAMBLER

of 20

Transcript of LAPORAN PRAKTIKUM ASSAMBLER

Laporan Praktikum 1_Nurfiah

2012

LAPORAN PRAKTIKUM MIKROKONTROLER dan MIKROPROSESOR PEMOGRAMAN ASSAMBLER 1

OLEH :

Kelompok Nama No Bp Partner Kelas

:: NURFIAH : 1001081019 : Hardas Agussa : TK 2 A

JURUSAN TEKNOLOGI INFORMASI PROGRAM STUDI TEKNIK KOMPUTER POLITEKNIK NEGERI PADANG 2011/2012

1

Laporan Praktikum 1_Nurfiah

2012

LAPORAN PRAKTIKUM 1 MIKROPROSESOR BAHASA ASSAMBLER A. DASAR TEORI Dalam bahasa assembler mempunyai 3 instruksi dasar, yaitu mnemonic (opcode), operan 1 dan operan2 serta komentar (jika diperlukan)

Mnemonic atau opcode adalah 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

Laporan Praktikum 1_Nurfiah

2012

Debug dan Interupt 1. Debug Debug adalah suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM. Perintah-perintah debug antara lain : a. Q (Quit) Mengembalikan ke dos prompt C> Debug -Q A> b. H (Hexa) Melaksanakan perintah penambahan dan pengurangan terhadap dua bilangan hexa C>Debug -H 2204 2012 4216 01F2 c. A (assambler) Perintah untuk menulis program assambler C>Debug -a 17C0:0100 mov ax,12 d. R(Register) Digunakan untuk mengetahui isi masing-masing register C>debug -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=17C0 ES=17C0 SS=17C0 CS=17C0 IP=0100 NV UP EI PL NZ NA PO NC 17C00:0100 B81200 mov ax,12

3

Laporan Praktikum 1_Nurfiah

2012

Perintah ini juga bisa untuk mengetahui atau memperbaharui isi register tertentu C>Debug rCX CX 0000 :0100 C>Debug rCX CX 0100 : e. N(Name) Perintah untuk membuat atau merubah nama file C>Debug -N D:Coba.com f. W(Writing) Menulis program dan data ke dalam disc C>Debug -w writing 0008 bytes g. G (Go) Menjalankan program (misal program cetak huruf A) C>Debug -G A Program terminated normally h. T(Trace) Menjalankan program perbaris dengan menampilkan register dipakai C>Debug -T

4

Laporan Praktikum 1_Nurfiah

2012

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=17C0 ES=17C0 SS=17C0 CS=17C0 IP=0100 NV UP EI PL NZ NA PO NC 17C00:0100 B81200 mov ax,12 i. 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]

2.

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: Register AH harus berisi service number dari Int 21h yang akan dijalankan (02h)

5

Laporan Praktikum 1_Nurfiah

2012

Register DL, harus berisi bilangan hexa dari karakter ASCII yang akan dicetak. 3. Instruksi-Instruksi Dasar Instruksi Pengalamatan MOV tujuan,asal (tujuan: register/memori, asal:angka/register/memori) Misal MOV AX,1234H (register AX diisi angka 1234 H) Instruksi Penjumlahan INC tujuan Misal INC DX (DX = DX+1) ADD tujuan,asal Misal ADD AX,1234 (AX=AX+1234H) Instruksi Pengurangan DEC tujuan Misal DEC AX (AX=AX-1) SUB tujuan,asal Misal SUB AX,1200H (AX = AX-1200H)

B. ALAT DAN BAHAN Alat-alat yang digunakan adalah 1. PC 2. Utility Debug

6

Laporan Praktikum 1_Nurfiah

2012

C. LANGKAH KERJA Membuat program dengan DEBUG.COM Program 1. 1. Pertama-tama klik menu START RUN CMD ketikkan DEBUG.

2. Dari layar DOS prompt yang muncul, tukar folder document and settings ke folder compiler untuk mikroprosessor 8088, seperti gambar dibawah ini.

3. Kemudian ketik debug (huruf besar dan kecil tidak berpengaruh)

4. Ketik A/a

7

Laporan Praktikum 1_Nurfiah

2012

5. Setelah itu tuliskan program dibawah ini. MOV AH,02,Enter MOV DL,41 Enter INT 21, Enter INT 20,Enter 2 kali Maka tertampil sebagai berikut

Keterangan program diatas yaitu: Mov ah,02 adalah untuk mengisi register AH dan mencetak 1 huruf. Mov dl,41 mengisi register dl dan 41 merupakan Kode ASCII dari huruf A Int 21 ; perintah untuk mencetak Int 20 perintah untuk menghentikan program.

6. Kemudian tulis g, untuk menjalankan program yang telah dibuat.

7. Untuk mengecek program perbaris ketikan huruf T.

B241 merupakan opcode dari perintah mov dl,41 8. Kemudian ketik T 2 kali, maka akan terlihat sebagai berikut

CD21 merupakan opcode dari perintah int 21

8

Laporan Praktikum 1_Nurfiah

2012

9. Untuk Keluar dari utiliti Debug dengan ketik Q

Program 2 : Melihat isi memori Langkah kerja : 1. Ketiklah program dibawah ini : MOV CX,05 ENTER MOV AH,02 ENTER MOV DL,41 ENTER INT 21 ENTER LOOP 0103 ENTER INT 20 ENTER 2 kali

2. Kemudian ketik g untuk menjalankan program.

Keterangan program: MOV CX,05 yaitu intruksi untuk perulangan sebanyak 5 kali MOV AH,02 yaitu instruksi untuk mencetak huruf. MOV DL,41 yaitu berisi intruksi bahwa yang akan dicetak yaii heksa 42 (A) INT 21 yaitu untuk menmjalankan program. LOOP 0103 yaitu perintah untuk mengulang mencetak huruf A. INT 20 yaitu untuk menghentikan program. 3. Kemudian Ketik U 100 L 0d dan isi tabel berikut

9

Laporan Praktikum 1_Nurfiah

2012

Tabel 1 Tabel Instruksi ALAMAT INSTRUKSI OPCODE B90500 B402 B241 CD21 E2F8 CD20 KETERANGAN

SEGMEN OFFSET 139C 0100 MOV CX,0005 139C 0103 MOV AH,02 139C 0105 MOV DL,41 139C 0107 INT 21 139C 0109 LOOP 0103 139C 010B INT 20 4. Gunakan perintah Trace (T)

Tabel 2 Isian Register ALAMAT SEGMEN OFFSET 139C 0103 139C 0105 139C 0107 REGISTER CX DX AX BX 0000 0000 0005 0000 0200 0000 0005 0000 0200 0000 0005 0041

SP FFEE FFEE FFEE

IP 0103 0105 0107

Operasi Aritmatika a. Program menampilkan huruf A s/d Z 1. Tulis program untuk menampilkan huruf A s/d Z berikut MOV CX,1A MOV DL,41 MOV AH,02 INT 21 INC DL LOOP 0105 INT 2010

Laporan Praktikum 1_Nurfiah

2012

Keterangan program: Mov cx, 1A yaitu perintah untuk mengulang sebanyak 26 kali. Mov dl, 41 yaitu mencetak huruf A. Mov Ah, 02 yaitu untuk mencetak. Int 21 yaitu perintah untuk mencetak. Inc Dl yaitu perintah untuk menambahkan 1 untuk di cetak(41 + 1=42 yaitu huruf B) dan seterusnya. Loop 0105 yaitu perintah perulangan. Int 20 yaitu perintah untuk menghentikan program. 2. Kemudian ketikkan U 100 L 0d

Tabel Instruksi ALAMAT SEGMEN 139C 139C 139C 139C 139C 139 OFFSET 0100 0103 0105 0107 0109 010B INSTRUKSI MOV CX, 001A MOV DL, 41 MOV AH, 02 INT 21 INC DL LOOP 0105 OPCODE B91A00 B241 B402 CD21 FEC2 E2F8 KETERANGAN

11

Laporan Praktikum 1_Nurfiah

2012Tabel Register

ALAMAT SEGMEN OFFSET 139C 0103 139C 0105 139C 0107 3. Tulis program berikut MOV CX,1A MOV DL,5A MOV AH,02 INT 21 INC DL LOOP 0105 INT 20

REGISTER CX DX AX BX 0000 0000 001A 0000 0000 0000 001A 0041 0200 0000 001A 0041

SP FFEE FFEE FFEE

IP 0103 0105 0107

Tabel Instruksi ALAMAT SEGMEN 139C 139C 139C 139C 139C 139C OFFSET 0100 0103 0105 0107 0109 010B INSTRUKSI MOV CX, 001A MOV DL, 5A MOV AH, 02 INT 21 INC DL LOOP 0105 OPCODE B91A00 B25A B402 CD21 FEC2 E2F8 KETERANGAN

12

Laporan Praktikum 1_Nurfiah

2012

Tabel Register ALAMAT SEGMEN OFFSET 139C 0103 129C 0105 139C 0107 . Operasi Lompat dan perbandingan Tulis program berikutMOV 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

REGISTER CX DX AX BX 0000 0000 001A 0000 0000 0000 001A 005A 0200 0000 001A 005a

SP FFEE FFEE FFEE

IP 0103 0105 0107

13

Laporan Praktikum 1_Nurfiah

2012

Tabel Instruksi ALAMAT SEGMEN 14AE 14AE 14AE 14AE 14AE 14AE OFFSET 0100 0103 0105 0108 010A 010C INSTRUKSI MOV BX, 0000 MOV DL, 41 MOV CX, 0003 MOV AH, 02 INC 21 LOOP 0108 OPCODE BB0000 B241 B90300 B402 CD21 E2FA KETERANGAN

14

Laporan Praktikum 1_Nurfiah

2012

Tabel Register ALAMAT SEGMEN OFFSET 14AE 0103 14AE 0105 14AE 0108 14AE 010A REGISTER CX DX 0000 0000 0000 0041 0003 0041 0003 0041

AX 0000 0000 0000 0200

BX 0000 0000 0000 0000

SP FFEE FFEE FFEE FFEE

IP 0103 0105 0108 010A

Operasi Stack 1. Tulis program berikutMOV 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

2. Ketikkan U 100 L 0d

15

Laporan Praktikum 1_Nurfiah

2012

Tabel Instruksi ALAMAT SEGMEN 139C 139C 139C 139C 139C 139C OFFSET 0100 0102 0105 0107 0109 010B INSTRUKSI MOV AH, 02 MOV CX, 001A MOV DL, 41 INT 21 MOV BL, DL MOV DL, 20 OPCODE B402 B91A00 B241 CD21 88D3 B220 KETERANGAN

Tabel Register ALAMAT SEGMEN OFFSET 139C 0102 139C 0105 139C 0107 3. Tulis program berikutMOV 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

REGISTER CX DX AX BX 0200 0000 0000 0000 0200 0000 001A 0000 0200 0000 001A 0041

SP FFEE FFEE FFEE

IP 0102 0105 0107

16

Laporan Praktikum 1_Nurfiah

2012

3. Ketikkan U 100 L 0d

Tabel Instruksi ALAMAT SEGMEN 139C 139C 139C 139C 139C 139C 139C OFFSET 0100 0102 0105 0107 0109 010A 010C INSTRUKSI MOV AH, 02 MOV CX, 001A MOV DL, 41 INT 21 PUSH DX MOV DL, 20 INT 21 OPCODE B402 B91A00 B241 CD21 52 B220 CD21 KETERANGAN

Tabel Register ALAMAT SEGMEN OFFSET 139C 0102 139C 0105 139C 0107 REGISTER CX DX AX BX 0200 0000 0000 0000 0200 0000 001A 0000 0200 0000 001A 0041

SP FFEE FFEE FFEE

IP 0102 0105 0107

17

Laporan Praktikum 1_Nurfiah

2012

D. KESIMPULAN Dari praktikum yang telah saya lakukan di labor, maka dapat saya simpulkan. Perintah MOV yaitu berfungsi untuk memindahkan sesuatu kedalam Register tertentu. Penrintah INC dan DEC yaitu berfungsi untuk penambahan dan penguragan. Perintah INT 21 untuk mencetak dan INT 20 untuk menghentikkan program. Perintah LOOP yaitu perintah yang digunakan untuk melakukan perulangan. E. TUGAS 1. Dari program-program yang sudah ditulis dan diuji apa fungsi dari register AX,BX,CX,DX,SP,IP,DS,SS,ES,CS Register AX, digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan. Register BX, digunakan untuk menunjukkan suatu alamat offset dari suatu segmen. Register CX, digunakan pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi. Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX,EBX,ECX dan EDX. Register CS(Code Segment) digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya. Register DS(Data Segment) biasanya digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen.

18

Laporan Praktikum 1_Nurfiah

2012

Register ES(Extra Segment), sesuai dengan namanya adalah suatu register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukkan suatu alamat di memory SS(Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack. register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya. Index Pointer Register ,Register IP berpasangan dengan CS(CS:IP) menunjukkan alamat dimemory tempat dari intruksi(perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit. Register SP(Stack Pointer) yang berpasangan dengan register segment SS(SS:SP) digunakan untuk mununjukkan alamat dari stack.

2. Apa yang bisa disimpulkan dari tabel 1.1 sampai dengan tabel terakhir : Perintah MOV yaitu berfungsi untuk memindahkan sesuatu kedalam Register tertentu. Penrintah INC dan DEC yaitu berfungsi untuk penambahan dan penguragan. Perintah INT 21 untuk mencetak dan INT 20 untuk menghentikkan program. Perintah LOOP yaitu perintah yang digunakan untuk melakukan perulangan. 3. Buat program untuk menampilkan (1*1=1)138D:0100 MOV AH,02 138D:0102 MOV DL,31 138D:0104 INT 21 138D:0106 MOV AH,02 138D:0108 MOV DL,2A 138D:010A INT 21 138D:010C MOV AH,02 138D:010E MOV DL,31 138D:0110 INT 21

19

Laporan Praktikum 1_Nurfiah

2012

138D:0112 MOV AH,02 138D:0114 MOV DL,3D 138D:0116 INT 21 138D:0118 MOV AH, 02 138D:011A MOV DL, 31 138D:011C INT 21 138D:011E INT 20

20