Berlangganan via Email

.:exops weblog:.

Nov
25th

Tugas Bahasa Rakitan (Assembler)

Author: exops | Files under Asm, Kuliah

Soal :

Buat program untuk membandingkan hasil penjumlahan pada array yang mempunyai 3 buah bilangan, misal arraynya adalah data dengan nilai elemen array : 9, 11, 8
Bandingkan hasil penjumlahan elemen 1 dan 2 dengan elemen 2 dan 3. Kemudian cetak nilai elemen array, hasil penjumlahan, dan hasil perbandingan.

Output :

Nilai elemen array 1 = 9
Nilai elemen array 2 = 11
Nilai elemen array 3 = 8

Hasil Penjumlahan elemen 1 + 2 = 20
Hasil Penjumlahan elemen 2 + 3 = 19

Penjumlahan 1 > Penjumlahan 2

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
.model small
.code
org 100h
 
tdata : jmp proses1
 
	arr dw 9,11,8	;definisikan array dan isinya
	;array dideklarasikan dgn dw, sehingga lompatan antar array sebanyak 2 (byte)
 
	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,'Hasil Penjumlahan elemen 1 + 2 = $'
	teks5 db 13,10,'Hasil Penjumlahan elemen 2 + 3 = $'
	cmp1 db 13,10,'Hasil Penjumlahan elemen 1 > Hasil Penjumlahan elemen 2$'
	cmp2 db 13,10,'Hasil Penjumlahan elemen 1 = Hasil Penjumlahan elemen 2$'
	cmp3 db 13,10,'Hasil Penjumlahan elemen 1 < Hasil Penjumlahan elemen 2$'
 
proses1 :
	mov ah,09
	lea dx,teks1
	int 21h
 
	lea bx,arr 		; mencatat alamat efektif array ke dalam register bx
	mov ax,arr		; memasukkan array pertama ke dalam register ax, sehingga ax bernilai 9
 
	; cetak angka
	mov bx, 10
	xor cx,cx
 
ulang1 :
	xor dx,dx
	div bx
	push dx
	inc cx
	cmp ax,0		; bandingkan apakah ax sudah 0
	jne ulang1		; jika tidak, ulangi
 
cetak1 :
	pop dx
	add dl,'0'
	mov ah,02
	int 21h
	loop cetak1
 
proses2 :
	mov ah,09
	lea dx,teks2
	int 21h
 
	lea bx,arr 		; mencatat alamat efektif array ke dalam register bx
	mov ax,[bx+2]		; memasukkan array ke-2 ke dalam register ax, sehingga ax bernilai 11
 
	; cetak angka
	mov bx, 10
	xor cx,cx
 
ulang2 :
	xor dx,dx
	div bx
	push dx
	inc cx
	cmp ax,0		; bandingkan apakah ax sudah 0
	jne ulang2		; jika tidak, ulangi
 
cetak2 :
	pop dx
	add dl,'0'
	mov ah,02
	int 21h
	loop cetak2
 
proses3 :
	mov ah,09
	lea dx,teks3
	int 21h
 
	lea bx,arr 		; mencatat alamat efektif array ke dalam register bx
	mov ax,[bx+4]		; memasukkan array ke-3 ke dalam register ax, sehingga ax bernilai 8
 
	; cetak angka
	mov bx, 10
	xor cx,cx
 
ulang3 :
	xor dx,dx
	div bx
	push dx
	inc cx
	cmp ax,0		; bandingkan apakah ax sudah 0
	jne ulang3		; jika tidak, ulangi
 
cetak3 :
	pop dx
	add dl,'0'
	mov ah,02
	int 21h
	loop cetak3
 
proses4 :
	mov ah,09
	lea dx,teks4
	int 21h
 
	lea bx,arr 		; mencatat alamat efektif array ke dalam register bx
	mov ax,arr		; memasukkan array pertama ke dalam register ax, sehingga ax bernilai 10
	add ax,[bx+2]		; menambahkan ax dgn array ke-2, ax = ax + 11, sehingga ax bernilai 9 + 11 = 20
 
	; cetak angka
	mov bx, 10
	xor cx,cx
 
ulang4 :
	xor dx,dx
	div bx
	push dx
	inc cx
	cmp ax,0		; bandingkan apakah ax sudah 0
	jne ulang4		; jika tidak, ulangi
 
cetak4 :
	pop dx
	add dl,'0'
	mov ah,02
	int 21h
	loop cetak4
 
proses5 :
	mov ah,09
	lea dx,teks5
	int 21h
 
	lea bx,arr 		; mencatat alamat efektif array ke dalam register bx
	mov ax,[bx+2]		; memasukkan array ke-2 ke dalam register ax, sehingga ax bernilai 11
	add ax,[bx+4]		; menambahkan ax dgn array ke-3, ax = ax + 8, sehingga ax bernilai 11 + 8 = 19
 
	; cetak angka
	mov bx, 10
	xor cx,cx
 
ulang5 :
	xor dx,dx
	div bx
	push dx
	inc cx
	cmp ax,0		; bandingkan apakah ax sudah 0
	jne ulang5		; jika tidak, ulangi
 
cetak5 :
	pop dx
	add dl,'0'
	mov ah,02
	int 21h
	loop cetak5
 
proses6 :
	lea bx,arr 		; mencatat alamat efektif array ke dalam register bx
	mov ax,arr		; memasukkan array pertama ke dalam register ax, sehingga ax bernilai 10
	cmp [bx+4],ax		; bandingkan array ke-3 dgn ax
 
	JB Kecil		; jika ax < array ke-3
	JE Sama			; jika ax = array ke-3
	JA Besar		; jika ax > array ke-3
 
Kecil : 	
	lea dx,cmp1		; memasukkan cmp1 ke dalam register dx
	jmp cetak6		
 
Sama :
	lea dx,cmp2		; memasukkan cmp2 ke dalam register dx
	jmp cetak6
 
Besar :
	lea dx,cmp3		; memasukkan cmp3 ke dalam register dx
	jmp cetak6
 
cetak6 :
	mov ah,09
	int 21h
 
	int 20h
 
end tdata

2 responses. Wanna say something?

  1. Nur
    Nov 30, 2009 at 09:18:07
    #1

    Mantav…
    Tak ambil nggih mas eko…
    ^_^

  2. exops
    Dec 3, 2009 at 18:26:22
    #2

    @Nur – :hug Silahken diambil.. Ga usah bayar.. :-D

Post a Comment

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