Anda di halaman 1dari 10

LAPORAN PRAKTIKUM MIKROKONTROLER DAN MIKROPROSESOR BAHASA ASSAMBLER 1

OLEH :

KELOMPOK NAMA NO BP PARTNER KELAS PRODI JURUSAN

:2 : TAUFIK ALMIZAN : 1001082021 : RIZKI MUCHTAR : TK 2B : TEKNIK KOMPUTER : TEKNOLOGI INFROMASI

POLITEKNIK NEGERI PADANG 2011/2012

LAPORAN PRAKTIKUM 1 BAHASA ASSEMBLER 1


A. DASAR TEORI 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 suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM. 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 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 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 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 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) B. ALAT DAN BAHAN Alat-alat yang digunakan adalah 1. PC 2. Utility Debug

Langkah kerja : a. Buka command prompt komputer, start run dan ketikkan cmd

b. Lalu masuk ke command program dengan ketik DEBUG:

c. Lalu ketik A untuk memulai membuat program:

d. Kemudian membuat program untuk mencetak huruf A sebanyak 5 kali e. Coding nya seperti di bawah ini:
MOV CX,05 MOV AH,02 MOV DL,41 INT 21 LOOP 0103 INT 20

Enter 2 kali

f. Ketik G untuk melihat output program:

Keterangan: Mov cx,05 ; untuk mengisi register cx dengan 05 H Mov ah,02 ; untuk mengisi register ah dengan service number dari int 21 untuk mencetak 1 huruf pada layar. Mov dl,41; untuk mengisi register dl dengan 41 yang merupakan Kode ASCII dari huruf A Int 21 ; perintah mencetak Int 20 ; perintah untuk menghentikan program

g. Ketik U 100 L 0D(lihat bit awal dari alamat akhir program)

Tabel 1. Tabel Instruksi ALAMAT SEGMEN OFFSET 138B 0100 138B 0103 138B 0105 138B 0107 138B 0109 138B 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 Register CX diisi 05H Untuk mencetak Mengisikan Kode A Cetak Perulangan pada 0103 Menghentikan program

h. Untuk melihat isi register ketik T (Trace)

Tabel 2. Isian Register ALAMAT SEGMEN OFFSET 138B 0103 138B 0105 138B 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

Pertanyaan: 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 secara khusus pada operasi looping dimana register ini
menentukan berapa banyaknya looping yang akan terjadi.

Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit. 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.

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 a. Program asembler berisikan perintah-perintah untuk mencetak, mengisikan kode, perulangan (loop) dan untuk memberhentikan program b. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand.

c. 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

Referensi 1. Lukito, Ediman, 1982, Dasar-dasar Pemrograman Dengan Assambler 8088, PT Elex Media Komputindo, Jakarta 2. Mulyono, Heri, 2005, Diktat Kuliah Bahasa Rakitan, STMIK Jaya Nusa, Padang 3. Partoharsodjo, Hartono, 1991, Tuntunan Praktis Pemrograman Bahasa Assembly, PT Elex Media Komputindo, Jakarta 4. Wikipedia, pemograman bahasa assembly

Anda mungkin juga menyukai