Pratikum Mikroprosesor "PEMROGRAMAN ASSAMBLER 2"
Nama :
DAVID MAULANA
BP :
1001081015
Nama Kelompok
Nama : HUTRILA AFDAL
BP : 1001081009
Nama : MAILENDRA YENTI
BP : 1001081001
1.
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. Langkah
Kerja
a. 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
3. Compile
program dan simpan
4. Maka dapat menampilkan hasil seperti dibawah :
b. Membuat
Aplikasi Password
1. Ketik program di bawah ini
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. maka memilik hasil seperti dibawah :
3.
Pertanyaan
Sebutkan
beberapa interupt bios yang digunakan pada program dan jelaskan ?
· Int 20h berguna
untuk memberhentikan proses computer terhadap suatu program COM.
·
Int 21h
digunakan untuk mencetak huruf ke sebuah computer.
4.
Analisa
Pada awal
penulisan program ditentukan oleh program .COM atau EXE. Penulisan .COM
pemberian Org 100h, merupakan awal mulai menulis program alamat 100h. Penulisan
Assume cukup dituliskan 1 segmen saja, yaitu
Assume
CS:Code_Seg
Dan diakhiri
dengan kode :
Code_Seg Ends
End
Start
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
5.
Kesimpulan
·
untuk
mengcompile program dengan perintah TASM dan TLINK adalah melihat proses
compile sudah selesai.
·
Besaran –
besaran variable 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)
·
Agar dapat
mempermudah penulisan, lebih baik tulis dengan notepad, kemudian masukkan
kedalam EDIT dan disimpan. Lakukan compile program dengan TASM dan TLINK untuk
melihar proses compile sudah selasai. Dan dapat melihat program
<namafileprogram>.COM
6.
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
Langganan:
Postingan (Atom)