PRAKTEK MICROPROSESOR
PEMROGRAMAN ASSAMBLER 2
Oleh Kelompok II:
Ayu Berlianda Putri (1001083014)
Irhamul Hamdi (1001083018)
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)
Langkah
Kerja
A.
Mencetak sebuah kalimat
1. Buka notepad dan ketikkan program
di bawah ini:
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
2. Simpan program ini di D:\>cd TI (folder TI di directory
D),
jangan lupa untuk mengubah tipe file menjadi All File dan nama file dengan
ekstensi .asm.
3. Kemudian buka command prompt.
4. Pada command prompt ketik E:, itu
berfungsi untuk masuk ke direktori E, tempat menyimpan folder TI.
5. Selanjutnya ketikkan:
·
cd
TI
·
tasm
ham.asm
B. Input per huruf
1. Buka notepad dan ketikkan program
di bawah 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. Selanjutnya ketikkan:
·
cd
TI
·
tasm
ayu.asm
·
tlink
/t ayu
·
ayu
c. Input per kata dengan MOV AH,06
1. Buka notepad dan ketikkan program
di bawah ini:
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. Apabila program dijalankan, maka
hasilnya akan seperti di bawah ini:
Latihan
Membuat
password dengan 3 huruf nama sendiri:
Cara
1:
Ketikkan program berikut pada notepad.
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'
cmp al,'B'
cmp al,'C'
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
Cara 2:
Ketikkan
program berikut pada notepad:
Code_seg segment
Assume CS:Code_seg
Org 100h
Start: Jmp mulai
kata db 'masukkan password: $'
password db 'AYUBP'
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
Kesimpulan :
1. Dapat disimpulkan dari latihan
bahwa, apabila kita membuat password dengan menggunakan cara pertama, kita
harus memasukkan hurufnya satu persatu, apabila ada satu hruf saja yang
tinggal, maka password kita akan dinyatakan salah.
2. Sedangkan pada cara kedua, kita bisa
membuat password dengan satu kata, tetapi yang harus kita ingat adalah, apabila
kita salah memasukkan huruf atau kita salah menuliskan huruf besar dan
kecilnya, maka password kita juga akan dinyatakan salah.
Kak
BalasHapus