bahasa asembler 3a

Tampilkan postingan dengan label bahasa asembler 3a. Tampilkan semua postingan
Tampilkan postingan dengan label bahasa asembler 3a. Tampilkan semua postingan

bahasa asembler 3a

















Seperti program  COM, program  EXE juga yaitu  suatu bentuk program 

yang dapat langsung dijalankan pada prompt DOS. Bentuk program  EXE tidak  

dibatasi oleh satu segment, seperti halnya pada program  COM. Oleh sebab nya 

besarnya file untuk program  EXE bisa melebihi 64 KB. 

program  EXE yaitu  program  yang lebih lengkap dibandingkan dengan

program  COM, selain itu pemakaian  memory juga lebih mudah pada program  EXE. 

Catatan: 

Pada program  EXE, segala bentuk JUMP dan CALL dipakai  jenis 

FAR(program  COM berbentuk NEAR). ini  dipicu  program  EXE yang bisa

mengakses segment lain, sehingga perintah JUMP dan CALL membutuhkan informasi

alamat dari segment(CS) selain offset(IP). 


Pada program  COM, pelajar  tidak perlu mengartikan   tempat tertentu untuk

segment DATA dan STACK sebab  program  COM hanya memakai  1 segment. Dengan 

demikian segment untuk DATA, STACK dan CODE pada program  COM yaitu sama,

stack memakai akhir dari segment yang dipakai  oleh segment CODE. 

Berbeda dengan program  COM, pada program  EXE kita  harus mengartikan  

tempat untuk segment DATA, CODE dan STACK. Untuk membuat program  EXE ini, kita 

bisa memakai  model pada gambar  kode   26.1.xxxx . 

----------------------------------------------------------- 

 .MODEL SMALL 

 .STACK 200h 

 .DATA 

 +--------------+ 

 | Tempat | 

 | Data program  | 

 +--------------+ 

 .CODE 

 Label1: 

 MOV AX,@DATA 

 MOV DS,AX 

 +---------------+

| | 

 | Tempat | 

 | program  | 

 | | 

 +---------------+ 

 MOV AX,4C00h 

 INT 21h 

 END Label1 

---------------------------------------------------------- 

gambar  kode   Model program  EXE

Pada program  EXE, pelajar  tidak perlu memakai  perintah:ORG 100h, sebab 

program  EXE bisa menempatkan dirinya pada alamat yang sudah  ditentukan. 

Pada program  EXE, register segment CS dan SS diinialisasi secara

otomatis, namun  register segment DS dan ES tidak  demikian. Register 

segment DS dan ES pada awalnya menunjuk pada awal program , yaitu PSP. 

sebab nya register DS perlu pelajar  inialisasi secara manual agar menunjuk pada

segment data melalui perintah: 

MOV AX,@DATA 

 MOV DS,AX

Pada program  EXE, pelajar  perlu mengartikan   tempat untuk stack.

Pendefinisian tempat untuk stack dipakai  tanda   directive: .STACK yang

diikuti dengan banyaknya stack yang didiartikan  untuk program . Pada model

yang pelajar  pakai  didiartikan  tempat untuk stack sebanyak 200h Word yang

tentunya sudah lebih dari cukup untuk dipakai  oleh program -program  pada 

umumya. 

Berbeda dengan program  COM, yang selalu pelajar  akhiri dengan interupsi

20h, pada program  EXE interupsi 20h tidak bisa dipakai . Pada program  EXE

dipakai  interupsi 21h fungsi 4Ch dengan register AL berisi kode return.

Interupsi 21h fungsi 4Ch ini lebih fleksibel untuk dipakai , sebab  selain

kontrol akan dikembalikan kepada DOS, file-file yang terbuka juga akan ditutup 

oleh fungsi ini. Fungsi ini juga akan mengembalikan vektor interupsi default 

22h, 23h dan 24h. kita  juga bisa mengakhiri program  COM dengan fungsi ini.

 

Sesuai dengan model program  EXE pada gambar  kode   akan pelajar  buat sebuah

program  yang sederhana. program  berikut akan memperlihatkan kepada kita ,

bagaimana caranya merubah huruf kecil menjadi huruf besar. 

;/=======================/; 

 .MODEL SMALL 

 .STACK 200h 

 .DATA 

Klm DB 'Cinta memicu  rindu yang paling sengsara $' 

 .CODE 

Proses: 

 MOV AX,@DATA ; Inialisasi, agar  

 MOV DS,AX ; DS menunjuk pada data 

 XOR BX,BX 

 MOV CX,47 

 Ulang: 

 CMP Klm[BX],'a' ; Apakah huruf kecil ? 

 JB Tidak ; Tidak, cek berikutnya 

 CMP Klm[BX],'z' ; Apakah huruf kecil ? 

 JA Tidak ; Tidak, cek berikutnya 

 SUB Klm[BX],'a'-'A' ; Jadikan huruf besar 

 Tidak: 

 INC BX ; Akses huruf    berikutnya 

 LOOP Ulang ; Ulangi 

 Cetak: 

 MOV AH,09 ; Cetak kalimat yang sudah  

 LEA DX,Klm ; dirubah menjadi huruf besar 

 INT 21h ; semuanya 

 Exit: 

 MOV AX,4C00h ; Selesai, 

 INT 21h ; kembali ke DOS 

END Proses 

program  26.1.xxxx . Merubah huruf kecil menjadi huruf besar

Sesudah  program  26.1.xxxx . kita  ketikkan, compilelah menjadi bentuk EXE,

dengan cara: 

C:\>TASM UPCASE 

Turbo Assembler Version 2.0 Copyright © 1980  1990 

Borland international computer  

Assembling file: UPCASE.ASM 

Error messages: None 

Warning messages: None

Passes: 1 

Remaining memory: 326k

Sesudah  source program  di TASM, kita  bisa me-LINK objek file dengan: 

C:\>TLINK UPCASE 

Turbo Link Version 3.0 Copyright (© 1980-1990  

Borland international computer  

Sesudah  kedua proses ini selesai, maka kita  akan memperoleh  sebuah 

program  EXE yang siap dijalankan. 

Bila program  26.1.xxxx . dieksekusi, maka pada layar akan ditampilkan kalimat 

yang semua huruf   nya sudah  dirubah menjadi huruf besar, seperti: 

CINTA memicu  RINDU YANG PALING SENGSARA
TURBO DEBUGGER 


Dalam membuat program , pelajar  biasanya akan selalu mengalami suatu

kesalahan. Kesalahan dalam pembuatan sebuah program  dapat dibagi menjadi dua,

yaitu kesalahan syntax dan kesalahan logika. Kesalahan syntak biasanya berupa

kesalahan tata cara atau aturan penulisan seperti perintah: "MOV AH,AX" (kedua 

operand tidak sama besar bitnya). Kesalahan syntax yaitu mudah untuk dicari 

dan diperbaiki. Bentuk kesalahan yang kedua, yaitu kesalahan logika yaitu

kesalahan program  yang berjalan tidak sesuai dengan yang diinginkan. Kesalahan

seperti ini tidak  ditampilkan oleh compiler seperti pada kesalahan syntax.

Ingatlah, program  akan selalu berjalan sesuai dengan yang diperintahkan

bukannya seperti yang diinginkan. 

Untuk mencari kesalahan logika, Turbo Debugger yaitu  salah satu

debugger yang paling canggih pada saat ini. Dengan Turbo Debugger kita  bisa 

melihat jalannya program  perintruksi, melihat isi register, melihat isi stack,

melihat dan mengubah isi flags register, mengubah isi memory, mentrace program  

residen, mentrace device driver dan sebagainya. Dengan mengusai Turbo debugger

banyak yang dapat kita  lakukan, seperti melihat program  pelajar lain, mengubah 

suatu program  yang sudah jadi, membongkar suatu kode proteksi, dan 

membongkar virus. 

sebab  Turbo Debugger cukup besar untuk pelajar  bicarakan secara lengkap

dan mendetail, maka pada bagian ini hanya akan dibahas beberapa hal penting 

yang kita  perlukan saja. 

bila  kita  ingin melacak kesalahan ataupun jalannya program  kita , pada 

saat source program  di TASM dan di LINK pakai  parameter sebagai berikut: 

TASM/ZI UPCASE 

TLINK/V UPCASE

Dengan cara ini, pada akhir file EXE yang dihasilkan akan ditambahkan

informasi yang dapat dipakai  oleh Turbo Debugger. Informasi ini antara lain, 

nama variabel dan lokasi baris dari source code  yang akan dieksekusi. bila 

parameter ZI dan V tidak didan kan, Turbo Debugger hanya akan menampilkan

intruksi yang dijalankan tanpa embel-embel lain sehingga banyak kelebihan dari

Turbo Debugger yang tidak bisa pelajar  manfaatkan.
 Untuk memakai  Turbo Debugger, kita  dapat langsung menyertakan nama

file yang akan dilacak malalui parameter, seperti: 

 TD UPCASE 

bila  Ektensi file tidak kita  dan kan, maka secara default Turbo

Debugger akan mencari file itu  dengan ektensi EXE terlebih dahulu. 

Bagi kita  pemakai Turbo Pascal, tentunya tidak akan terlalu asing dengan

tampilan Turbo Debugger ini. Tampilan pada Turbo Debugger hampir sama dengan 

tampilan pada Turbo Pascal, selain itu banyak pula tombol fungsi yang sama

persamaanya(gambar  kode   27.1.) 

<<<<< Gbr271.PIX >>>>>> 

gambar  kode   27.1. Tampilan Menu Turbo Debugger 

Pada lingkungan Turbo Debugger ini, mouse dapat kita  pakai  dengan 

mudahnya namun  bila kita  tidak memiliki nya, keyboard juga dapat dipakai . 

27.3. memakai  TURBO DEBUGGER

Pada bagian ini akan pelajar  coba memakai  Turbo Debugger untuk melihat

jalannya program  UPCASE.EXE(program  26.1.xxxx ). Ingatlah untuk menyertakan

parameter ZI dan V pada saat source program  UPCASE.ASM kita  jadikan EXE. 

Sesudah  kita  masuk pada lingkungan Turbo Debugger dengan perintah: 

 C:\TD UPACASE.EXE 

Kini, cobalah pilih menu "View" lalu  pilih "Variabel", maka semua 

isi variabel program  akan ditampilkan. Mungkin penempatan window variabel ini

agak mengganggu kita , untuk itu kita  dapat memindahkannya dengan menekan

tombol Ctrl+F5 dan digeser dengan tombol panah. Sesudah  pergeseran selesai

dilakukan tekanlah enter, maka window variabel itu  akan segera berpindah. 

Sesudah  itu dari menu utama, pilihlah menu "View" lalu  pilih

"Registers", maka seluruh nilai register dan flag akan dapat kita  lihat. Bila

kita  ingin juga melihat nilai dari register 32 bit, aktifkanlah menu local

dari registers dengan menekan tombol ALT+F10 lalu  pilihlah "Registers 32-

Bit". Bila pada saat itu, register 32 Bit belum ditampilkan maka akan segera

ditampilkan, sebaliknya bila  register 32 Bit sudah ditampilkan maka register 

32 bit itu  akan segera dihilangkan.<<<<< Gbr272.PIX >>>>> 

gambar  kode   27.2. Tampilan Turbo Debugger 

Cobalah kita  Trace jalannya program  kita  dengan menekan tombol F7 atau 

dengan memilih menu Run lalu  Trace. Setiap penekanan tombol F7 akan 

melakukan  satu intruksi yang ditunjukkan oleh tanda   panah(CS:IP) dan tanda   

panah akan segera bergeser pada intruksi selanjutnya yang siap dieksekusi.

Tekanlah terus tombol F7 dan perhatikan perubahan nilai register dan perubahan 

huruf-huruf pada variabel "Klm". Sesudah  program  selesai dieksekusi kita  bisa 

melihat tampilan dari program  dengan menekan tombol ALT+F5. Untuk keluar dari 

lingkungan Turbo Debugger, tekanlah tombol ALT+X. 

Bila kita  masih ingin mencoba, tekanlah tombol Ctrl+F2 maka file akan 

segera direset atau diLoad kembali dan siap diTrace lagi dari permulaan. 
 

kita  bisa melihat dan mengubah semua nilai register pada komputer,

termasuk flags register dengan mudahnya. Caranya yaitu: 

1. Aktifkan Turbo Debugger. 

2. Pilih menu "View". 

3. Pilih menu "Registers", maka semua nilai register bisa kita  lihat. Dengan

tombol panah, kita  bisa menggerakkan sorotan pada register dan dengan tombol

Tabulasi kita  bisa berpindah dari sorotan register ke sorotan Flags. kita  bisa

mengubah nilai flags dengan menyorot flag yang ingin diganti dan tekan tombol 

Enter. 

<<<<<< Gbr273.PIX >>>>>>> 

gambar  kode   27.3. Menu Registers 

Kini aktifkanlah Menu Local dari menu Registers dengan menekan tombol ALT+F10 

yang terdiri atas: 

- Increment: Untuk menambah nilai register yang sedang disorot dengan satu. 

- Decrement: Untuk mengurangai nilai register yang sedang disorot dengan satu. 

- Zero : Untuk menolkan nilai register yang sedang disorot. 

- Change : Pilihan ini akan menampilkan sebuah kotak yang akan meminta kita  

untuk memasukkan angka baru untuk register yang sedang disorot. Selain mengganti nilai 

 register dengan cara ini, kita  bisa mengganti nilai 

 register yang sedang disorot dengan secara langsung 

 mengetikan nilainya tanpa mengaktifkan SubMenu. 

- Register 32-Bit: Pilihan ini akan menampilkan register 32 bit 

 bila belum ditampilkan, sebaliknya register 32 

 bit akan dihilangkan bila sebelumnya sudah  

 ditampilkan. 


Dengan Turbo Debugger, kita  bisa melihat, mengganti, merubah, mencatat

atau  menulisi data dimemory dengan mudahnya. sedang  caranya yaitu: 

1. Aktifkan Turbo Debugger. 

2. Pilih menu "View". 

3. Pilih menu "Dump", maka secara default akan ditampilkan data pada segment 

data(DS). Besarkanlah windownya dengan menekan tombol F5(Penekanan F5

sekali lagi akan mengecilkan windownya). kita  bisa menggerakkan posisi

kursor dengan tombol panah. Data pada posisi kursor bisa diubah dengan 

langsung mengetikkan angka barunya atau mengetikkan huruf    dengan diapit 

oleh tanda   petik. kita  bisa menekan tombol Ctrl+G untuk menampilkan alamat 

baru, contoh  alamat stack, dengan memasukkan kode SS:SP pada input Box. 

kita  juga bisa memakai  angka secara langsung pada input Box, seperti 

0000:0000 untuk menampilkan Interrupt Vektor Table. 

 <<<<< Gbr274.PIX >>>>>> 

gambar  kode   27.4. Manipulasi Data Memory

4. Kini aktifkanlah Menu Local dari menu Dump dengan menekan tombol ALT+F10. 

kita  akan akan melihat menu: 

- Goto : Untuk menampilkan data pada suatu alamat. Perintah 

 ini sama dengan penekanan tombol Ctrl+G yang sudah  

 pelajar  lakukan sebelumnya. 

- Search : Untuk mencari byte atau string pertama yang cocok 

 dengan deskripsi yang pelajar  berikan. 

- Next : Untuk mencari byte atau string selanjutnya yang 

 cocok, sesudah  kita  mencari dengan Search.
register yang sedang disorot. Selain mengganti nilai 

 register dengan cara ini, kita  bisa mengganti nilai 

 register yang sedang disorot dengan secara langsung 

 mengetikan nilainya tanpa mengaktifkan SubMenu. 

- Register 32-Bit: Pilihan ini akan menampilkan register 32 bit 

 bila belum ditampilkan, sebaliknya register 32 

 bit akan dihilangkan bila sebelumnya sudah  

 ditampilkan. 


Dengan Turbo Debugger, kita  bisa melihat, mengganti, merubah, mencatat

atau  menulisi data dimemory dengan mudahnya. sedang  caranya yaitu: 

1. Aktifkan Turbo Debugger. 

2. Pilih menu "View". 

3. Pilih menu "Dump", maka secara default akan ditampilkan data pada segment 

data(DS). Besarkanlah windownya dengan menekan tombol F5(Penekanan F5

sekali lagi akan mengecilkan windownya). kita  bisa menggerakkan posisi

kursor dengan tombol panah. Data pada posisi kursor bisa diubah dengan 

langsung mengetikkan angka barunya atau mengetikkan huruf    dengan diapit 

oleh tanda   petik. kita  bisa menekan tombol Ctrl+G untuk menampilkan alamat 

baru, contoh  alamat stack, dengan memasukkan kode SS:SP pada input Box. 

kita  juga bisa memakai  angka secara langsung pada input Box, seperti 

0000:0000 untuk menampilkan Interrupt Vektor Table. 

 <<<<< Gbr274.PIX >>>>>> 

gambar  kode   27.4. Manipulasi Data Memory

4. Kini aktifkanlah Menu Local dari menu Dump dengan menekan tombol ALT+F10. 

kita  akan akan melihat menu: 

- Goto : Untuk menampilkan data pada suatu alamat. Perintah 

 ini sama dengan penekanan tombol Ctrl+G yang sudah  

 pelajar  lakukan sebelumnya. 

- Search : Untuk mencari byte atau string pertama yang cocok 

 dengan deskripsi yang pelajar  berikan. 

- Next : Untuk mencari byte atau string selanjutnya yang 

 cocok, sesudah  kita  mencari dengan Search.
- Change : Untuk mengganti data 1 byte atau lebih data pada 

 posisi kursor. 

- Follow : Untuk mengganti alamat code atau data tampilan dengan 

 data pada posisi kursor. 

- Previous: Untuk mengembalikan tampilan pada alamat sebelum 

 terjadi perubahan. Perintah ini biasanya dipakai  

 untuk membatalkan hasil dari perintah Follow dan 

 Goto. Pekerjaan ini dapat dilakukan sebab  Turbo 

 Debugger menyimpan alamat terakhir pada saat terjadi 

 perubahan alamat. 

- Display As: Untuk merubah format tampilan yang secara default 

 yaitu Byte. Perintah ini memiliki  pilihan: Byte, 

 Word, LongInt(4 byte), Composite(8 byte), 

 Float(Format data C), Real(6 byte), Double(Format 

 data C) dan Extended(10 byte). 

- Block : Untuk manipulasi blok memory. Perintah ini memiliki  pilihan: 

 * Clear : Untuk menolkan data pada suatu block memory yang 

 ditentukan. 

 * Move : Untuk memindahkan suatu block memory pada alamat 

 baru. 

 * Set : Untuk merubah semua nilai pada suatu block memory. 

 * Read : Untuk membaca file ke suatu block memory yang 

 ditentukan. kita  harus menentukan nama file, alamat 

 awal penyimpanan dan banyaknya byte yang akan 

 dibaca. 

 * Write : Untuk membaca suatu Data blok yang ditentukan dan 

 ditulis ke file yang ditentukan. Pada menu ini, 

 kita  juga harus menentukan alamat awal dari data 

 yang akan dicatat, banyaknya byte dan  nama file. 
 

Pada bagian 27.3. kita  sudah  memakai  tombol F7 untuk mentrace 

program . Pada bagian ini akan pelajar  lihat fungsi-fungsi lain yang disediakan

oleh Turbo Debugger untuk mentrace program . Macam-macam fungsi trace ini

biasanya ada  pada menu Run(gambar  kode   27.5.).



<<<<< Gbr275.PIX >>>>> 

gambar  kode   27.5. Menu Run

 

Pada menu Run ini, dapat kita  lihat ada  lagi submenu: 

1. Run : Untuk menjalankan program  dengan kecepatan penuh. program  akan

dijalankan sampai selesai atau pada posisi Break Point. kita  bisa memakai 

fungsi ini dengan menekan tombol F9 secara langsung. 

2. Go To Cursol : Untuk menjalankan program  sampai posisi kursor. Untuk

memakai  fungsi ini, gerakkanlah posisi kursor dengan tombol panah menuju

posisi yang diiginkan, lalu  pilihlah menu Run dan Go To Cursol atau dengan

menekan tombol F4. Maka program  akan dijalankan sampai posisi kursor itu . 

3. Trace Into : Untuk menjalankan satu intruksi. Bila ada  pemanggilan

pada  suatu procedure, fungsi ini juga akan melompat dan menjalankan 

intruksi pada procedure itu. Fungsi ini dapat dipakai  secara langsung dengan 

menekan tombol F7. 

4. Step Over : Sama dengan fungsi F7 perbedaannya bila ada  pemanggilan 

pada  suatu procedure, fungsi ini akan langsung menyelesaikan seluruh

intruksi pada procedure itu . Fungsi ini dapat dipakai  secara langsung 

dengan menekan tombol F8. 

5. Execute To : Untuk menjalankan program  sampai pada posisi yang ditentukan. 

kita  bisa menentukan alamat segment:offset ataupun dengan nama label program  

sebagai tempat berhenti. Fungsi ini dapat dipakai  secara langsung dengan

menekan tombol Alt+F9. 

6. Until Return : Untuk menjalankan program  sampai akhir dari suatu procedure 

atau procedure kembali pada pemanggilnya. Fungsi ini biasanya dipakai  pada 

saat kita  mentrace program  dengan tombol F7 dan masuk pada suatu procedure, 

ternyata kita  ingin segera melewatinya. Fungsi ini dapat dipakai  secara 

langsung dengan menekan tombol Alt+F8.

7. Animate : Untuk menjalankan program  secara otomatis sampai program  selesai 

atau ditekan sembarang tombol. Fungsi ini sama dengan penekanan tombol F7

secara otomatis. Fungsi ini biasanya dipakai  oleh pelajar yang memiliki  mata 

elang atau pada program  yang ada  intruksi yang akan mengunci keyboard 

sementara. 

8. Back Trace : Untuk menjalankan intruksi sebelumnya yang sudah  dijalankan. 

Fungsi ini dapat dipakai  secara langsung dengan menekan tombol Alt+F4. 

9. Instruktion Trace : Sama dengan tombol F7, perbedaannya bila ada  suatu 

interupsi maka fungsi ini akan masuk dan menjalankan program  interupt handler 

perintruksi. Dengan fungsi ini kita  dapat melihat interrupt handler suatu 

interupsi. Fungsi ini dapat dipakai  secara langsung dengan menekan tombol

Alt+F7. 

10. Argumen : Untuk merubah atau mengganti command line. 

11. program  Reset : Untuk mereset program . Fungsi ini biasanya dipakai  bila 

kita  ingin mentrace kembali program  dari permulaaan. Fungsi ini dapat

dipakai  secara langsung dengan menekan tombol Ctrl+F2. 

27.3.4. MELIHAT VARIABEL program 

Semua isi ataupun nilai dari variabel program  bisa kita  lihat dengan

tombol Ctrl+F7 ataupun dengan memilih menu Data lalu  pilih menu Add Watch.

Sesudah  itu isilah dengan nama variabel yang ingin kita  lihat isinya(Gambar

27.6.). 

<<<<<< Gbr276.PIX >>>>>> 

gambar  kode   27.6. Melihat Variabel program 

Bila kita  memasukkan nama dari suatu label program , maka alamat dari 

label itu  akan ditampilkan. Bila kita  merasa wimdow watch ini terlalu 

kecil, tombol F6 dapat kita  pakai  untuk berpindah ke window watch ini dan

membesarkannya(F5). Penekanan tombol F5 akan membesarkan atau mengecilkan

window.



Breakpoints yaitu titik-titik tempat yang mana  program  akan dihentikan.

Untuk itu kita  bisa melakukannya dengan: 

1. Aktifkan Turbo Debugger 

2. Tempatkan kursor pada posisi yang ingin kita  beri tanda   breakpoints. 

3. Pilih menu BreakPoints lalu  Toggle, atau langsung menekan tombol F2. 

Maka pada posisi itu  akan ditanda  i dengan sebuah sorotan garis 

merah(gambar  kode   27.7). Bila kita  ingin membatalkan titik brekpoints, tekanlah

tombol F2 sekali lagi pada tempat yang sama. 

<<<<<< Gbr277.PIX >>>>>>



 gambar  kode   27.7. memberi  posisi BreakPoints

Selain pemberian posisi BreakPoints dengan F2, kita  bisa juga memberi 

posisi BreakPoints melalui alamatnya. Untuk itu tekanlah tombol Alt+F2 dan 

berikan alamat untuk titik BreakPoints itu . 

4. Tekanlah tombol F9 untuk mengeksekusi program  kita . Setiap mencapai titik 

BreakPoints program  akan segera berhenti, untuk melanjutkannya kembali

tekanlah tombol F9 lagi. 


bila  kita  ingin melacak suatu program  yang besar, kebutuhan akan memory

komputer menjadi penting sekali. Pada kasus seperti ini, Turbo Debugger 

menyediakan 2 cara yang dapat memecahkan masalah ini, yaitu: 

1. Untuk kita  yang memiliki komputer 80286, disediakan program  TD286.EXE yang 

dapat berjalan pada modus proteksi. TD286.EXE akan menyimpan dirinya pada High 

Area, sehingga memory konvensional hanya dipakai  sedikit sekali. program 

TD286 dapat juga berjalan pada semua prosesor diatasnya, seperti 80386 dan 

80486. 

2. Untuk kita  yang memiliki komputer 80386 dengan memory extended minimal 640 

KB, disediakan TD386.EXE dengan Driver TDH386.SYS. Driver TDH386.SYS akan

membuat Turbo Debugger dijalankan pada modus Virtual sehingga membebaskan

memory konvensional. kita  bisa memakai  driver ini 
melalui CONFIG.SYS

dengan menyertakan: DEVICEHIGH=TDH386.SYS. Ingatlah, driver TDH386.SYS ini 

biasanya akan konflik dengan memory manager yang memakai  virtual memory, 

seperti QEMM.SYS. Baik TD286.EXE atau  TD386.EXE dapat dijalankan persis

dengan program  TD.EXE. 

Selain dengan cara diatas, masih ada  cara lain yaitu dengan

memakai  TDREMOTE.EXE. program  ini memungkinkan pelacakan sebuah program 

dengan memakai  2 komputer yang dihubungkan melalui serial port. Dengan

cara ini, sebuah program  dapat memakai  memory konvensional secara optimal

sementara TDREMOTE memakai  memory dari komputer yang lain.


DAFTAR INSTRUKSI ASSEMBLY

Mnemonic : AAA (ASCII Adjust For Addition)

Tersedia pada : 8088 keatas 

Syntax : AAA 

Pengaruh flag : AF, CF 

Fungsi : Mengatur format bilangan biner/hexa ke bentuk BCD sesudah  

dilakukan operasi penjumlahan dua bilangan BCD. AAA hanya dapat dilakukan

untuk bilangan sebesar 4 bit, maksimal hexa F dan diletakkan di register AL.

Bila AL bernilai lebih dari 9, maka AL akan dikurangi 10 dan 4 bit tinggi 

dari AL akan dijadikan 0. Sesudah  itu AH akan ditambah dengan 1. CF dan AF

akan diset 1. 

Contoh: 

 Bilangan BCD 8 + 6 = ... 

 MOV AL,8h 

 MOV AH,6h 

 ADD AL,AH ; AX = 060Eh 

 AAA ; AX = 0704h 

Jadi bilangan 0E dijadikan BCD menjadi 14, yang mana  bilangan di AX dibaca 

BCD 14 --> AH = 1(7-6), AL = 4 

Mnemonic : AAD (ASCII Adjust For Division)

Tersedia pada : 8088 keatas 

Syntax : AAD 

Pengaruh flag : SF, ZF, PF 

Fungsi : Mengkonversi bilangan BCD ke biner atau 

hexa. sedang  cara yang dilakukan yaitu mengalikan AH dengan 10 dan

menambahkan isi AL dengan hasilkali AH. Hasil pertambahan itu  akan 

diletakkan di register AL lalu  AH akan dinolkan. 

Contoh:


Hexa dari BCD 53 yaitu ... 

 MOV AH,05 

 MOV AL,03 

 AAD ; AL=0035h yaitu hexa dari BCD 53 

Mnemonic : AAM (ASCII Adjust For Multiplication)

Tersedia pada : 8088 keatas 

Syntax : AAM 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Mengkonversi bilangan biner atau hexa ke BCD. sedang  cara

yang dilakukan yaitu membagi AL dengan 10, lalu  hasilnya dimasukkan ke 

register AH sedang sisanya ke register AL. 

Contoh: 

 Bilangan BCD ; 12 * 9 = ... 

 MOV AL,12h 

 MOV BL,09h 

 MUL BL ; AX = 00A2h 

 AAM ; AX = 1002h 

Bilangan 1002h pada AX dibaca sebagai desimal 162 : 

 - AH = 10h = 16 

 - AL = 02h = 2 

Mnemonic : AAS (ASCII Adjust For Subtraction)

Tersedia pada : 8088 keatas 

Syntax : AAS 

Pengaruh flag : AF, CF 

Fungsi : Mengatur format bilangan biner/hexa hasil pengurangan ke

bentuk BCD. AAS ini berlaku untuk hasil pengurangan yang tidak lebih dari 4

bit. bila  4 Bit rendah dari AL lebih besar dari 9, maka AL akan dikurangi

dengan 6 dan register AH akan dikurangi 1. 4 bit atas register AL akan

dijadikan nol sedang  4 bit rendahnya akan bernilai 0-9. 

Contoh: 

 Bilangan BCD 11 - 5 = ... 

 MOV AL,11h


 MOV BL,5h 

 SUB AL,BL ; AX = 000C 

 AAS ; AX = FF06 

Mnemonic : ADC (Add With Carry)

Tersedia pada : 8088 keatas 

Syntax : ADC Tujuan,Sumber 

Pengaruh flag : OF, SF, ZF, AF, PF 

Fungsi : Menambahkan "Sumber", "Tujuan" dan Carry Flag (1=on, 0=off),

hasilnya diletakkan pada "Tujuan". Intruksi ini biasanya dipakai  sesudah 

operasi pada pertambahan atau perkalian yang memicu  Carry. contoh 

pertambahan yang melibatkan bilangan yang besar, seperti pada contoh dibawah

ini: 

Contoh: 

 12345678h + 9ABCDEF0 = ...... 

Kedua operand di atas berukuran 4 byte. Jelas sudah melebihi kapasitas 

register. Di sinilah dipakai  mnemonic ADC. 

Contoh: 

 MOV AX,1234h ; AX = 1234 

 MOV BX,9ABCh ; BX = 9ABC 

 MOV CX,5678h ; BX = 5678 

 MOV DX,0DEF0h ; DX = DEF0 

 ADD CX,DX ; CX = 3568 CF = 1 

 ADC AX,BX ; AX = AX+BX+CF = ACF1 

Hasil penjumlahan tertampung di AX:CX yaitu ACF13568h. 

Mnemonic : ADD

Tersedia pada : 8088 keatas 

Syntax : ADD Tujuan,Sumber 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Menambahkan "Sumber" dan "Tujuan" lalu  hasilnya disimpan

pada "Tujuan". Bila hasil penjumlahan tidak tertampung seluruhnya pada MOV BL,5h 

 SUB AL,BL ; AX = 000C 

 AAS ; AX = FF06 

Mnemonic : ADC (Add With Carry)

Tersedia pada : 8088 keatas 

Syntax : ADC Tujuan,Sumber 

Pengaruh flag : OF, SF, ZF, AF, PF 

Fungsi : Menambahkan "Sumber", "Tujuan" dan Carry Flag (1=on, 0=off),

hasilnya diletakkan pada "Tujuan". Intruksi ini biasanya dipakai  sesudah 

operasi pada pertambahan atau perkalian yang memicu  Carry. contoh 

pertambahan yang melibatkan bilangan yang besar, seperti pada contoh dibawah

ini: 

Contoh: 

 12345678h + 9ABCDEF0 = ...... 

Kedua operand di atas berukuran 4 byte. Jelas sudah melebihi kapasitas 

register. Di sinilah dipakai  mnemonic ADC. 

Contoh: 

 MOV AX,1234h ; AX = 1234 

 MOV BX,9ABCh ; BX = 9ABC 

 MOV CX,5678h ; BX = 5678 

 MOV DX,0DEF0h ; DX = DEF0 

 ADD CX,DX ; CX = 3568 CF = 1 

 ADC AX,BX ; AX = AX+BX+CF = ACF1 

Hasil penjumlahan tertampung di AX:CX yaitu ACF13568h. 

Mnemonic : ADD

Tersedia pada : 8088 keatas 

Syntax : ADD Tujuan,Sumber 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Menambahkan "Sumber" dan "Tujuan" lalu  hasilnya disimpan

pada "Tujuan". Bila hasil penjumlahan tidak tertampung seluruhnya pada


(205)
"Tujuan", maka CF akan diset 1. 

Contoh: 

 ADD AX,BX ; Jumlahkan 2 register 

 ADD AL,[350] ; Jumlahkan register dengan isi memori 

 ADD [350],AL ; Jumlahkan isi memory dengan register 

 ADD AH,10h ; Jumlahkan register dengan immediate 

 ADD [350],10h ; Jumlahkan isi memori dengan immediate 

 

Mnemonic : AND

Tersedia pada : 8088 keatas 

Syntax : AND Tujuan,Sumber 

Pengaruh flag : OF, SF, ZF, PF, CF 

Fungsi : Melakukan logika AND antara "Tujuan" dan "Sumber". Hasil dari

operasi AND diletakkan pada "Tujuan". Instruksi AND biasanya dipakai  untuk 

melihat kondisi suatu bit dengan menolkan bit-bit lainnya. 

Contoh: 

 AND AL,00001000b ; AL=0000?000 

 JZ Nol ; bila  bit ketiga AL=0, maka lompat 

Mnemonic : BOUND (Check Bounds Of Array Index)

Tersedia pada : 8088 keatas 

Syntax : BOUND Tujuan,Sumber 

Pengaruh flag : Tidak ada 

Fungsi : Untuk memastikan bahwa index array bertanda   negatif atau

positif masih masuk dalam batas limit yang didiartikan  oleh Double Word blok

memory. 

Mnemonic : CALL 

Tersedia pada : 8088 keatas 

Syntax : CALL nama-procedure 

Pengaruh flag : Tidak ada 

Fungsi : Melompat dan mengerjakan intruksi pada procedure program . 

Pada saat instruksi Call diberikan, maka processor akan melakukan :
 - PUSH CS ke stack bila procedure yang dipanggil bertipe Far. 

 - PUSH IP ke stack. 

 - Mengganti nilai CS dengan segmen dari procedure bila procedure 

 itu  bertipe Far. 

 - Mengganti nilai IP dengan offset dari procedure. Lakukan 

 intruksi yang ada  pada alamat baru(CS:IP) sampai bertemu 

 dengan intruksi RET, sesudah  itu: 

 - POP IP 

 - POP CS bila procedure bertipe Far. 

 - Kembali ke program  induk/pemanggil. 

Contoh: 

 1CFE:0125 CALL N_PROC ; Push IP(=0128) ke stack, IP=1066 

 1CFE:0128 ....... 

 1CFE:0155 CALL F_PROC ; Push CS(=1CFE)&IP(=0160) ke stack 

 ; CS=1FFF,IP=0179 

 1CFE:0160 ....... 

 1CFE:1066 N_PROC PROC NEAR 

 ....... 

 ....... 

 RET ; Pop IP(=0128) 

 N_PROC ENDP 

 1FFF:0179 F_PROC PROC FAR 

 ....... 

 ....... 

 RET ; Pop IP(=0160) & CS(=1CFE) 

 F_PROC ENDP 

Mnemonic : CBW (Convert Byte To Word)

Tersedia pada : 8088 keatas 

Syntax : CBW 

Fungsi : Mengubah isi register AL menjadi AX dengan mengubah isi

register AH menjadi 0 bila AL benilai positif atau AH akan bernilai FF bila AL

negatif. 

Contoh: 

 MOV AL,FFh 

 MOV BX,123Fh 

 CBW ; AX = FFFF 

 ADD AX,BX ; AX = 123F + (-1) = 123E 

Pada bilangan bertanda  , angka FFh pada AL yaitu -1 bagi Assembler

bukannya 255 desimal. 

Mnemonic : CLC (Clear Carry Flag)

Tersedia pada : 8088 keatas 

Syntax : CLC 

Pengaruh flag : CF 

Fungsi : Membuat carry flag menjadi 0. 

Contoh: 

Untuk menjaga agar dalam operasi RCR, rotasi pertamanya yang masuk

yaitu 0 maka dipakai  CLC dahulu. 

 CLC 

 RCR AX,1 

Mnemonic : CLD (Clear Direction Flag)

Tersedia pada : 8088 keatas 

Syntax : CLD 

Pengaruh flag : DF 

Fungsi : Membuat direction flag berisi 0. Bila direction flag berisi 0 

maka pembacaan string akan berlangsung dari memory rendah ke tinggi.

Sebaliknya bila direction flag bernilai 1 maka string akan diproses dari

memory tinggi ke rendah. 

Contoh: 

 CLD ; Arah Operasi string ke kanan 

 MOV CX,0Fh ; Bandingkan 16 byte dari string 

 REPE CMPSB ; sampai ada satu yang tidak sama


Mnemonic : CLI (Clear Interrupt Flag)

Tersedia pada : 8088 keatas 

Syntax : CLI 

Pengaruh flag : IF 

Fungsi : Membuat interrupt flag menjadi 0. Bila IF berisi 0 maka semua 

interupsi akan diabaikan oleh komputer, kecuali Nonmaskable Interrupt(NMI).

biasanya CLI diberikan pada saat akan dilakukan proses yang fatal, yang mana  

terjadinya interupsi akan menghancurkan proses itu . 

Contoh: 

pelajar  akan mengubah alamat sebuah stack, dengan mengubah SS dan SP. 

Selama SS dan SP diubah, interupsi tidak boleh terjadi. ini  disebab kan

pada saat terjadi interupsi, register CS, IP dan Flags disimpan pada stack

sebagai alamat kembali nantinya. 

 MOV AX,AlmStack 

 MOV DX,AlmOffset 

 CLI 

 MOV SP,DX 

 MOV SS,AX 

 STI 

Mnemonic : CMC (Complement Carry Flag)

Tersedia pada : 8088 keatas 

Syntax : CMC 

Pengaruh flag : CF 

Fungsi : Mengubah Carry flag menjadi kebalikan dari isi semulanya, 

seperti dari 0 menjadi 1 dan sebaliknya. 

Contoh: 

Pada kebanyakan operasi, Carry flag dijadikan sebagai tanda   berhasil

atau tidaknya operasi itu . Biasanya Carry flag akan bernilai 0 bila 

operasi berhasil dan bernilai 1 bila operasi mengalami kegagalan. Dengan

memakai  perintah CMC ditambah  dengan ADC(pertambahan dengan carry flag), 

kita  dapat memanfaatkannya untuk menghitung banyaknya keberhasilan operasi



yang dilakukan, seperti: 

 MOV CX,Counter 

 XOR AX,AX 

 Ulang: 

 PUSH AX 

 Operasi 

 POP AX 

 CMC 

 ADC AX,0 

 LOOP Ulang 

Pada hasil akhir dari proses ini register AX akan berisi banyaknya

operasi yang berhasil dilakukan. 

Mnemonic : CMP (Compare)

Tersedia pada : 8088 keatas 

Syntax : CMP operand1,operand2 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Membandingkan "operand1" dengan "operand2". sedang  cara yang

dilakukan yaitu dengan mengurangkan "operand1" dengan "operand2" (operand1-

operand2). "Operand1" dan "operand2" yang dibandingkan harus memiliki  tipe

data yang sama, seperti byte dengan byte (AL,AH,BL,BH,..) atau word dengan

word (AX,BX,CX,..). Perintah CMP hanya mempengaruhi flags register tanpa

merubah isi "operand1" dan "operand2". 

Contoh: 

 

 Ulang: 

 CMP CX,AX 

 JE Exit 

 LOOP Ulang 

Mnemonic : CMPSB (Compare Strings Byte)

Tersedia pada : 8088 keatas 

Syntax : CMPSB 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Untuk membandingkan satu byte pada alamat DS:SI dengan ES:DI.


bila  direction flag bernilai 1 maka setiap selesai perbandingan register SI

dan DI akan ditambah dengan 1, sebaliknya bila  direction flag bernilai 0 maka 

setiap selesai perbandingan register SI dan DI akan dikurang dengan 1. 

Mnemonic : CMPSW (Compare Strings Word)

Tersedia pada : 8088 keatas 

Syntax : CMPSW 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Untuk membandingkan satu word pada alamat DS:SI dengan ES:DI.

bila  direction flag bernilai 1 maka setiap selesai perbandingan register SI

dan DI akan ditambah dengan 2, sebaliknya bila  direction flag bernilai 0 maka 

setiap selesai perbandingan register SI dan DI akan dikurang dengan 2. 

Mnemonic : CWD (Convert Word To Doubleword)

Tersedia pada : 8088 keatas 

Syntax : CWD 

Pengaruh flag : Tidak ada 

Fungsi : Mengubah tipe word(AX) menjadi double word(DX). Bila AX

positif maka DX akan berisi 0000, bila AX negatif maka DX berisi FFFF. 

Contoh: 

kita  dapat memanfaatkan fungsi CWD ini untuk memperoleh  bilangan

absolute. 

 Absolut MACRO Bil 

 MOV 

 TEST AX,10000000b ; Apakah AX negatif? 

 JZ Selesai ; Ya, selesai 

 CWD ; 

 XOR AX,DX ; Jadikan positif 

 SUB AX,DX ; 

 Selesai: 

 ENDM 



Mnemonic : DAA (Decimal Adjust After Addition)

Tersedian pada : 8088 keatas 

Syntax : DAA 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Mengubah hasil penjumlahan 2 bilangan bukan BCD pada register

AL menjadi bentuk BCD. bila  4 bit rendah dari AL lebih besar dari 9 maka AL

akan dikurangi dengan 10 dan AF diset menjadi 1, sebaliknya bila  4 bit rendah

AL lebih kecil atau sama dengan 9 maka AF akan dijadikan 0. DAA sebetulnya 

yaitu sama dengan AAA kecuali dalam hal bahwa DAA dapat mengatur baik

bilangan 8 bit atau  4 bit pada AL, sementara AAA hanya 4 bit. 

Contoh: 

 Bilangan BCD : 27h + 45h = ... 

 MOV AH,45h 

 MOV AL,27h 

 ADD AL,AH ; AL = 6C 

 DAA ; AL = 72 

Mnemonic : DAS (Decimal Adjust After Substraction)

Tersedia pada : 8088 keatas 

Syntax : DAS 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Mengubah hasil pengurangan 2 bilangan pada AL menjadi bentuk 

BCD. bila  4 bit rendah dari AL lebih besar dari 9 maka AL akan dikurangi

dengan 6 dan AF diset menjadi 1, sebaliknya bila  4 bit rendah dari AL lebih

kecil atau sama dengan 9 maka AF akan dijadikan 0. 

Contoh: 

 

 Bilangan BCD: 50h - 23h = ... 

 MOV AX,50h 

 SUB AX,23h ; AX = 002D 

 DAS ; AX = 0027

Mnemonic : DEC (Decrement)

Tersedia pada : 8088 keatas 

Syntax : DEC Tujuan 

Pengaruh flag : OF, SF, ZF, AF, PF 

Fungsi : Untuk mengurangi "Tujuan" dengan 1. "Tujuan" dapat berupa 

register 8 bit, 16 bit, 32 bit atau  memory. Bila kita  ingin mengurangi suatu

register ataupun memory dengan 1, pakai lah perintah DEC ini sebab  selain 

lebih cepat, perintah DEC juga memakai  memory lebih sedikit dibandingkan 

dengan perintah SUB. 

Contoh: 

pelajar  dapat mengimplementasikan perintah Loop dengan memakai  DEC. Di

bawah ini pelajar  akan menjumlahkan bilangan BX sampai 1. contoh  bila BX = 5 

maka dijumlahkan 5+4+3+2+1 = .... 

 XOR AX,AX 

Loop1 : 

 ADD AX,BX 

 DEC BX 

 CMP BX,0 

 JNZ Loop1 

Mnemonic : DIV (Divide)

Tersedia pada : 8088 keatas 

Syntax : DIV Sumber 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : Bila "sumber" bertipe 8 bit maka dilakukan pembagian AX

dengan "Sumber" (AX / Sumber). Hasil pembagian akan disimpan pada register AL

sedang  sisa pembagian akan disimpan pada regiser AH. 

bila  "sumber" bertipe 16 bit maka dilakukan pembagian DX:AX dengan "Sumber" 

(DX:AX / Sumber). Hasil pembagian akan disimpan pada register AX sedang  

sisa pembagian akan disimpan pada regiser DX. 

Contoh: 

Untuk memeriksa apakah suatu bilangan yaitu  kelipatan 3 atau bukan,
kita  bisa membaginya dengan tiga. Bila yaitu  kelipatan 3, maka sisa 

pembagian akan 0, sebaliknya bila  bukan kelipatan tiga, sisa pembagian tidak

akan 0. Macro ini akan menjadikan AL=1 bila bilangan yang ditest yaitu 

kelipatan tiga dan sebaliknya akan bernilai 0. 

Lipat3 MACRO Bil 

 MOV AX,Bil 

 MOV BX,3 

 DIV BX 

 CMP AX,0 ; Apakah ada sisa pembagian ? 

 JE Tiga ; Tidak ada sisa , kelipatan 3 

 MOV AL,0 

 Tiga : 

 MOV AL,1 

 ENDM 

Mnemonic : ENTER (Make Stack Frame) 

Tersedia pada : 8088 keatas 

Syntax : Enter Operand1,operand2 

pengaruh flag : Tidak ada 

Fungsi : Untuk memesan tempat pada stack yang dibutuhkan oleh bahasa

tingkat tinggi. 

Mnemonic :ESC (Escape) 

Tersedia pada : 8088 keatas 

Syntax : ESC Operand1,Operand2 

Pengaruh flag : Tidak ada 

Fungsi : Perintah ini dipakai  terutama pada komputer yang memiliki 

procesor lebih dari satu dan dirangkai secara paralel. Perintah ESC akan 

memicu  procesor yang sedang aktif dinonaktifkan sehingga procesor yang

lain dapat dipakai . 

Mnemonic : HLT (Halt)

Tersedia pada : 8088 keatas 

Syntax : HLT 

Pengaruh flag : Tidak ada

Fungsi : Untuk menghentikan program  atau membuat procesor dalam

keadaan tidak aktif. Sesudah  memperoleh  perintah ESC ini, procesor harus

memperoleh  interrupt dari luar atau direset untuk berjalan secara normal

kembali. 

Mnemonic : IDIV (Signed Divide)

Tersedia pada : 8088 keatas 

Syntax : IDIV Sumber 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : IDIV dipakai  untuk pembagian pada bilangan bertanda  . Bila 

"sumber" bertipe 8 bit maka dilakukan pembagian AX dengan "Sumber" (AX / 

Sumber). Hasil pembagian akan disimpan pada register AL sedang  sisa

pembagian akan disimpan pada regiser AH. 

bila  sumber bertipe 16 bit maka dilakukan pembagian DX:AX dengan Sumber(DX:AX 

/ Sumber). Hasil pembagian akan disimpan pada register AX sedang  sisa

pembagian akan disimpan pada regiser DX. 

Contoh: 

 MOV BL,10h 

 MOV AX,-10h 

 IDIV BL ; AX = 00FFh(-1) 

Mnemonic : IMUL (Signed Multiply)

Tersedia pada : 8088 keatas 

Syntax : IMUL Sumber 

 Khusus 80386: 

 IMUL Tujuan,Sumber 

 IMUL Tujuan,Pengali,Sumber 

Pengaruh flag : OF, SF, ZF, AF, PF, CF 

Fungsi : IMUL dipakai  untuk perkalian pada bilangan bertanda  . Bila 

"sumber" bertipe 8 bit maka akan dilakukan perkalian pada register AL dengan

"sumber" lalu  hasilnya disimpan pada AX. Bila "sumber" bertipe 16 bit maka 

akan dilakukan perkalian pada register AX dengan "sumber" lalu  hasilnya 

disimpan pada DX:AX. 

Contoh:
MOV AX,100h ; AX=100h 

 MOV BX,-2 ; BX=FFFEh 

 IMUL BX ; DX=FFFFh, AX=FE00h 

 

Mnemonic : IN (Input From Port) 

Tersedia pada : 8088 keatas 

Syntax : IN Operand,NoPort 

Pengaruh flag : Tidak ada 

Fungsi : Untuk mengambil data pada port. bila  "Operand" yaitu 

register AL maka akan diambil data pada port sebanyak 1 byte, bila "operand"

yaitu  register AX maka akan diambil data pada port sebanyak 1 word.

"NoPort" mencatat nomor port yang akan dibaca datanya. "NoPort" bisa langsung 

diberi nilai bila nomor port dibawah 255. Bila nomor port melebihi 255 maka

"NoPort" harus berupa register DX yang mencatat nomor port itu . 

Contoh: 

Interrupt dari keyboard diatur oleh PIC(program mable Interrupt 

Controller) yang berada pada port 21h. bila  bit ke 1 dari port 21h bernilai 1,

maka interupsi dari keyboard akan diabaikan. 

 NoKey MACRO 

 IN AL,21h 

 OR AL,00000010b 

 OUT 21h,AL 

 ENDM 

Mnemonic : INC (Increment)

Tersedia pada : 8088 keatas 

Syntax : INC Tujuan 

Pengaruh flag : OF, SF, ZF, AF, PF 

Fungsi : Untuk menambah "Tujuan" dengan 1. Bila kita  ingin menambah 

suatu register ataupun memory dengan 1, pakai lah perintah INC ini sebab  

selain lebih cepat, perintah INC juga memakai  memory lebih sedikit

dibandingkan dengan perintah ADD. 

Contoh:

 Untuk membuat suatu pengulangan, seperti pada perintah 'FOR I:=1 TO 10

DO' pada bahasa tingkat tinggi: 

 XOR AX,AX 

 Ulang: 

 CMP AX,10 

 JE Selesai 

 INC AX 

 JMP Ulang 

Mnemonic : INS (Input From Port To String)

Tersedia pada : 8088 keatas 

Syntax : INS Operand,NoPort 

Pengaruh flag : Tidak ada 

Fungsi : Untuk mengambil data dari "NoPort" yang dicatat oleh register

DX sebanyak 1 byte atau 1 word, sesuai dengan tipe "operand". Jadi "operand"

hanya berfungsi sebagai penunjuk besarnya data yang akan dibaca dari port. 

Data yang diambil dari port akan disimpan pada lokasi ES:DI. 

bila  Direction flag bernilai 0(dengan CLD) maka sesudah  intruksi INS

dijalankan register DI akan ditambah secara otomatis, sebaliknya bila 

Direction flag bernilai 1(dengan STD) maka register DI akan dikurang secara

otomatis. kita  bisa memakai  intruksi pengulangan pada string ditambah 

dengan perintah INS ini. 

Contoh: 

 

 MOV DX,123h 

 MOV CX,30 

 Ulang: 

 INS AX,DX 

 LOOP Ulang 

 

Mnemonic : INSB ( Input String Byte From Port)

Tersedia pada : 8088 keatas 

Syntax : INSB

Pengaruh flag : Tidak ada 

Fungsi : Untuk mengambil data dari nomor port yang dicatat oleh 

register DX sebanyak 1 byte. Data yang diambil dari port akan disimpan pada

lokasi ES:DI. 

bila  Direction flag bernilai 0(dengan CLD) maka sesudah  intruksi INS

dijalankan register DI akan ditambah dengan 1 secara otomatis, sebaliknya bila 

Direction flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 1

secara otomatis. kita  bisa memakai  intruksi pengulangan pada string

ditambah  dengan perintah INSB ini. 

Contoh: 

 REP INSB 

Mnemonic : INSW

Tersedia pada : 8088 keatas 

Syntax : INSW 

Pengaruh Flag : Tidak ada 

Fungsi : Untuk mengambil data dari nomor port yang dicatat oleh 

register DX sebanyak 1 Word. Data yang diambil dari port akan disimpan pada

lokasi ES:DI. 

bila  Direction flag bernilai 0(dengan CLD) maka sesudah  intruksi INS

dijalankan register DI akan ditambah dengan 2 secara otomatis, sebaliknya bila 

Direction flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 2

secara otomatis. kita  bisa memakai  intruksi pengulangan pada string

ditambah  dengan perintah INSW ini. 

Contoh: 

 REP INSW 

Mnemonic : INT (Interrupt)

Tersedia pada : 8088 keatas 

Syntax : INT NoInt 

Pengaruh flag : IF, TF 

Fungsi : Untuk membangkitkan perangkat lunak  interrupt yang bernomor 0 sampai

255. Setiap terjadi suatu interupsi data flags, CS dan IP akan disimpan pada

stack. Data ini selanjutmya dipakai  sebagai alamat kembali sesudah  komputer

melakukan suatu rutin atau interrupt handler. 

Mnemonic : INTO (Interrupt If Overflow)

Tersedia pada : 8088 keatas 

Syntax : INTO 

Pengaruh Flag : Tidak ada 

Fungsi : bila  Overflow flag bernilai 1, maka INTO akan melakukan 

interrupt 04h, sebaliknya bila  Overflow flag bernilai 0 maka interrupt 04h

tidak akan dilakukan . INTO hampir sama dengan INT hanya INTO khusus untuk

membangkitkan interrupt 04h bila  OF=1. 

Mnemonic : IRET (Interrupt Return)

Tersedia pada : 8088 keatas 

Syntax : IRET 

Pengaruh Flag : OF, DF, IF, TF, SF, ZF, AF, PF, CF 

Fungsi : dipakai  untuk mengakhiri suatu interrupt handler. IRET akan

mengambil IP, CS dan Flags yang disimpan pada stack pada saat terjadi suatu

interupsi(INT). 

Mnemonic : JA (Jump If Above)

Tersedia pada : 8088 keatas 

Syntax : JA Tujuan 

Pengaruh flag : Tidak Ada 

Fungsi : Melakukan suatu loncatan menuju "tujuan" bila CF=0 dan ZF=0. 

"Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan

bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte

kecuali pada 80386 yang mampu mencapai -32768 dan +32767. JA identik dengan

perintah JNBE yang biasanya dipakai  sesudah  dilakukan suatu perbandingan

dengan CMP. 

Catatan : JA dan JNBE melakukan operasi pada bilangan tidak bertanda  . 

Contoh:

CMP AX,BX 

 JA Besar 

Pada perintah diatas, loncatan menuju label "besar" akan dilakukan bila

pada perintah CMP diatasnya register AX lebih besar dari register BX. Perintah

JA beroperasi pada bilangan tidak bertanda   atau bilangan yang tidak mengenal 

tanda   minus. 

Mnemonic : JAE (Jump If Above or Equal) 

Tersedia pada : 8088 keatas 

Syntax : JAE Tujuan 

Pengaruh flag : Tidak Ada 

Fungsi : Melakukan suatu loncatan menuju "tujuan" bila CF=0. "Tujuan"

dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, 

besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JAE identik dengan

perintah JNB yang biasanya dipakai  sesudah  dilakukan suatu perbandingan

dengan CMP. 

Catatan : JAE dan JNB melakukan operasi pada bilangan tidak bertanda  . 

Contoh: 

 CMP AX,BX 

 JAE BesarSama 

Pada perintah diatas, loncatan menuju label "BesarSama" akan dilakukan 

bila pada perintah CMP diatasnya register AX lebih besar atau sama dengan

register BX. Perintah JAE beroperasi pada bilangan tidak bertanda   atau

bilangan yang tidak mengenal tanda   minus. 

Mnemonic : JB (Jump If Bellow) 

Tersedia pada : 8088 keatas 

Syntax : JB Tujuan 

Pengaruh flag : Tidak Ada 

Fungsi : Melakukan suatu loncatan menuju "tujuan" bila CF=1. "Tujuan"

dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini, 

besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JB identik dengan


 
perintah JNAE dan JC . 

Catatan : JB dan JNAE melakukan operasi pada bilangan tidak bertanda  . 

Contoh: 

 CMP AX,BX 

 JB Kecil 

Pada perintah diatas, loncatan menuju label "Kecil" akan dilakukan bila

pada perintah CMP diatasnya register AX lebih kecil dibandingkan dengan 

register BX. 

Mnemonic : JBE (Jump If Below or Equal)

Tersedia pada : 8088 keatas 


























FURIOUS RACING 
inilah screen shot game android yang bisa dimainkan dengan android 4 keatas pada android 7 layar 10 inch dengan memori 1 gb ,juga android 4 layar 3 inch memori 256 mb   pun game ini tidak patah patah masih bisa berjalan lancar , game   terbaik  dari yang terbaik  dalam hal  kecepatan graphic 3d nya ini buatan raptor    yang berjudul  "  FURIOUS RACING " dengan ukuran game hanya  41,8   mb  saja  ,pada game ini graphic nya  lumayan  pada dekorasi detilnya sudah cukup ,mobil anda akan berjalan biasa tidak terlalu kencang , ada  banyak mobil  yang berjalan sendiri berlalulalang ,  anda diwajibkan  menjalankan misi misi sederhana  yaitu mengendalikan mobil  dengan baik tanpa ada kesalahan misalnya menabrak anda diwajibkan menyelesaikan balapan ini dengan kecepatan tinggi mengalahkan para pesaing   ,untuk  dapat  skor anda harus menyelesaikan setiap misi dengan baik, , ada petunjuk  sederhana ,jalur biasa saja tidak panjang tidak  bagus adalah terlalu banyaknya  tikungan  ,belokan ,beberapa meter saja sudah ada tikungan tajam   ,sebab game ini hanya untuk menguji kemampuan anda menguasai jalan yang penuh tikungan bukan kecepatan saja sejak awal ,  anda   juga akan  kesulitan mengendalikan mobil  di game ini sebab harus bisa cepat mengerem ,terlalu  sensitif sedikit mengarahkan kemudi kekiri atau kekanan sedikit saja sudah menyerempet  tembok atau salah memperhitungkan jarak pandangan maka  akan menabrak  apa saja yang ada di sekitar mobil ,bila terlalu emosi menambah kecepatan anda tidak akan menyukai game ini  ,jalanya agar licin ,perlu ketelitian konsentrasi tinggi  dalam kehati hatian  game ini cocok bagi anda yang ingin belajar menyetir mobil saja,game ini dibuat khusus bagi anda yang sangat mahir mengendalikan ditikungan , sehingga anda diharapkan mampu mendalami pelajaran mengerem mobil dan kesabaran juga kehebatan dalam mengatasi jalan yang berliku dan sempit ini,anda  dapat memilih mobil , kecepatan tidak dapat ditingkatkan ,anda tidak akan  bosan memainkan game ini berulangkali sebab ini mirip simulasi agar memperoleh ijin mengemudi ,sangat sulit  mengatasi tabrakan bila anda ingin kencang dan tidak sabaran  ,  panorama perkotaanya  lumayan bagus ,ada mode trek malam siang ,tidak banyak pemandangan yang  menarik lainya   ,namun bila  anda sudah mahir anda pantas disebut hebat dan pantas mengemudi mobil yang sebenar benarnya   ,kontrol yang  sangat nyaman sebab   ada gyroscope  ada touch screen ,sehingga  bisa diatur dikendalikan tangan kiri atau kanan    ,  mobil yang ada  ukuranya  proposional dengan dekorasi sekitarnya lumayan mirip asli,rugi kalau anda tidak mencobanya tak ada salahnya  anda mencobanya,anda bisa mengunduhnya di google play store