PERULANGAN

PERULANGAN

Program komputer umumnya terdiri dari tiga struktur dasar, yaitu urutan perintah, keputusan, dan perulangan. Suatu keputusan dilakukan untuk melakukan percabangan berdasarkan kondisi tertentu. Pada CPU 8086 menyediakan berbagai perintah untuk proses percabangan, baik yang bersifat unconditional jump maupun conditional jump.

Jump Tanpa kondisi
Perintah unconditional melakukan transfer titik eksekusi ke titik lain dengan
menggunakan perintah JMP. Secara sederhana perintah JMP dapat ditulis sebagai:
JMP lokasi
Contoh :
0B11:0100 jmp 112
0B11:0102 db ‘hello world !’,0d,0a,’$’
0B11:0112 mov ah,9
0B11:0114 mov dx,102
0B11:0117 int 21
0B11:0119 mov ah,4c
0B11:011B int 21

Jump dengan kondisi
Berbeda dengan perintah JMP yang melakukan jump tanpa kondisi, perintah-perintah berikut ini melakukan jump (ke posisi -128 byte kebelakang atau 127 byte kedepan) berdasarkan kondisi. Perintah ini terbagi atas tiga kempok

Jump berdasarkan bit Flag
Instruksi Keterangan Kondisi Instruksi lawan
JZ, JE Jump if Zero (Equal) ZF=1 JNZ, JNE
JC, JB, JNAE Jump if Carry (Below, Not Above Equal) CF=1 JNC, JNB, JAE
JS Jump if Sign SF=1 JNS
JO Jump if Overflow OF=1 JNO
JPE, JP Jump if Parity Even PF=1 JPO
Jump untuk bilangan bertanda
Instruksi Keterangan Kondisi Instruksi lawan
JE, JZ Jump if Equal (=).
Jump if Zero.
ZF =1 JNE, JNZ
JNE, JNZ Jump if Not Equal (). ZF = 0 JE, JZ
Jump if Not Zero.
JA , JNBE Jump if Above (>).
Jump if Not Below or Equal (not <=).
CF = 0
and
ZF = 0
JNA, JBE
JB , JNAE, JC Jump if Below (=).
Jump if Carry.
CF = 1 JNB, JAE, JNC
JAE , JNB, JNC Jump if Above or Equal (>=).
Jump if Not Below (not <).
Jump if Not Carry.
CF = 0 JNAE, JB
JBE , JNA Jump if Below or Equal ().
CF = 1
or
ZF = 1
JNBE, JA

Jump untuk bilangan bertanda
Instruksi Keterangan Kondisi Instruksi lawan
JE , JZ Jump if Equal (=).
Jump if Zero.
ZF = 1 JNE, JNZ
JNE , JNZ Jump if Not Equal ().
Jump if Not Zero.
ZF = 0 JE, JZ
JG , JNLE Jump if Greater (>).
Jump if Not Less or Equal (not <=).
ZF = 0
and
SF = OF
JNG, JLE
JL , JNGE Jump if Less (=).
SF OF JNL, JGE
JGE , JNL Jump if Greater or Equal (>=).
Jump if Not Less (not <).
SF = OF JNGE, JL
JLE , JNG Jump if Less or Equal ().
ZF = 1
or
SF OF
JNLE, JG
Pemakaian perintah Jumps
Misalkan anda diberi data sebagai berikut:
INT 21,39 – Create Subdirectory (mkdir)
AH = 39h
DS:DX = pointer to ASCIIZ path name
on return:
CF = 0 if successful
= 1 if error
AX = error code (see DOS ERROR CODES)
– creates specified subdirectory
– returns error if directory already exists, element of the path
is not found, directory full or write protected disk
Catatan: ASCIIZ adalah suatu string yang diakhiri dengan null (0)
Untuk program jenis COM, program line parameter dapat diperoleh pada Program
Segment Prefix (PSP), dimana byte ke $80 menunjukan jumlah byte parameter
pada command-line, dan byte ke $80 s/d $FF (127 byte) adalah Command-line
yang diakhir dengan $0d. Dan anda ditugaskan untuk membuat program yang dapat Subdirectori berdasarkan parameter yang diketikan oleh user, serta melaporkan apakah proses pembuatan Subdirectori berhasil atau tidak.
Contoh:
BuatDir Hello
Direktori berhasil dibuat
BuatDir Hello
Direktori gagal dibuat
-a 100
0BB0:0100 jmp 139
0BB0:0102 db ‘Direktori berhasil dibuat.’,0d,0a,’$’
0BB0:011F db ‘Direktori gagal dibuat.’,0d,0a,’$’
0BB0:0139 xor bx,bx
0BB0:013B mov bl,[80]
0BB0:013F mov byte [bx+81],0
0BB0:0144 mov ah,39
0BB0:0146 mov dx,82
0BB0:0149 int 21
0BB0:014B jc 152
0BB0:014D mov dx,102
0BB0:0150 jmp 155
0BB0:0152 mov dx,11f
0BB0:0155 mov ah,9
0BB0:0157 int 21
0BB0:0159 mov ah,4c
0BB0:015B int 21
0BB0:015D
-n buatdir.com
-rcx
CX 005C
:5d
-w
Writing 0005D bytes

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s