MENCETAK KARAKTER
DISUSUN
OLEH:
NAMA : ISNANI
NIM : 1957301025
KELAS : TI 1.C
DOSEN PEMBIMBING : AZHARI, S.T,. M.T.
TUJUAN
1. Mahasiswa mampu melakukan pemrograman assembly menggunakan Turbo Assembler
2. Mahasiswa mampu membuat program assembly untuk mencetak huruf , kalimat, dan
angka
DASAR TEORI
Proses pencetakan huruf, kalimat, atau angka pada bahasa assembly secara umum
memanfaatkan interupsi dos. Untuk mencetak sebuah kalimat maka dipergunakan INT 21h
dengan kode servis 9 dengan ketentuan sebagai berikut :
1. Register AH diisi dengan 09h
2. Register DS:DX diisi dengan alamat kalimat yang akan dicetak
3. Jalankan INT 21h
Untuk metode ini , maka secara default karakter $ akan dijadikan tanda akhir kalimat
yang akan dicetak.
Dalam implementasinya, akan sering dijumpai karakter kontrol. Karakter kontrol
merupakan karakter yang khusus untuk melaksanakan fungsi tertentu. Macamnya sebagai
berikut :
Tabel 1. Tabel Karakter Kontrol ASCII
Selain karakter kontrol tersebut, juga ada karakter kontrol lainnya, yang dipergunakan untuk
komunikasi komputer dengan periferalnya, antara lain :
Tabel 2. Tabel Karakter Kontrol ASCII Lengkap
Kode ASCII Nama
0 Null
1 Start of heading
2 Start of text
3 End of text
4 End of transmission
5 Enquiry
6 Acknowledge
7 Bel
8 Backspace
9 Horizontal tab
10 Line feed
11 Vertical tabulation
12 Form feed
13 Carriage return
14 Shift out
15 Shift in
16 Data link escape
17 Device control
18 Negative acknowledge (NACK)
19 Synchronous idle
20 End of transmission block
21 Cancel
22 End of medium
23 Substitute
24 Escape
25 File separator
26 Group separator
27 Record separator
28 Unit separator
29 Spasi
30 Delete
Mencetak kalimat juga bisa menggunakan atribut seperti pada pencetakan huruf.
Interupsi yang dipergunakan yaitu INT 10h dengan langkah sebagai berikut :
1. Register AX diisi dengan 1300h
2. Register BL diisi dengan atribut yang diinginkan
3. Register BH diisi dengan halaman tampilan
4. Register DL diisi dengan posisi X kalimat akan ditampilkan
5. Register DH diisi dengan posisi Y kalimat akan ditampilkan
6. Register CX diisi dengan panjang kalimat yang akan ditampilkan
7. Register ES:BP diisi alamat kalimat yang akan dicetak
8. Jalankan INT 10h
Pengaturan atribut yang diinginkan dapat dilihat seperti pada tabel berikut :
Tabel 3. Atribut Kalimat
Mencetak angka untuk bahasa assembly tidak semudah pada bahasa tingkat tinggi.
Hal ini dikarenakan tidak ada fungsi khusus yang dapat digunakan. Misal ingin cetak angka 2,
maka kita harus mencari nilai kode ASCII-nya yaitu 32h baru bisa dicetak ke layar. Cara yang
sering digunakan adalah dengan melakukan pembagian bertingkat dengan 10. Pembagian
memanfaatkan register AX dan BX, untuk selanjutnya hasil pembagian disimpan ke stack
pointer. Setelah pembagian selesai maka data di stack pointer dikonversi ke ASCII dan
ditampilkan ke layar.
KESELAMATAN KERJA
1. Praktikum hanya dapat dilakukan atas petunjuk dosen pengasuh atau instruktur.
2. Pastikan semua peralatan dalam keadaan baik sebelum dan sesudah melakukan
praktikum serta menjaga semua peralatan yang digunakan.
3. Perlu mematuhi semua peraturan yang berlaku dalam laboratorium yang digunakan
PROSEDUR PERCOBAAN
1. Mencetak kalimat
Tuliskan program berikut ini pada text editor dan simpan sebagai file kal00.asm pada folder
yang sama dengan tasm.exe.
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Program : kal00.asm ;
; Fungsi : Mencetak kalimat ;
; dengan Int 21 servis 9 ;
;=====================================;
.Model Small
.Code
ORG 100h
Kalimat :
JMP Proses
Kal0 db 'PROSES PENCETAKAN STRING ',13,10,'$'
Kal1 db 'DIBELAKANG TANDA $ TIDAK BISA DICETAK '
Proses:
MOV AH,09h ; Servis ke 9
MOV DX,OFFSET Kal0; Ambil Alamat Offset Kal0
INT 21h ; Cetak perkarakter sampai tanda $
LEA DX,Kal0 ; Ambil Alamat Offset Kal0
INT 21h ; Cetak perkarakter sampai tanda $
LEA DX,Kal0+7 ; Ambil Alamat Offset KAl0+7
INT 21h ; Cetak perkarakter sampai tanda $
LEA DX,KAL1 ; Ambil Offset kal1
INT 21h ; Cetak perkarakter sampai ketemu $
INT 20h ; Selesai, kembali ke DOS
End Kalimat
Kalimat :
JMP Proses
Kal0 db ' Menulis kalimat dengan Atributnya '
Proses:
MOV AX,1300h ; Servis 13h subfungsi 00
MOV BL,10010101b ; Atribut tulisan
MOV BH,00 ; Halaman tampilan 0
MOV DL,20 ; Posisi X
MOV DH,12 ; Posisi Y
MOV CX,35 ; Banyaknya karakter dalam string
LEA BP,Kal0 ; ES:BP alamat string
INT 10h ; Cetak kalimat !
INT 20h ; Selesai, kembali ke DOS
End Kalimat
b. Ubah nilai BL menjadi : 65, 128, 180, 200, 255, 0 dan amati yang terjadi
c. Ubah nilai DL dan DH lalu amati apa yang terjadi pada tulisan di layar Anda
BORANG DATA
Jalankan instruksi berikut ini, jelaskan maksud dari instruksi tersebut, sebutkan mode
pengalamatannya dan lihat isi register atau memori
1
2
2. Dari hasil percobaan yang dilakukan, buat kesimpulan dari masing-masing percobaan
di atas.
HASIL PERCOBAAN
1. Mencetak kalimat
Coding :
Hasil :
Analisis:
• .Model Small : Tanda directive ini digunakan untuk memberitahukan kepada
assembler bentuk memory yang digunakan oleh program kurang dari ukuran 1 segment
atau 64 KB.
• .Code : Tanda directive ini digunakan untuk memberitahukan kepada assembler
bahwa kita akan mulai menggunakan Code Segment-nya.
• ORG 100h : Perintah ini digunakan untuk memberitahukan assembler supaya
program pada saat dijalankan(diload ke memory) ditaruh mulai pada offset ke 100h(256)
byte.
• Kalimat : Pemberian label dengan nama Kalimat.
• JMP Proses : Perintah JUMP yang membuat program langsung lompat
mengeksekusi pernyataan yang ada di label Proses.
• Kal0 db : Mendefinisikan sebanyak 25 bytes untuk variabel Kal0 dengan
kalimat yang akan dicetak.
• Kal1 db : Mendefinisikan sebanyak 36 bytes untuk variabel Kal1 dengan
kalimat yang akan dicetak.
• Proses : Pemberian label dengan nama Proses.
• MOV AH, 09h : Service untuk mencetak kalimat atau string.
• MOV DX, OFFSET Kal0 : Mengisi register DX dengan alamat offset dari variabel
Kal0 yang akan dicetak.
• INT 21h: Mencetak perkarakter yang ada di register DX sampai tanda $.
• LEA DX, Kal0 : Mengisi register DX dengan alamat offset dari variabel Kal0 yang
akan dicetak.
• INT 21h: Mencetak perkarakter yang ada di register DX sampai tanda $.
• LEA DX, Kal0+7 : Mengisi register DX dengan alamat offset dari variabel Kal0+7
yang akan dicetak.
• INT 21h: Mencetak perkarakter yang ada di register DX sampai tanda $.
• LEA DX, Kal1 : Mengisi register DX dengan alamat offset dari variabel Kal1 yang
akan dicetak.
• INT 21h: Mencetak perkarakter yang ada di register DX sampai tanda $.
• INT 20h: Menandai akhir dari suatu program dan kembali ke DOS.
• End Proses : Menandai sebagai akhir pernyataan dalam label Proses.
Coding :
Hasil :
Analisis : Saat pendefinisian untuk variabel “KAL0” kita menambahkan tanda 13 dan 10.
Kedua tanda ini merupakan karakter kontrol untuk pindah baris(tanda 10) dan menuju
kolom 0(tanda 13). Pada akhir dari setiap kalimat yang ingin dicetak harus kita
tambahkan dengan karakter “$”. Karakter ini akan dipakai sebagai tanda akhir dari
kalimat.Karena karakter “$” dijadikan sebagai tanda akhir dari kalimat yang ingin dicetak,
maka pada proses pencetakan karakter yang kedua hanya kalimat tidak tercetak keluar,
karena terletak dibelakang tanda “$”.Dengan demikian, bila kita ingin mencetak kalimat
yang mengandung tanda”$”, harus digunakan fungsi yang lain, misalnya mencetak
kalimat dengan perkarakter melalui interupsi 21h.
Kesimpulan :
Hasil :
Analisis :
➢
Mengisi register BL dengan nilai 10010101b atau 95h dengan fungsi
untuk mengatur atribut tulisan, yaitu : warna tulisan biru kombinasi
merah warna gelap dengan warna dasar biru blink/kelap kelip.
Coding : 65
Hasil :
Analisis :
➢
Jika 65 diubah ke biner menjadi 0100 0001, yang berarti warna tulisan biru
gelap, dengan warna dasar merah tidak kelip-kelip.
Coding : 128
Hasil :
Analisis :
➢
Jika 128 diubah ke biner menjadi 1000 0000, yang berarti warna tulisan hitam
gelap, dengan warna dasar hitam kelip-kelip.
Coding : 180
Hasil :
Analisis :
➢
Jika 180 diubah ke biner menjadi 1011 0100, yang berarti warna tulisan merah
gelap, dengan warna dasar merah + hijau kelip-kelip.
Coding : 200
Hasil :
Analisis :
➢
Jika 200 diubah ke biner menjadi 1100 1000, yang berarti warna tulisan hitam
gelap, dengan warna dasar merah kelip-kelip.
Coding : 255
Hasil :
Analisis :
➢
Jika 255 diubah ke biner menjadi 1111 1111, yang berarti warna tulisan
kombinasi merah+hijau+biru terang, dengan warna dasar kombinasi
merah+hijau+biru kelip-kelip.
Coding : 0
Hasil :
Analisis :
➢
Jika 0 diubah ke biner menjadi 0000 0000, yang berarti warna tulisan hitam
gelap, dengan warna dasar hitam tidak kelip-kelip.
Coding : dl 65
Hasil :
Analisis :
Posisi tulisannya berubah kekanan di kolom 65
Coding : dl 120
Hasil :
Analisis :
Posisi tulisannya berubah kekanan di kolom 120
Coding : dh 12
Hasil :
Analisis :
Posisi tulisannya berubah ke kiri di baris 12
Coding : dh 20
Hasil :
Analisis:
Posisi tulisannya berubah ke kiri di baris 20
Kesimpulan :
MOV BL, ... fungsi untuk mengatur atribut tulisan, yaitu : warna tulisan
MOV DL, ... berfungsi mengisi register DL dengan nilai 20 yang berfungsi sebagai
koordinat (X) meletakkan karakter awal yang akan dicetak di kolom ke 20.
MOV DH, ... berfungsi mengisi register DH dengan nilai 12 yang berfungsi sebagai
koordinat (Y) meletakkan karakter awal yang akan dicetak di baris ke 12.