laporan ii praktikum mikroprosesor

Upload: colly-anggitya

Post on 19-Jul-2015

299 views

Category:

Documents


2 download

TRANSCRIPT

LAPORAN PRAKTIKUM II MIKROPROSESOR

Oleh

:

Nama Partner

: Colly Anggitya : Rio Andhiko Nurhuda

(1001081045) (1001081029) (1001081031)

Kelas

: TK II A

TEKNOLOGI INFORMASI POLITEKNIK NEGERI PADANG 2012

LANDASAN TEORIBahasa assembly dikategorikan sebagai bahasa tingkat rendah (low level languange). Ini untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine dependent. Untuk membandingkan bahasa mesin dan bahasa assembly, kita dapat melihatnya dari tiga karakteristik berikut : 1. Mnemonic operation code. Sebagai pengganti numeric operation code (opcodes) yang digunakan pada bahasa mesin, digunakankanlah mnemonic code pada bahasa assembly. Selain kemudahan dalam penulisannya dibandingkan dari bahasa mesin juga mendukung pelacakan kesalahan seperti kesalahan penulisan operation code.

2. Symbolic operand specification. Penamaan simbol diasosiasikan sebagai suatu data atau instruksi. Operand lebih menunjukkan symbolic reference dibandingkan dengan alamat mesin suatu data atau instruksi. Hal ini akan mempermudah pada saat harus dilakukan modifikasi program.

3. Declaration of data/storage area. Data dapat dinyatakan dalam notasi desimal. Ini dilakukan untuk mencegah konversi secara manual dari konstanta ke dalam representasi internal mesin. Sebagai contoh : -5 menjadi (11111010)2 atau 10.5 menjadi (41A80000)16 Suatu statement bahasa assembly mempunyai bentuk umum sebagai berikut : [Label] Menmonic OpCode Operand [operand]

Berikut instruksi-instruksi menurut fungsinya, yaitu : 1. Debug dan Interupt Debug

Debug adalah suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM. Perintah-perintah debug antara lain : Q (Quit) Mengembalikan ke dos prompt A (assambler) Perintah untuk menulis program assembler R(Register) Digunakan untuk mengetahui isi masing-masing register N(Name) Perintah untuk membuat atau merubah nama file W(Writing) Menulis program dan data ke dalam disc G (Go) Menjalankan program (misal program cetak huruf A) T(Trace) Menjalankan program perbaris dengan menampilkan register dipakai 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]

-

Interupt (Int)

Perintah yang 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 2. DOS Interrupt

2. Instruksi-Instruksi Dasar

1. Instruksi Pengalamatan MOV tujuan,asal, 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)

Secara umum struktur penulisan suatu segment dapat dilukiskan sebagai berikut: [Nama Segment] segment ASSUME CS:[Segment] DS:[Segment] SS:[Segment] ES:[Segment] Org 100h [label]: [Program ASM] [nama segment] ends End [label]

Penulisan awal program juga ditentukan oleh ekstensi program COM atau EXE. Pada Penulisan program .COM pemberian Org 100h, merupakan awal mulai menulis program pada alamat 100h. Hal ini hanya berlaku untuk program yang berektensikan com, karena 100h alamat sebelum digunakan untuk PSP (program segment prefiks). Disamping itu juga Org menunjuk lokasi memori tertentu dari suatu segment.

Penulisan Assume cukup dituliskan 1 segmen saja, yaituAssume CS:Code_Seg Tetapi bila menuliskan program .EXE, penulisan segmen harus benar-benar menunjukkan arah yang benar, contoh: Assume CS:Code_Seg DS:Data_Seg SS:Stack_Seg ES:0b800h Org 0h

Syarat Label: Harus unik Maksimal 31 karakter Karakter yang boleh digunakan: o AlphabetAngka o Tanda Dollar ($) o Tanda Tanya (?)

o Titik (.) o Tanda satuan (@) Bukan merupakan suatu perintah assambler Label hanya dapat didefinisikan satu kali dalam program

Mendefinisikan variabel Pada bahasa assambler, variabel dibagi menjadi 2 jenis: 1. variabel yang dapat dimodifikasi isinya 2. variabel yang tidak dapat dimodifikasi isinya Variabel yang dapat dimodifikasi isinya merupakan variabel yang memakan tempat pada memori. Adapun besaran-besaran variabel tersebut adalah DB (Define Byte), mendefinisikan variabel per Byte DW (Define Word), mendefinisikan variabel per Word (2 Byte) DD (Define Double Word) mendefinisikan variabel per 2 Word (4 Byte)

Tata penulisan variabel jenis ini adalah Label (DB/DW/DD) [Isi Variabel] Contoh Satu db Aku adalah anak gembala $ Dua db 1234h Tiga db 12h Variabel yang tidak dapat dimodifikasi isinya Variabel ini digunakan untuk menggantikan besaran tertentu dengan menggunakan kata equ dan variabel ini tidak menggunakan memori. Contoh penggunaan variabel ini adalah Satu equ 2190h Dua equ 2323h Int 21h service number 09h Interupt ini digunakan untuk mencetak suatu kalimat, dengan syarat-syarat sebagai berikut Masukkan service number interupt pada register AH Masukkan segment dari variabel tempat menampung kalimat yang akan dicetak ke register DS dan offsetnya ke register DX. Kalimat yang akan dicetak harus diakhiri dengan tanda $ (dollar)

PERCOBAAN1. Mencetak sebuah kalimat

Buka text editor notepad atau masuk ke command prompt dan ketik edit lalu enter

Ketik program berikutCode_Seg Segment Assume CS:Code_Seg Org 100h Start: jmp mulai Kata db Aku adalah mahasiswa TI,13,10 db sedang belajar bahasa assambler,13,10 db $ Mulai: mov dx,offset kata mov ah,09h int 21h int 20h Code_Seg Ends End Start

Simpan program ini di D:\>cd TI (folder TI di directory D) dengan ekstensi .asm, jika dalam notepad jangan lupa pada type file diubah ke all file.

Compile program dengan cara Ketik D:\TI>tasm nama program.asm

Lalu ketik D:\TI>tlink /t nama program

Lalu ketik nama program.com untuk menjalankannya

2.

Input per huruf

Ketik program berikut iniCode_seg segment Assume CS:Code_seg Org 100h Start: Jmp mulai Tanya db 'Jawab pertanyaan di db 'Apakah anda seorang db 'Jawaban anda: $' Jawab1 db 13,10,'Anda seorang Jawab2 db 13,10,'Anda seorang Mulai: mov ah,09h mov dx,offset Tanya int 21h Ulang: mov ah,01h int 21h cmp al,'y' je mahasiswa cmp al,'Y' je mahasiswa je artis

bawah ini!',13,10 mahasiswa',13,10 mahasiswa',13,10,'$' artis',13,10,'$'

cmp al,'t' jne Mulai artis: mov ah,09h mov dx,offset jawab2 int 21h jmp selesai mahasiswa: mov ah,09h mov dx,offset jawab1 int 21h selesai: int 20h

Code_seg Ends End Start

Simpan program ini di D:\>cd TI (folder TI di directory D) dengan ekstensi .asm, jika dalam notepad jangan lupa pada type file diubah ke all file.

Simpan dengan ekstensi .asm

Compile dan jalankan program sesuai langkah di atas

3. Ketikkan program berikut iniCode_seg segment Assume CS:Code_seg Org 100h Start: Jmp mulai Tanya db 'AWAS KOMPUTER ANDA RUSAK! $' Mulai: mov ah,09h mov dx,offset Tanya int 21h mov ah,06h mov dl, 0ffh xor al,al int 21h cmp al,'Q' je selesai cmp al,'q' jne Mulai selesai: int 20h Code_seg Ends End Start

Simpan dengan ekstensi .asm

Ulangi langkah seperti di atas

Berikut hasilnya

4. Ketikkan program berikutCode_seg segment Assume CS:Code_seg Org 100h

Start: Jmp mulai Tanya db 'Siapa nama anda ',13,10,'$' tampung db 20,?,20 dup(?) jawab db 13,10,'Nama Anda Adalah: $' Mulai: mov ah,09h mov dx,offset Tanya int 21h mov ah,0ah mov dx,offset tampung push dx int 21h mov bx,offset tampung inc bx mov dl,[bx] xor dh,dh inc bx add bx,dx mov dl,'$' mov [bx],dl mov dx,offset jawab mov ah,09h int 21h pop dx inc dx mov ah,09h int 21h int 20h Code_seg Ends End Start

Simpan dengan ekstensi .asm

Compile dan jalankan program

Sumber : Jobsheet praktikum mikroprosesor Politeknik Negeri Padang http://kuliah.dinus.ac.id/ika/asmb04.html http://Fkarmila.staff.gunadarma.ac.id http://sutondoscript.blogspot.com/2012/03/pengertian-definisi-teoribahasa.html