Berlangganan via Email

.:exops weblog:.

Dec
14th

Contoh penggunaan Prosedur dalam bahasa Assembly

Author: exops | Files under Asm, Kuliah

Melanjutkan postingan sy beberapa waktu yang lalu tentang Tugas Bahasa Rakitan (Assembler).
Kali ini sy mencoba membuat listing program menjadi lebih sederhana, dengan penggunaan prosedur.
Prosedur digunakan untuk mewakili perintah-perintah yang berulang, misal perintah untuk cetak_kalimat dan cetak_angka
contohnya sbb :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
.model small
.code
org 100h
 
tdata : jmp proses
 
	arr dw 9,11,8
	a dw ?
 
	teks1 db 13,10,'Nilai Elemen Array 1 = $'
	teks2 db 13,10,'Nilai Elemen Array 2 = $'
	teks3 db 13,10,'Nilai Elemen Array 3 = $'
	teks4 db 13,10,'Penjumlahan 1 + 2 = $'
	teks5 db 13,10,'Penjumlahan 2 + 3 = $'
	cmp1 db 13,10,'Penjumlahan 1 > Penjumlahan 2$'
	cmp2 db 13,10,'Penjumlahan 1 = Penjumlahan 2$'
	cmp3 db 13,10,'Penjumlahan 1 < Penjumlahan 2$'
 
proses :
	lea dx,teks1
	call cetak_kalimat ;panggil prosedur cetak_kalimat
	lea bx,arr 		
	mov ax,arr	
	call cetak_angka ;panggil prosedur cetak_angka
 
	lea dx,teks2
	call cetak_kalimat
	lea bx,arr 		
	mov ax,[bx+2]
	call cetak_angka
 
	lea dx,teks3
	call cetak_kalimat
	lea bx,arr 		
	mov ax,[bx+4]
	call cetak_angka
 
	lea dx,teks4
	call cetak_kalimat
	lea bx,arr 		
	mov ax,arr		
	add ax,[bx+2]
	call cetak_angka
 
	lea dx,teks5
	call cetak_kalimat
	lea bx,arr 		
	mov ax,[bx+2]	
	add ax,[bx+4]
	call cetak_angka
 
	lea bx,arr 		
	mov ax,arr		
	add ax,[bx+2]
	mov a,ax
 
	mov dx,[bx+2]
	add dx,[bx+4]
	cmp dx,a
 
	JB Kecil		
	JE Sama			
	JA Besar		
 
Kecil :
	lea dx,cmp1		
	call cetak_kalimat
	jmp akhir
 
Sama :
	lea dx,cmp2		
	call cetak_kalimat
	jmp akhir
 
Besar :
	lea dx,cmp3		
	call cetak_kalimat
	jmp akhir
 
akhir : 
	int 20h
 
;Prosedur yang digunakan	
cetak_kalimat PROC NEAR ; prosedur cetak_kalimat
	mov ah,09
	int 21h
ret
endP
 
cetak_angka PROC NEAR ; prosedur cetak_angka
	mov bx, 10
	xor cx,cx
	ulang :
		xor dx,dx
		div bx
		push dx
		inc cx
		cmp ax,0		
		jne ulang
	cetak :
		pop dx
		add dl,'0'
		mov ah,02
		int 21h
	loop cetak
ret
endP
 
end tdata

Post a Comment

:D :P :-/ :)) =)) :(( B-) more »