OPERASI ARITMATIKA A. PENJUMLAHAN (ADD) 1. Contoh permasalahan penjumlahan yang melibat carry yang membutuhkan instruksi ADC dan INC adalah : 2000 + 2200= 4200 Programnya: a 100 mov ax, 2000 mov dx, 2200 adc al,dl DAA mov cl,al mov al,ah adc al,dh DAA mov ch,al int 20 HASIL OPERASI PENJUMLAHAN -T AX=2000 BX=0000 DI=0000 DS=13A1 ES=13A1 PO NC 13A1:0103 BA0022 -T AX=2000 BX=0000 DI=0000 DS=13A1 ES=13A1 PO NC 13A1:0106 10D0 -T AX=2000 BX=0000 DI=0000 DS=13A1 ES=13A1 PE NC 13A1:0108 27 -T AX=2000 BX=0000 DI=0000 DS=13A1 ES=13A1 PE NC 13A1:0109 88C1 -T AX=2000 BX=0000 DI=0000
CX=0000
DX=0000
SP=FFEE
SS=13A1
CS=13A1
IP=0103
MOV
BP=0000
SI=0000
NV UP EI PL NZ NA
DX,2200
CX=0000
DX=2200
SP=FFEE
SS=13A1
CS=13A1
IP=0106
ADC
BP=0000
SI=0000
NV UP EI PL NZ NA
AL,DL
CX=0000
DX=2200
SP=FFEE
SS=13A1
CS=13A1
IP=0108
BP=0000
SI=0000
NV UP EI PL ZR NA
DAA CX=0000
DX=2200
SP=FFEE
SS=13A1
CS=13A1
IP=0109
MOV CX=0000
BP=0000
SI=0000
NV UP EI PL ZR NA
CL,AL DX=2200
SP=FFEE
BP=0000
SI=0000
DS=13A1 ES=13A1 PE NC 13A1:010B 88E0 -T AX=2020 BX=0000 DI=0000 DS=13A1 ES=13A1 PE NC 13A1:010D 10F0 -T AX=2042 BX=0000 DI=0000 DS=13A1 ES=13A1 PE NC 13A1:010F 27 -T AX=2042 BX=0000 DI=0000 DS=13A1 ES=13A1 PE NC 13A1:0110 88C5 -T AX=2042 BX=0000 DI=0000 DS=13A1 ES=13A1 PE NC 13A1:0112 CD20
SS=13A1 MOV
CS=13A1
IP=010B
NV UP EI PL ZR NA
AL,AH
CX=0000
DX=2200
SP=FFEE
SS=13A1
CS=13A1
IP=010D
ADC
BP=0000
SI=0000
NV UP EI PL ZR NA
AL,DH
CX=0000
DX=2200
SP=FFEE
SS=13A1
CS=13A1
IP=010F
BP=0000
SI=0000
NV UP EI PL NZ NA
DAA CX=0000
DX=2200
SP=FFEE
SS=13A1
CS=13A1
IP=0110
MOV
BP=0000
SI=0000
NV UP EI PL NZ NA
CH,AL
CX=4200
DX=2200
SP=FFEE
SS=13A1
CS=13A1
IP=0112
INT
BP=0000
SI=0000
NV UP EI PL NZ NA
20
B. PENGURANGAN (SUB) 1. Contoh permasalahan pengurangan(subtraction) yang melibat carry : 4000– 1000 = 3000 Programnya: a 100 mov ax, 4000 mov dx, 1000 sub al,dl DAS mov cl,al mov al,ah SBB al,dh DAS mov ch,al int 20
HASIL OPERASI PENGURANGAN -T AX=4000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0103 NV UP EI PL NZ NA PO NC 13A1:0103 BA0010 MOV DX,1000 -T AX=4000 BX=0000 CX=0000 DX=1000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0106 NV UP EI PL NZ NA PO NC 13A1:0106 28D0 SUB AL,DL -T AX=4000 BX=0000 CX=0000 DX=1000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0108 NV UP EI PL ZR NA PE NC 13A1:0108 2F DAS -T AX=4000 BX=0000 CX=0000 DX=1000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0109 NV UP EI PL ZR NA PE NC 13A1:0109 88C1 MOV CL,AL -T AX=4000 BX=0000 CX=0000 DX=1000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=010B NV UP EI PL ZR NA PE NC 13A1:010B 88E0 MOV AL,AH -T AX=4040 BX=0000 CX=0000 DX=1000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=010D NV UP EI PL ZR NA PE NC 13A1:010D 18F0 SBB AL,DH -T
AX=4030 BX=0000 CX=0000 DX=1000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=010F NV UP EI PL NZ NA PE NC 13A1:010F 2F DAS -T AX=4030 BX=0000 CX=0000 DX=1000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0110 NV UP EI PL NZ NA PE NC 13A1:0110 88C5 MOV CH,AL -T AX=4030 BX=0000 CX=3000 DX=1000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0112 NV UP EI PL NZ NA PE NC 13A1:0112 CD20 INT 20 C. PERKALIAN (MUL) 1. Perdalam pemahaman tentang instruksi AAM dan buat kasus-kasus yang melibatkan instruksi AAM. Programnya: A100 MOV AX,0003 MOV BX,0003 MUL BX AAM INT 20 HASIL OPERASI PERKALIAN -T AX=0003 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0103 NV UP EI PL NZ NA PO NC 13A1:0103 BB0300 MOV BX,0003 -T AX=0003 BX=0003 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0106 NV UP EI PL NZ NA PO NC 13A1:0106 F7E3 MUL BX -T AX=0009 BX=0003 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=0108 NV UP EI PL NZ NA PO NC 13A1:0108 D40A AAM Hasil LSW MUL BX
Hasil LSW MUL BX
-T AX=0009 BX=0003 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=13A1 ES=13A1 SS=13A1 CS=13A1 IP=010A NV UP EI PL NZ NA PE NC 13A1:010A CD20 INT 20 D. PEMBAGIAN ( DIV atau MOD) 1. Perdalam pemahaman tentang instruksi AAD, dan buat kasus-kasus pembagian yang melibatkan instruksi AAD a100 mov ah,04 mov al,02 aad mov cl,8 div cl Int 20 HASIL OPERASI PEMBAGIAN -T AX=0400 BX=0000 DI=0000 DS=13A1 ES=13A1 PO NC 13A1:0102 B002 -T
CX=0000
DX=0000
SP=FFEE
SS=13A1
CS=13A1
IP=0102
AX=0402 DI=0000
CX=0000
BX=0000
MOV
BP=0000
SI=0000
NV UP EI PL NZ NA
AL,02
DX=0000
SP=FFEE
BP=0000
SI=0000
DS=13A1 ES=13A1 PO NC 13A1:0104 D50A -T
SS=13A1
CS=13A1
AX=002A BX=0000 DI=0000 DS=13A1 ES=13A1 PO NC 13A1:0106 B108 -T
CX=0000
DX=0000
SP=FFEE
SS=13A1
CS=13A1
IP=0106
AX=002A BX=0000 DI=0000 DS=13A1 ES=13A1 PO NC 13A1:0108 F6F1
CX=0008
DX=0000
SP=FFEE
SS=13A1
CS=13A1
IP=0108
NV UP EI PL NZ NA
AAD
MOV
BP=0000
SI=0000
NV UP EI PL NZ NA
DIV
CL,08
BP=0000
SI=0000
NV UP EI PL NZ NA
CL
SISA Hasil BAGI DIV,BX
Hasil BAGI DIV,BX -T AX=0205 BX=0000 DI=0000 DS=13A1 ES=13A1 PO NC 13A1:010A CD20
IP=0104
CX=0008
DX=0000
SP=FFEE
SS=13A1
CS=13A1
IP=010A
INT
20
BP=0000
SI=0000
NV UP EI PL NZ NA
TUGAS 1. Buat Prosedur Penjumlahan untuk kasus berikut dimana data dan hasil disimpan pada alamat offset 500 ! Jika program anda benar maka buktikan bahwa: 91ed+bf50 =1513d Jawab : Programnya : a100 mov ax,91ed mov bx,bf50 mov [500],ax add ax,bx int 20 OPERASI ARITMATIKA : -t AX=91ED BX=0000 DI=0000 DS=1372 ES=1372 PO NC 1372:0103 BB50BF -t AX=91ED BX=BF50 DI=0000 DS=1372 ES=1372 PO NC 1372:0106 A30005 DS:0500=0000 -t AX=91ED BX=BF50 DI=0000 DS=1372 ES=1372 PO NC 1372:0109 01D8
CX=0000
DX=0000
SP=FFEE
SS=1372
CS=1372
IP=0103
MOV
BP=0000
SI=0000
NV UP EI PL NZ NA
BX,BF50
CX=0000
DX=0000
SP=FFEE
SS=1372
CS=1372
IP=0106
MOV
BP=0000
SI=0000
NV UP EI PL NZ NA
[0500],AX
CX=0000
DX=0000
SP=FFEE
SS=1372
CS=1372
IP=0109
ADD
BP=0000
SI=0000
NV UP EI PL NZ NA
AX,BX
Hasil Perintah ADD AX,BX -t AX=1513D BX=BF50 CX=0000 DX=0000 SP=FFEE DI=0000 DS=1372 ES=1372 SS=1372 CS=1372 IP=010B PO CY 1372:010B CD20 INT 20
BP=0000
SI=0000
OV UP EI PL NZ NA
2. Rakitlah program penjumlahan bilangan BCD yang memenuhi persaman berikut : 1250 + 375 = 1625 Hasil BCD
AX=1216 DI=0000 DS=1380 NC
BX=0000 ES=1380
1380:0112 CD20
CX=1625 SS=1380
DX=0375 CS=1380
INT
SP=FFEE
IP=0112
BP=0000
SI=0000
NV UP EI PL NZ NA PO
20
JAWAB : a 100 mov ax,1250 mov dx,375 adc al,dl DAA mov cl,al mov al,ah adc al,dh DAA mov ch,al int 20 3. Rakit program assembly dilayar debug untuk menampilkan semua lambang yang kode ASCII mulai dari 00-FF dilayar monitor ! Buktikan hasil tampilan program anda seperti berikut : a 100 mov cx,100 mov ah,2 mov dl,00 int 21 inc dl loop 107 int 20 Maka hasilnya adalah sebagai berikut : ☺☻♥♦♣ ♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&'()*+,-. /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] ^_`abcdefghijklmnopqrstuvwxyz{|} ~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡ «»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌ █▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙∙√ⁿ²
4. Rakitlah dan eksekusi dengan perintah g program berikut dan amati hasilnya ! lalu
berikan komentar anda ! minimal anda tuliskan guna program itu. Mov cx,1a Mov ah,2 Mov dl,41 Int 21 Inc dl Loop 107 Int 20 Jawab : Mov cx, 1a [isi cx dengan 1a (maksudnya adalah isi cx untuk 26 karakter)] Mov ah, 2 [isi reg ah dengan 2] Mov dl,41 [isi reg dl dengan kode ascii 41 (A)] Int 21 Inc dl
[increment dl]
Loop 107
[ lanjutkan output tanpa jump]
Int 20 [end program] Program ini berguna untuk memanggil code ASCII yang di mulai pada ‘dl’ yaitu huruf A dan dibatasi hingga 26 karakter yaitu pada cx, 1a maka hasil program ini adalah menampilkan huruf kapital yang dimulai dari A-Z berdasarkan code ASCII yang diminta yaitu (ABCDEFGHIJKLMNOPQRSTUVWXYZ) 5. Rakitlah program asssembly di layar debug menampilkan hal-hal berikut: a. Menampilkan huruf abjad dari a-z a 100 mov cx,1a mov ah,2 mov dl,61 int 21 inc dl loop 107 int 20 Hasilnya adalah sebagai berikut: abcdefghijklmnopqrstuvwxyz
b. Menampilkan huruf abjad dari z-a a 100 mov cx,1a mov ah,2 mov dl,7a int 21 dec dl loop 107 int 20
Hasilnya adalah sebagai berikut: zyxwvutsrqponmlkjihgfedcba c. Menampilkan huruf abjad dari Z-A a 100 mov cx,1a mov ah,2 mov dl,5a int 21 dec dl loop 107 int 20
Hasilnya adalah sebagai berikut: ZYXWVUTSRQPONMLKJIHGFEDCBA d. Menampilkan angka 0-9 a 100 mov cx,0a mov ah,2 mov dl,30 int 21 inc dl loop 107 int 20
Hasilnya adalah sebagai berikut:
0123456789
e. Menampilkan angka 9-0 a 100 mov cx,0a mov ah,2 mov dl,39 int 21 dec dl loop 107 int 20
Hasilnya adalah sebagai berikut:
9876543210
f. Menampilkan huruf abjad dari K-S a 100 mov cx,09 mov ah,2 mov dl,4b int 21 inc dl loop 107 int 20
Hasilnya adalah sebagai berikut:
KLMNOPQRS
g. Menampilkan huruf abjad dari m-d a 100 mov cx,0a mov ah,2 mov dl,6d int 21 dec dl loop 107 int 20
Hasilnya adalah sebagai berikut:
mlkjihgfed
6. Rakitlah program assembly di layar debug menampilkan hal-hal sbb: a. Menampilkan satu persatu huruf abjad dari a-z secara berurut A200 Push CX Push BP Mov BP,500 Mov CX,2000 LOOP 0208 Dec BP JNZ 0205 POP CX POP BP RET A100 Mov CX,D Mov ah,2 Mov dl,61 Int 21 Inc dl CALL 200 LOOP 107
Int 20
b. Menampilkan satu persatu angka dari 9-0 secara berurut A200 PUSH CX PUSH BP MOV BP,500 MOV CX,2000 LOOP 0208 DEC BP JNZ 0205 POP CX POP BP RET A100 Mov cx,5 Mov ah,2 Mov dl,39 Int 21 Dec dl CALL 200 LOOP 107 Int 20
7. Rakitlah dan eksekusi dengan perintah g program berikut dan buktikan hasil dari
persamaan 1250-375= 875 ! lalu berikan komentar anda ! minimal anda tuliskan arti sintag program baris demi baris a100 mov ax,1250 mov dx,375 sub al,dl
Buktika n : Hasil AX=1208 BX=0000 CX=0875 DX=0375 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1380
ES=1380 SS=1380 CS=1380 IP=0112 NV UP EI PL NZ AC PO NC CD20
INT
20 1380:0112
DAS mov cl,al mov al,ah SBB al,dh DAS mov ch,al int 20
JAWAB : A100 [menuju kealamat 100] Mov ax,1250 [isi ax dengan 1250] Mov dx,375 [isi dx dengan 375] Sub al,dl [kurangkan al dl] DAS [ubah hasil pengurangan dalam BCD] mov cl,al [isi cl al] mov al,ah [isi al ah] SBB al,dh [kurangi al dh dengan carry] DAS [convert/ubah hasil pengurangan ke BCD] mov ch,al [isi output ch al] int 20 [end program] ' komentar saya mengenai program ini adalah program’ ini merupakan program pengurangan yang menggunakan carry(limpahan). untuk melihat hasil program ini kita harus menambahkan beberapa program assembly yang bisa mengkonvert dan melihat hasil pengurangan dengan carry yaitu ‘SBB’ jika hanya menggunakan pengurangan (subtraction) biasa dengan menggunakan ‘SUB’ kita tidak akan mendapatkan