Mengenai Saya

Foto saya
hallooo... assalamualaikum... hehehe... perkenalkan nama saya Amelinda Putri. Biasanya di panggil Amel. sekarang si Amel ini lagi jadi mahasiswa di Politeknik Negeri Padang, jurusan TI, prodi Teknik Komputer. mau tau no BP nya??? boleh... no BP saya 1001082022. keren g??? keren g??? hehehe....

Kamis, 19 April 2012

Praktek Microprosessor : Assambler 2

Amelinda Putri (1001082022)
Partner : Yuharmafitri (1001082010)
TK2C, T. Komputer, T. Informasi

BAB 2
PEMROGRAMAN ASSAMBLER 2

2.1 Tujuan
Setelah melakukan praktikum ini diharapkan mahasiswa mampu:
1.      Membuat program assambler sederhana menggunakan text editor dengan compiler tasm sebagai compiler assambler (Turbo Assambler)
2.      Menjelaskan perbedaan pembuatan program berekstensi COM dan EXE
3.      Menjelaskan program percabangan, perbandingan dan pencetakan pada layar

2.2 Dasar Teori
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 menujuk lokasi memori tertentu dari suatu segment.
Penulisan Assume cukup dituliskan 1 segmen saja, yaitu
Assume 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   Alphabet
o   Angka
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
Variabel ini adalah 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)

2.3. Alat dan Bahan
Alat dan bahan (perangkat lunak) yang digunakan adalah
-          PC
-          Perangkat lunak Turbo Assambler
2.4 Pengujian
A. Kerja 1 Mencetak sebuah kalimat
1.  Buka text editor notepad atau masuk ke command prompt dan ketik edit lalu enter
2. Ketik program berikut
Code_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
3. 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 allfile.
4. Cara compile program
            Ketik D:\TI>tasm nama program.asm
           
                                                                      Gambar 2.1
Jika sudah tertampil seperti gambar 2.1 maka tidak terjadi kesalahan dalam penulisan program, kemudian lanjutkan ketik D:\TI>tlink /t nama program



                                                        Gambar 2.2
Jika sudah tertampil seperti gambar 2.2 maka proses compiling sudah selesai, cetak1.com siap dipanggil.

B. Input per Huruf
1. Ketik program berikut ini
Code_seg segment
        Assume CS:Code_seg
        Org 100h
Start: Jmp mulai
Tanya db 'Jawab pertanyaan di bawah ini!',13,10
      db 'Apakah anda seorang mahasiswa',13,10
      db 'Jawaban anda: $'
Jawab1 db 13,10,'Anda seorang mahasiswa',13,10,'$'
Jawab2 db 13,10,'Anda seorang artis',13,10,'$'

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
        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
2.      Compile program dan simpan

3. Ketik Program Berikut
Code_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
2.      Simpan program dan compile



5. Bandingkan output program 1 dan output program ke 2
C. Kerja 3 Input lebih dari 1 karakter
1. Ketik program berikut
Code_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

D. Menghapus Layar
1. Ketik Program berikut
Code_seg segment
   Assume CS:Code_seg
   Org 100h
Start:      mov ah,07h
   mov ch,00
   mov cl,00
   mov dh,50
   mov dl,1
   mov bh,07h
   int 10h
   int 20h
Code_seg Ends
   End Start

2.      Simpan dan Compile

3.      Jalankan program kemudian ubah program dengan mengganti nilai dh,dl
Bandingkan setiap outputnya dan apa yang bisa kalian simpulkan
4. Ketik Program berikut
Code_seg segment
            Assume CS:Code_seg
            Org 100h
Start: Jmp mulai
tampung dw ?
hitung  db ?
mulai:  mov cx,50
            mov ah,07h
ulang1:            push cx
ulang:
            mov cx,0000h
            mov dl,20
            mov dh,200
            mov bh,07h
            cmp ah,06h
            jne turun
            mov al,3
            jmp naik
turun:  mov al,2
naik:    push ax
            int 10h
hit:       inc hitung
ulang3:            inc tampung
            cmp tampung,0f000h
            jne ulang3
            cmp hitung,0001
            jne hit
            mov word ptr tampung,0000h
            pop ax
            cmp ah,06h
            je ulang2
            mov ah,06h
            pop cx
            loop ulang1
            jmp end1
ulang2: mov ah,07h
            jmp ulang
end1:   int 20h
Code_seg Ends
            End Start

5. Simpan dan Compile
      6. Jalankan program kemudian ubah program dengan mengganti nilai dh,dl


Bandingkan setiap outputnya dan apa yang bisa kalian simpulkan

E. Membuat Aplikasi Password
1. Ketik program di bawah ini
Code_seg segment
   Assume CS:Code_seg
   Org 100h

Start: jmp hapus
kunci db 'Masukkan Password : $'
betul db 13,10,'Password Anda Betul',13,10,'$'
salah db 13,10,'Password Anda Salah',13,10,'$'          
hapus:     mov ah,07h
   mov ch,00
   mov cl,00
   mov dh,56
   mov dl,100
   mov bh,07h
   int 10h

input:      mov ah,09h
   mov dx,offset kunci
   int 21h
   mov ah,01h
   int 21h
   cmp al,'A'
   je keluar
   mov ah,09h
   mov dx,offset salah
   int 21h
   loop input

keluar:    mov ah,09h
   mov dx,offset betul
   int 21h
   int 20h
  
Code_seg Ends
   End Start
2. Simpan dan compile

  
3. Ketik Program berikut
Code_seg segment
   Assume CS:Code_seg
   Org 100h
Start: Jmp mulai
kata db 'masukkan password: $'
password db 'cipto'
tampung db 6,?,6 dup(?)
kata1 db 13,10,'password anda salah ',13,10,13,10,'$'
kata2 db 13,10,'password anda benar ',13,10,13,10,'$'

mulai:     mov ah,09h
   mov dx,offset kata
   int 21h

   mov ah,0ah
   mov dx,offset tampung
   int 21h
  
   push ds
   pop es
   mov di,offset password
   mov si,offset tampung + 2
   mov cx,05h
   cld

ulang:     cmpsb
   jc salah
   loop ulang
   call betul
   int 20h
  
salah:      mov ah,09h
   mov dx,offset kata1
   int 21h
   jmp mulai

betul proc
   mov ah,09h
   mov dx,offset kata2
   int 21h
   ret

Code_seg Ends
   End Start
4. Simpan dan compile

5. Bandingkan program 1 dan program 2 dan simpulkan
F. Mencetak Karakter Pada Posisi yang diinginkan
1. Ketik Program berikut
code_seg segment
   assume cs:code_seg
   org 100h
awal:      mov ah,06h
   mov cx,0
   mov dl,99
   mov dh,100
   mov al,0
   mov bh,07
   int 10h

   mov ah,02
   mov bh,0
   mov dh,1
   mov dl,1
   int 10h
  
   mov ah,09h
   mov al,41h
   mov bl,0ah
   mov cx,1
   mov bh,0
   int 10h

   mov ah,02
   mov bh,0
   mov dh,1
   mov dl,2
   int 10h

   mov ah,09h
   mov al,42h
   mov bl,0bh
   mov cx,1
   mov bh,0
   int 10h
   int 20h

code_seg ends
end awal
2. Simpan dan compile


3. Jalankan program
2.5 Pertanyaan
1.      Sebutkan beberapa interupt bios yang digunakan pada program dan jelaskan
INT 20h merupakan interrupt BIOS yang digunakan untuk video service
2.      Buat aplikasi untuk menampilkan 3 pilihan menu untuk menampilkan huruf A s/d Z, menampilkan angka 1 s/d 26 dan menampilkan huruf A s/d Z secara diagonal
2.6  Kesimpulan
1.      Penulisan angka 13,10,  berarti perintah untuk menekan enter.
2.      Pada output program1 dengan output program2 tentang menghapus layar, pebedaanya adalah :
·         Dh perintah dh maka tampilan yang sebelah kanan semuanya seperti error dan bergerak ke samping kanan
·         Dh : tidak bisa memulai baru dan harus keluar dari command prompt
·         Setelah perintah dh ditukar menjadi dl,maka tampilannya normal, tetapi pada bagian atas akan bergerak dari atas ke bawah dan tulisannya akan hilang baris ke baris menuju ke atas. Sampai semuanya hilang baru kita bisa memulai membuat program berikutnya.

2.7 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