>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