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 |


