Anda di halaman 1dari 8

PRAKTIKUM MIKROPROSESOR DAN BAHASA RAKITAN

MENCETAK HURUF, KALIMAT, DAN ANGKA


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 !T
21h dengan kode ser"is # dengan ketentuan sebagai berikut $
1. %egister A& diisi dengan '#h
2. %egister ()$(* diisi dengan alamat kalimat yang akan dicetak
+. ,alankan !T 21h
Untuk metode ini , maka secara default karakter - akan di.adikan tanda akhir kalimat
yang akan dicetak.
(alam implementasinya, akan sering di.umpai karakter kontrol. /arakter kontrol
merupakan karakter yang khusus untuk melaksanakan fungsi tertentu. Macamnya sebagai
berikut $
Kode ASCII Nama Fungs
0 1el Memberikan suara beep
2 1ackspace Memindahkan kursor 1 kolom ke belakang
# &ori3ontal tab Memindah kursor 2 kolom ke kanan
1' 4ine feed Memindah kursor 1 kolom ke bawah
1+ 5arriage return Memindahkan kursor ke ke awal baris
Tabel 1. Tabel /arakter /ontrol A)5
)elain karakter kontrol tersebut, .uga ada karakter kontrol lainnya, yang dipergunakan
untuk komunikasi komputer dengan periferalnya, antara lain $
Kode ASCII Nama
' !ull
1 )tart of heading
2 )tart of te6t
1
+ 7nd of te6t
8 7nd of transmission
9 7n:uiry
; Acknowledge
0 1el
2 1ackspace
# &ori3ontal tab
1' 4ine feed
11 <ertical tabulation
12 =orm feed
1+ 5arriage return
18 )hift out
19 )hift in
1; (ata link escape
10 (e"ice control
12 !egati"e acknowledge >!A5/?
1# )ynchronous idle
2' 7nd of transmission block
21 5ancel
22 7nd of medium
2+ )ubstitute
28 7scape
29 =ile separator
2; @roup separator
20 %ecord separator
22 Unit separator
2# )pasi
+' (elete
Tabel 1. Tabel /arakter /ontrol A)5 4engkap
Mencetak kalimat .uga bisa menggunakan atribut seperti pada pencetakan huruf.
nterupsi yang dipergunakan yaitu !T 1'h dengan langkah sebagai berikut $
1. %egister A* diisi dengan 1+''h
2. %egister 14 diisi dengan atribut yang diinginkan
+. %egister 1& diisi dengan halaman tampilan
8. %egister (4 diisi dengan posisi * kalimat akan ditampilkan
9. %egister (& diisi dengan posisi A kalimat akan ditampilkan
;. %egister 5* diisi dengan pan.ang kalimat yang akan ditampilkan
0. %egister 7)$1P diisi alamat kalimat yang akan dicetak
2. ,alankan !T 1'h
2
Pengaturan atribut yang diinginkan dapat dilihat seperti pada tabel berikut $
Barna dasar Barna tulisan
1it
ke
0 ; 9 8 + 2 1 '
!ama 14
>1link?
%
>%ed?
@
>@reen?
1
>1lue?

>ntensitas
warna?
%
>%ed?
@
>@reen?
1
>1lue?
Tabel +. Atribut /alimat
Mencetak angka untuk bahasa assembly tidak semudah pada bahasa tingkat tinggi. &al
ini dikarenakan tidak ada fungsi khusus yang dapat digunakan. Misal ingin cetak angka 2,
maka kita harus mencari nilai kode A)5Cnya yaitu +2h baru bisa dicetak ke layar. 5ara
yang sering digunakan adalah dengan melakukan pembagian bertingkat dengan 1'.
Pembagian memanfaatkan register A* dan 1*, untuk selan.utnya hasil pembagian
disimpan ke stack pointer. )etelah pembagian selesai maka data di stack pointer
dikon"ersi ke A)5 dan ditampilkan ke layar.
PROSEDUR PERCOBAAN
!" Men#e$a% %a&ma$
Tuliskan program berikut ini pada te6t editor dan simpan sebagai file kal''.asm pada
folder yang sama dengan tasm.e6e.
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Program : kal00.asm ;
; Fungsi : Mencetak kalimat ;
; dengan Int 21 servis 9 ;
;=====================================;
.Model Small
.Code
ORG 100h
Kalimat :
JMP Proses
Kal0 db 'PROSES PENCETAKAN STRNG '!1"!10!'#'
Kal1 db '$%E&AKANG TAN$A # T$AK %SA $CETAK '
Proses:
MO' A(!0)h ; Servis ke 9
MO' $*!O++SET Kal0 ; m!il lamat "##set $al0
NT ,1h ; %etak &erkarakter sam&ai tanda '
&EA $*!Kal0 ; m!il lamat "##set $al0
NT ,1h ; %etak &erkarakter sam&ai tanda '
&EA $*!Kal0-. ; m!il lamat "##set $l0()
NT ,1h ; %etak &erkarakter sam&ai tanda '
+
&EA $*!KA&1 ; m!il "##set kal1
NT ,1h ; %etak &erkarakter sam&ai ketemu '
NT ,0h ; Selesai* kem!ali ke +"S
E/d Kalimat
a. 1uka command prompt dos.
b. 5ompile program menggunakan tasm dengan perintah berikut $
tasm kal''
c. 4ingking file kal''.ob. menggunakan tlink dengan mengetikkan perintah berikut $
tlinkDt kal''
d. ,alankan file kal''.com dan amati yang ter.adi pada layar Anda.
e. Ubah nilai /al' dan /al1 sesuai dengan keinginan Anda dan lihat hasilnya
'" Men#e$a% %a&ma$ dengan a$()u$
a. Tulis source code program berikut ini pada te6t editor lalu compile ,linking, dan
.alankan hasilnya serta amati hasilnya dengan seksama.
;=============================================
; Program : kal01.asm ;
; Fungsi : Mencetak kalimat disertai ;
; atri!utn,a ;
;-----------------------------------------------;
; I./ 100 ;
;-----------------------------------------------;
; In&ut : ;
; 1 = 12000 ;
; 34 = tri!ut ;
; 35 = 5alaman tam&ilan ;
; +4 = Posisi 1 ;
; +5 = Posisi 6 ;
; %1 = Pan7ang kalimat8dalam karakter9;
; :S:3P = lamat a;al string ;
;=============================================;
.Model Small
.Code
ORG 100h
Kalimat :
JMP Proses
Kal0 db ' Me/0lis 1alimat de/2a/ Atrib0t/3a '
Proses:
MO' A*!1"00h ; Servis 120 su!#ungsi 00
MO' %&!10010101b ; tri!ut tulisan
MO' %(!00 ; 5alaman tam&ilan 0
MO' $&!,0 ; Posisi 1
MO' $(!1, ; Posisi 6
MO' C*!"4 ; 3an,akn,a karakter dalam string
&EA %P!Kal0 ; :S:3P alamat string
8
NT 10h ; %etak kalimat <
NT ,0h ; Selesai* kem!ali ke +"S
E/d Kalimat
b. Ubah nilai 14 men.adi $ ;9, 122, 12', 2'', 299, ' dan amati yang ter.adi
c. Ubah nilai (4 dan (& lalu amati apa yang ter.adi pada tulisan di layar Anda
'" Men#e$a% ang%a da&am )en$u% desma&
a. Tulis source code program berikut ini pada te6t editor lalu compile ,linking, dan
.alankan hasilnya serta amati hasilnya dengan seksama.
;============================================
; Program : angka01.ASM
; Fungsi : Mencetak angka yang bernilai
; antara 0 sampai 6555 !alam
; "ormat !esimal
;============================================
.Model Small
.Code
ORG 100h
TData :
JMP Proses
Test_Angka dw !!"! ; Angka yang akan !icetak
Proses:
MO# A$%Test_Angka ; A# = angka yang akan !icetak
MO# &$%10 ; $# = penyebut
$OR C$%C$ ; %# = 0
'lang :
$OR D$%D$ ; %ega& sisa bagi men'a!i pembilang
(
D(# &$ ; $agi angka yang akan !icetak
!engan 10
P'S) D$ ; Simpan sisa bagi !alam stack
(*C C$ ; %# !itamba& 1
CMP A$%0 ; Apaka& &asil bagi su!a& &abis )
J*+ 'lang ; *ika belum+ ulangi lagi (
Cetak :
POP D$ ; Ambil 1 angka yang !isimpan
ADD D,%-0- ; ,ba& angka tersebut !alam ko!e
AS%--
MO# A)%0. ; .o ser/is yang !ipergunakan
(*T .1h ; %etak angka tersebut
,OOP Cetak ; ulangi
(*T .0h
+nd TData
b. Ubah nilai Test_Angka ke +2, 9', 09,12+8,++889,12+89; dan amati apa yang ter.adi
9
*" Men#a( dan menam+&%an ang%a +(ma
a. Tulis source code program berikut ini pada te6t editor lalu compile ,linking, dan
.alankan hasilnya serta amati hasilnya dengan seksama.
Cetak_/lm Ma0ro /lm ; Macro untuk mencetak kalimat
MO# A)%01
,+A D$%/lm
(*T .1h
+ndM
CDes2mal Ma0ro Angka
,o0al 'lang% Cetak
MO# A$%Angka ; A# = angka yang akan !icetak
MO# &$%10 ; $# = penyebut
$OR C$%C$ ; %# = 0
'lang :
$OR D$%D$ ; %ega& sisa bagi men'a!i pembilang (
D(# &$ ; $agi angka yang akan !icetak !engan 10
P'S) D$ ; Simpan sisa bagi !alam stack
(*C C$ ; %# !itamba& 1
CMP A$%0 ; Apaka& &asil bagi su!a& &abis )
J*+ 'lang ; *ika belum+ ulangi lagi (
Cetak :
POP D$ ; Ambil 1 angka yang !isimpan
ADD D,%-0- ; ,ba& 1 angka !alam ko!e AS%--
MO# A)%0. ;
(*T .1h ; %etak angka tersebut
,OOP Cetak ; ulangi
+ndM
;================================================;
; Program : angka00.ASM ;
; Fungsi : Mencari !an menampilkan angka ;
; prima !ari 0 sampai 1000 ;
;================================================;
.Model Small
.Code
ORG 100h
TData :
JMP Awal
&atas dw 1000
Pr2ma dw 0
( dw .
J dw .
S3as2 d4 - 5-
)eader d4 1%1%1%-&2langan Pr2ma 1 sam3a2 1000 : -%1"%10
d4 1%1%1%-666666666666666666666666-%1"%10%10%-5-
Awal :
Cetak_/lm )eader
Proses :
MO# A$%&atas ; *ika bilangan yang !icek
CMP A$%( ; su!a& sama !engan $atas
J+ +72t ; maka selesai
8or( :
MO# J%. ; * untuk !ibagi ole& -
;
MO# Pr2ma%0 ; Prima = 1i!ak
8orPr2ma:
MO# A$%Pr2ma ;
CMP A$%0 ; Apaka& prima = 1i!ak )
J*+ Tam4ah( ; 'ika Prima = 2a+ lompat ke 1amba&-
MO# A$%( ;
CMP A$%J ; - = * )
J*+ T2dak ; *ika ti!ak sama+ lompat ke 1i!ak
CDes2mal ( ; %etak angka prima
Cetak_/lm S3as2 ; %etak spasi
MO# Pr2ma%1 ; Prima = 2a
JMP Tam4ahJ ; 3ompat ke 1amba&*
T2dak :
MO# D$%0 ;
MO# A$%( ;
MO# &$%J ;
D(# &$ ; $agi - !engan *
CMP D$%0 ; Apaka& sisa bagi=0)
J*+ Tam4ahJ ; *ika ti!ak sama lompat ke 1amba&*
MO# Pr2ma%1 ; Prima = 2a
Tam4ahJ :
(*C J ; 1amba& * !engan 1
JMP 8orPr2ma ; ,langi+ bagi - !engan *
Tam4ah( :
(*C ( ; 1amba& - !engan 1
JMP Proses ; ,langi %ek - = prima atau bukan
+72t :
(*T .0h
+nd TData
9. Menampilkan angka dalam bentuk heksadesimal
a. Tulis source code program berikut ini pada te6t editor lalu compile ,linking, dan
.alankan hasilnya serta amati hasilnya dengan seksama.
Cetak Ma0ro
MO# D,%Ta4el_)e79&$: ; MA%45 untuk
MO# A)%0. ; mencetak
(*T .1h ; &uru" ke $# pa!a tabel67e8
+ndM
;======================================================;
; Program : angka0.ASM ;
; Fungsi : Mencetak angka yang bernilai antara ;
; 0000 sampai 055 9FF&: !alam "ormat ;
; &e8a!esimal ;
;======================================================;
.Model Small
.Code
ORG 100h
TData :
JMP Proses
Ta4el_)e7 d4 -01.";!<=1A&CD+8-
Test_Angka d4 .!! ; Angka yang akan !icetak 055=FF&
Proses:
S'& &)%&) ; *a!ikan $7=0
0
MO# &,%Test_Angka ; $3 = angka yang akan !icetak
P'S) &$ ; Simpan angka tersebut
MO# C,%; ; Ambil ; bit tinggi !ari <
S)R &,%C, ; $3 untuk !icetak
Cetak ; %etak 1 angka &e8a tingginya
POP &$ ; Ambil angka yang !isimpan
A*D &,%08h ; Ambil ; bit ren!a& !ari <
Cetak ; $3 untuk !icetak
(*T .0h
+nd TData
2

Anda mungkin juga menyukai