Cari Blog Ini

Teknik Interface (perangkat lunak) - Program Jump

  [KEMBALI KE MENU SEBELUMNYA]


 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.


4. Program Emu8086 [kembali]

Program Lompatan (Loop)



5. Video [kembali]



6. Download File [kembali]

1. Program JMP Emu8086 [DOWNLOAD]

2. Video Simulasi [DOWNLOAD]

BAHAN PRESENTASI MATA KULIAH MIKROPROSESOR DAN MIKROKONTROLER 2024      Oleh : Zumar Ahmad (2210951027) Dosen Pengampu : Dr. Darwison, M.T. ...