Professional Documents
Culture Documents
O L E H
NAMA NO BP KELAS PRODI JURUSAN : ALFANDI MEMET : 100101005 : TK 2A : TEKNIK KOMPUTER : TEKNOLOGI INFORMASI
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
Perintah ini juga bisa untuk mengetahui atau memperbaharui isi register tertentu
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
Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1. dan 2
Mov cx,001A Mov dl,41 Mov ah,02 Int 21 Inc dl Loop 0105
AX
BX
REGISTER CX DX SP
IP
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
Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1. Dan 2
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
ADD [BP+SI+0013],DL
Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1.dan 2
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
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
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.