Pemrograman Bahasa Rakitan Perbandingan dengan CMP (Final - Listing Program)

;======================================
; SOALNYA ADALAH SEBAGAI BERIKUT :
;
; A = 21, B=4, C=5.  Syarat :
; 1. Jika A >= 20 dan B>C maka banyak putaran yang harus dilakukan adalah A*(B-C)
; 2. Jika B = C maka banyak putaran yang harus dilakukan adalah A
; 3. Jika B < C maka banyak putaran yang harus dilakukan A*(C-B).
;
;
; Program dimulai : Sabtu Legi, 19 November 2011 @16.25pm
; Program selesai : Minggu Pahing, 20 November 2011 @12.14pm
; by NUR AKHWAN => http://nur-akhwan.blogspot.com/
;=======================================


.MODEL SMALL
.CODE
ORG 100h
var: jmp Syarat1_1
BilA DW 21
BilB DW 4
BilC DW 5
Kal1 DB ' putaran terjadi pada Syarat 1, dan $'
Kal2 DB ' putaran terjadi pada Syarat 2 $'
Hasil1 DW ?
Hasil2 DW ?
; ======================
; Jika yang Pertama
; ======================
; Jika A>=20
Syarat1_1:
MOV AX,BilA      
CMP AX,20
JAE Syarat1_2
JMP Syarat2
; Jika B>C
Syarat1_2:
MOV AX, BilB
CMP AX, BilC
JA Hitung1
JMP Syarat2
; BilA * (BilB – BilC)
Hitung1:
MOV AX, BilA
MOV BX, BilB
SUB BX, BilC
MOV CX, AX
MUL BX
MOV Hasil1, CX
JMP Cetak1
; Jika B=C
Syarat2:
MOV AX, BilB
CMP AX, BilC
JE Hitung2
JMP Syarat3
; Hasil = BilA
Hitung2:
MOV AX, BilA
MOV Hasil1, AX
JMP Cetak1
;Jika B<C
Syarat3:
MOV BX, BilB
CMP BX, BilC
JB Hitung3
JMP Gakada1
; Hasil = (BilC - BilB) * BilA
Hitung3:
MOV AX, BilA
MOV BX, BilC
SUB BX, BilB
MOV CX, AX
MUL BX
MOV Hasil1, CX
JMP Cetak1
; Jika gak ada yang cocok
Gakada1:
MOV Hasil1, 0
JMP Cetak1
Cetak1:
MOV BX, Hasil1
MOV BX, 10
XOR CX, CX
Ulg1:
XOR DX, DX
DIV BX
PUSH DX
INC CX
CMP AX, 0
JNE Ulg1
Ctt1:
POP DX
ADD DL, '0'
MOV AH, 02
INT 21h
Loop Ctt1
MOV AH, 09
MOV DX, OFFSET Kal1
INT 21h
; ======================
; Jika yang Kedua
; ======================
JMP Syarat4_1
;Jika A<20
Syarat4_1:
MOV AX,BilA      
CMP AX,20
JB Syarat4_2
JMP Syarat5


; Jika B>C
Syarat4_2:
MOV AX, BilB
CMP AX, BilC
JA Hitung4
JMP syarat5
;BilA + (BilB - BilC)
Hitung4:
MOV AX, BilA
MOV BX, BilB
SUB BX, BilC
MOV CX, AX
ADD BX, CX
MOV Hasil2, CX
JMP Cetak2
; Jika B=C
Syarat5:
MOV AX, BilB
CMP AX, BilC
JE Hitung5
JMP syarat6
; Hasil = BilA
Hitung5:
MOV AX, BilA
MOV Hasil2, AX
JMP Cetak2
;Jika B<C
syarat6:
MOV BX, BilB
CMP BX, BilC
JB Hitung6
JMP Gakada2
; BilA + (BilC – BilB)
Hitung6:
MOV AX, BilA
MOV BX, BilC
SUB BX, BilB
MOV CX, AX
ADD BX, CX
MOV Hasil2, BX
JMP Cetak2
; Jika gak ada yang cocok
Gakada2:
MOV Hasil2, 0
JMP Cetak2
Cetak2:
MOV AX,Hasil2
XOR CX,CX
MOV BX,10


ulg2:
XOR DX,DX
DIV BX
PUSH DX
INC CX
CMP AX,0
JNE ulg2
ctt2:
POP DX
ADD DL,'0'
MOV AH,2
INT 21h
LOOP CTT2
MOV AH, 09
MOV DX, OFFSET Kal2
INT 21h
JMP Selesai
Selesai:
INT 20h
End var

Listing Programnya : klik disini 
Algoritmanya : klik disini
Flowchartnya : klik disini

Comments

  1. Masih puyeng.....
    Kalau cetak ABBBCDDDEFFFGHHHI pakai debug dimana ya master ?

    myblog : rudipoint.blogspot.com

    ReplyDelete

Post a Comment

Popular posts from this blog

Langkah-langkah install aplikasi ujian online berbasis web

Download Aplikasi Ujian Online dengan Codeigniter, Ajax, JSON

Cara setting aplikasi ujian online di jaringan untuk banyak komputer client