PROGRAM JUMP
1. Tujuan [kembali]
- Menyelesaikan tugas yang diberikan oleh Bapak.
- Mampu memahami dan mensimulasikan program jump pada software emu8086.
- menyelesaikan tugas Mikroprosesor dan mikrokontroler yg diberi oleh Bapak Darwison
- Memahami teknik interface (perangkat lunak) menggunakan emu 8086
2. Komponen [kembali]
1. Mikroprosessor 8086
Mikroprosesor 8086 adalah mikroprosessor 16-bit dengan data bus
8-bit, oleh sebab itu pajang data bus merupakan satu-satunya perbedaan utama
antara dua mikroprossesor tersebut. Namun demikian, ada perbedaan kecil dalam
salah satu dari sigmal kontrol, 8086 mempunyai pin M/IO dan 8088 mempunyai pin
IO/M. Satu-satunya perbedaan hardware yang lain muncul pada pin 34 dari kedua
chi: pada 8088, yaitu pin SSO, sedangkan pada 8086 adalah pin BHE/S7.
3. Dasar Teori [kembali]
1. Program Lunak
Bahasa program
yang dipakai pada interface, umumnya bisa semua bahasa pemograman, seperti:
bahasa Assembler, Basic/VB, Pascal/Delphi, C++/VC, dan Matlab. Tetapi bahasa
Assembler dipakai pada interface dan sistem minimum serta mikrokontroller,
karena dalam bentuk COM akan membuat program di memory yang jauh lebih kecil
dari bahasa program tingkat tinggi.
Contoh
instruksi I/O (input-output) dengan menggunakan bahasa pemrograman:
1.
Assembler
Output: mov dx,300h
Mov al,45h
Out dx,al
Input: mov dx,301h
In al,dx
2.
Pascal
atau Delphi
Output: Port[$301]:=$50; {kirim data 50h ke port B}
Input:
3.
C++
atau VC
Output: outportb (0x0300,25);
Input: A:=inportb (0x0302);
4.
Basic
atau VB
Output: out 0x0378,D
Input: B=inp (0x0379)
2. Bahasa Tingkat Rendah (Assembler)
Salah satu
produk bahasa assembler adalah software buatan SpeedWare yang dikenal dengan
nama TASMB. Program ini telah memiliki editor sendiri sehingga memudahkan dalam
membuat program.
Berikut ini
dijelaskan menu dari TASMB dan penggunaannya.
a. Menu Utama
1. A :
Meng-assembly dari mnemonic ke bahasa mesin.
2. E : Masuk ke
editor. Editor yang digunakan memiliki hampir semua fungsi pembantu yang
dimiliki wordstar/DOS.
3. G : Membaca
file dari disket.
4. O : Mengatur
option dari TASMB.
5. Q : Keluar
dari TASMB ke DOS.
6. R :
Menjalankan Program.
7. W :
Menyimpan file ke disket.
b. Menu Option
Yang perlu diperhatikan dari menu ini adalah F5 dan F8, sedangkan
yang lainnya dapat dinonaktifkan atau diaktifkan sesuai dengan keperluan.
Tombol F5 merupakan tombol toggle dari pemakaian memory untuk kompilasi dan F8 merupakan penulisan hasil kompilasi ke disket.
3. Program Jump / Lompat
Pada jump dengan memakai register CX, dimana setiap kali lompat
nilai CX berkurang satu dan sampai CX = 0 maka tidak bisa melompat lagi.
Pada instruksi jump ini, lompatan hanya dapat dipakai satu kali
saja.
Ada 2 macam
lompatan, yaitu :
1.
Lompatan Tak Bersyarat
Lompatan tak bersyarat dapat dikelompokkan menjadi dua macam, yaitu
:
a. Near Jump: yang jauh lompatan tidak lebih dari FF hexa byte,
ataupun 256 byte.
b. Far Jump: yang jauh lompatan tidak lebih dari FFFF hexa byte,
ataupun 1 segment. Tata penulisan: JMP [Lokasi Memory] 28
Contoh : JMP 0105
Perintah ini adalah untuk melakukan lompatan ke arah lokasi memori
offset:0105 atau diganti dengan menulis label misal ulangi seperti contoh
sebelumnya.
Seperti pada gambar di atas label ulangi adalah menuju ke alamat
segment:offset instruksi MOV AH,02H yaitu 0700:0105.
1.
Lompatan Bersyarat
Ada beberapa jenis lompatan yang kegunaannya dapat disesuaikan
dengan keperluan yang dibutuhkan. Tata penulisan: [Perintah jump] [Lokasi
Memory]
Sebelum memakai lompatan bersyarat, terlebih dahulu dilakukan
perintah perbandingan (Compare). Hal ini dilakukan karena untuk beberapa jenis
lompatan harus menggunakannya sebelum melakukan lompatan.
Tata penulisan: CMP [Operand1],[Operand2]
Operand1: variabel atau register dan
Operand2: variabel, isi lokasi memory, lokasi memory, variabel
ataupun register.
Contoh:
a. CMP AX, 0120 ; Perintah ini digunakan untuk membandingkan AX
dengan 0120
b. CMP BX,AX ; Perintah ini digunakan untuk membandingkan BX dengan
AX.
Beberapa perintah lompatan
bersyarat:
1.
JE
(Jump if Equal): bila pada saat pembandingan kedua operand sama.
Contoh :
CMP AX,0120
JE ulangi
Jump ke label ulangi jika AX sama dengan 0120, namun bila ternyata
AX tidak sama dengan 0120, maka komputer akan meneruskan dengan perintah baris
berikutnya.
2.
JNE
(Jump if Not Equal): berlaku apabila nilai AX tidak sama.
Contoh :
CMP AX,0120
JNE ulangi ; jump jika AX tidak sama dengan 0120
Perintah-perintah yang lain adalah:
a. JG (Jump if Greater than): jump
jika lebih besar dari operand kedua.
b. JGE (Jump If Greater Or Equal):
jump jika lebih besar atau sama dengan operand kedua.
c. JNG (Jump If Not Greater than):
jump jika tidak lebih besar dari operand kedua.
d. JNGE (Jump If Not Greater Or
Equal): jump jika lebih kecil dari operand kedua. Sama dengan perintah JLE.
e. JL (Jump if Less): Perintah ini
sama dengan perintah JB tetapi dalam bil bertanda.
f. JLE (Jump If Less or Equal): jump
jika lebih kecil atau sama dengan operand kedua. Sama dengan perintah JNGE.
g. JNL (Jump If Not Less Or Equal):
jump jika tidak lebih kecil dari operand kedua. Perintah ini sama dengan JG.
h. JNLE (Jump If Not Less Or Equal):
jump jika tidak lebih kecil atau sama dengan operand kedua. Perintah ini sama
dengan JG.
i.JS (Jump On Sign): jump jika Sign
Flag yang terdapat Flag Register berisikan angka 1.
j. JNS (Jump On Not Sign): jump jika
Sign Flag yang terdapat pada Flag Register berisikan angka 0.
k. JC (Jump On Carry): jump jika
Carry Flag yang terdapat pada Flag Register berisikan angka 1.
l. JNC (Jump On Not Carry): jump
jika Carry Flag yang terdapat pada Flag Register berisikan angka 0.
m. JCXZ (Jump If CX = 0) Perintah
ini dilaksanakan bila isi register CX sama dengan 0.
n. JZ (Jump on Zero): jump jika Zero
Flag yang terdapat pada Flag Register berisi angka 1. Jump ini mempunyai fungsi
dan cara kerja yang sama dengan JE.
o. JNZ (Jump on Not Zero): jump jika
Zero Flag yang terdapat pada Flag Register berisikan angka 0. Jump ini
mempunyai fungsi dan cara kerja yang sama dengan JNE sehingga dapat
dipertukarkan pada saat pemakaian.
Adapun instruksi jump yang digunakan
untuk bilangan tak bertanda adalah:
a) JA (Jump If Above): jump jika
lebih besar dari pada operand kedua
b) JAE (Jump If Above of Equal):
jump jika lebih besar atau sama dengan operand kedua
c) JNA (Jump If Not Above): jump
jika tidak lebih besar dari operand kedua.
d) JNAE (Jump If Not Above Or
Equal): jump jika tidak lebih besar atau sama dengan operand kedua.
e) JB (Jump If Below): jump jika
lebih kecil dari operand kedua.
f) JBE (Jump If Below Or Equal):
jump jika lebih kecil atau sama dengan operand kedua. g) JNB (Jump If Not
Below): jump jika tidak lebih kecil dari operand kedua.
h) JNBE (Jump If Not Below Or Equal): jump jika tidak lebih kecil atau sama dengan operand kedua.
Komentar
Posting Komentar