Anda di halaman 1dari 13
Laboratorium Digital Departemen Teknik Elektro Fakultas Teknik Universitas Indonesia MODUL PRAKTIKUM MIKROPROSESOR DAN MIKROKONTROLER Modul 2: Pemrograman Mikroprosesor dengan Bahasa Assembly Tujuan: 1. Memahami hubungan antara bahasa Assembly dengan arsitektur mikroprosesor. 2. Mempelajari konsep pengolahan data dalam memori. 3. Memahami serta mempelajari cara memrogram mikroprosesor dengan bahasa Assembly. 4. Menganalisa proses manipulasi data pada mikroprosesor dan memori. Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler     Laboratorium Digital, Departemen Teknik Elektro Modul 2: Pemrograman Mikroprosesor dengan Bahasa Assembly 1  |  THE  MICROPROCESSOR-­‐BASED  PC  SYSTEM   3   2  |  THE  MICROPROCESSOR  ARCHITECTURE  3   3  |  DATA  ADDRESSING  MODES   9   4  |  ASSEMBLY  LANGUANGE  PROGRAMMING   5  |  DATA  MOVEMENT  INSTRUCTION   6  |  HOW  TO  WRITE  A  PROGRAM   7  |  REFERENCES   Copyright ©2014 13   12   11   10   Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler     MODUL 2: PEMROGAMAN MIKROPROSESOR DENGAN BAHASA ASSEMBLY 1 | THE MICROPROCESSOR-BASED PC SYSTEM CPU (Central Processing Unit) sesuai dengan namanya merupakan “otak” pada sebuah komputer. Semua kalkulasi, pengambilan keputusan, dan pemindahan data dilakukan disini. CPU memiliki tempat penyimpanan yang disebut register. Dalam sebuah CPU juga terdapat ALU (Arithmetic and Logic Unit) yang digunakan untuk melakukan operasi – operasi penjumlahan, pengurangan, inversi, OR, AND, dan XOR. Proses yang dilakukan CPU secara umum adalah sebagai berikut, mengambil data dari register, kemudian diproses, dan selanjutnya dikembalikan lagi ke register. 2 | THE MICROPROCESSOR ARCHITECTURE Pada keluarga 80x86, mikroprosesor 8086 merupakan mikroprosesor generasi pertama yang diperkenalkan pada tahun 1978. Generasi ini berkembang hingga saat ini (Pentium II di tahun 1997). Banyak sekali perbedaan – perbedaan yang terjadi pada proses metamorfosa keluarga mikroprosesor ini. Tetapi perubahan yang terjadi tetap selalu menjaga kompatibilitas mikroprosesor sebelumnya. Sehingga antara generasi pertama hingga generasi saat ini masih memiliki kesamaan karakteristik yang mendasar, kesamaan tersebut hanya terjadi bila mikroprosesor melakukan operrasi - operasi 16-bit. Berikut adalah kesamaan yang dimiliki oleh keluarga 80x86. ! General Purpose Register CPU memiliki 4 buah general purpose register yng selalu ditandai dengan akhiran X, yaitu AX (Accumulator), BX (Base), CX (Count), dan DX (Data) dengan ukuran masing-masing sebesar 16-bit. Register ini dapat dipisah menjadi dua bagian di mana masing-masing bagian terdiri atas 8-bit. Bagian pertama disebut dengan “H” (High) dan bagian yang lain sebagai “L” (Low). Register 8-bit ini dapat menyimpan bilangan bulat posistif atara 0 sampai 127 dan bilangan bulat antara –128 sampai +127. Register digunakan sebagai referensi awal untuk lokasi alamat pada RAM disebabkan transfer data antara RAM dengan CPU membutuhkan waktu yang cukup lama. +127. Register digunakan sebagai referensi awal untuk lokasi alamat pada RAM bilangan bulat posistif atara 0 sampai 127 dan bilangan bulat antara –128 sampai disebabkan transfer data antara RAM dengan CPU membutuhkan waktu yang +127. Register digunakan sebagai referensi awal untuk lokasi alamat pada RAM Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler     disebabkan transfer data7 antara RAM dengan CPU membutuhkan waktu yang 15 0 15 Accumulator AH Accumulator Base AH BH Base Count BH CH Count Data CH DH Data 7 AX AX BX BX CX CX DX 0 AL AL BL BL CL CL DL Multiply, devide, IO, dan fast arithmetic Multiply, IO, dan(data fast segment) arithmetic Pointer to devide, base address Pointer base address Count fortoloops, repeats,(data shifts,segment) dan rotates Count fordevide, loops, repeats, Multiply, dan IO shifts, dan rotates Multiply, devide, dan IO DX DH DLRegisters untuk mikroprosesor keluarga 80x86 Gambar 1 General-Purpose Gambar 1 General-Purpose Registers untuk mikroprosesor keluarga 80x86 cukup lama. Pada mikroprosesor mikroprosesor 80386 80386 ke ke atas cukup lama. Pada atas akan akan mendapat mendapat tambahan tambahan register register EAX EAX (Extended Accumulator), Accumulator),EBX EBX(Extended (Extended Base), ECX (Extended Count), (Extended Base), ECX (Extended Count), dan dan EDX Pada mikroprosesor 80386 ke atas akan mendapat tambahan register EAX EDX (Extended (Extended Data).Data). (Extended Accumulator), EBX (Extended Base), ECX (Extended Count), dan EDX ! Index IndexRegister Register (Extended Data). CPU juga juga memiliki memiliki 22 buah buah index CPU index register register yang yang selalu selalu ditandai ditandai dengan denganakhiran akhiranI,I, Index Register yaitu SI SI (Source (Source Index) Index) dan dan DI yaitu DI (Destination (Destination Index). Index). Register Register ini inidapat dapatdigunakan digunakan CPU juga memiliki 2 buah index register yang selalu ditandai dengan akhiran I, untuk penyimpanan, penyimpanan, tetapi tetapi tidak tidak dapat dapat mengakses untuk mengakses 11 byte byte pada pada satu satuwaktu waktuyang yang yaitu SI (Source Index) dan DI (Destination Index). Register ini dapat digunakan bersamaan, sehingga sehingga membuat membuat register register ini ini kurang bersamaan, kurang fleksibel. fleksibel. Tetapi Tetapi SI SI dan dan DI DI untuk penyimpanan, tetapi tidak dapat mengakses 1 byte pada satu waktu yang memilikikekhususan kekhususandalam dalammenangani menanganioperasi operasistring. string. memiliki bersamaan, sehingga membuat register ini kurang fleksibel. Tetapi SI dan DI memiliki kekhususan dalam menangani operasi string. Source string dan index pointer Source Index SI Source Index Destination Index SI DI Source string dan dan indexindex pointer Destination string pointer Destination string dan index pointer Destination Index DI Gambar 2 Index Registers untuk mikroprosesor keluarga 80x86. Gambar 2 Index Registers untuk mikroprosesor keluarga 80x86. Pada mikroprosesor mikroprosesor 80386 80386 ke atas akan Pada akan mendapat mendapat tambahan tambahan register register ESI ESI (ExtendedSource SourceIndex) Index)dan danEDI EDI(Extended (ExtendedDestination DestinationIndex). Index). (Extended Pada mikroprosesor 80386 ke atas akan mendapat tambahan register ESI ! Pointer PointerRegister Register (Extended Source Index) dan EDI (Extended Destination Index). Didalam dalam CPU CPU mengenal mengenal 3 buah pointer Di pointer register register yang yang juga jugaselalu selaluditandai ditandaidengan dengan Pointer Register akhiran P, P, yaitu yaitu IP, IP, SP, dan BP. Pada akhiran Pada mikroprosesor mikroprosesor 80386 80386 ke ke atas atas akan akan Di dalam CPU mengenal 3 buah pointer register yang juga selalu ditandai dengan mendapat tambahan register EIP (Extended Instruction Pointer), ESP (Extended akhiran P, yaitu IP, SP, dan BP. Pada mikroprosesor 80386 ke atas akan Stack Pointer), dan EBP (Extended Base Pointer). Percobaan I - Sistem Kerja Mikroprosesor " IP (Instruction Pointer) 9 Register menunjukan alamat di memori tempat dari intruksi selanjutnya akan Percobaan I - Sistem Kerja Mikroprosesor 9 dieksekusi. Ketika eksekusi selesai, IP bertambah ke instruksi berikutnya. Modul   Praktikum   Mikroprosesor   dan  MESP ikrokontroler   mendapat tambahan register EIP (Extended Instruction Pointer), (Extended   Stack Pointer), dan EBP (Extended Base Pointer). Instruksi “Jump”, nilai IP berubah mengikuti arah “Jump”. Sedangkan untuk IP (Instruction Pointer) instruksi “Call”, nilai IP akan berubah kembali setelah dikembalikan dari stack. Register menunjukan alamat di memori tempat dari intruksi selanjutnya akan " SP (Stack Pointer) dieksekusi. Ketika eksekusi selesai, IP bertambah ke instruksi berikutnya. Stack menggunakan aturan sistem penyimpanan secara LIFO (Last In First Instruksi   “Jump”,   nilai   IP   berubah   mengikuti   arah   “Jump”.   Sedangkan   untuk   Out). Stack digunakan untuk menyimpan penunjukan alamat yang akan instruksi  “Call”,  nilai  IP  akan  berubah  kembali  setelah  dikembalikan  dari  stack. terpakai kemudian, dan penunjukan alamat tersebut dapat dikeluarkan dari SP (Stack Pointer) stack pada saat akan digunakan. SP berpasangan dengan segment register Stack menggunakan aturan sistem penyimpanan secara LIFO (Last In First SS (SS:SP). Out). Stack digunakan untuk menyimpan penunjukan alamat yang akan " BP (Base Pointer) terpakai kemudian, dan penunjukan alamat tersebut dapat dikeluarkan dari BP digunakan sebagai pencatat suatu alamat di memori tempat data. BP ini stack pada saat akan digunakan. SP berpasangan dengan segment register SS berpasangan dengan segment register SS (SS:BP). (SS:SP). Pointer to base address (stack segment) Base Pointer BP Stack Pointer SP Instruction Pointer IP Pointer top of stack Gambar 3 Pointer Registers untuk mikroprosesor keluarga 80x86 ! Segmented BP (BaseAddressing Pointer) dan Segment Register “Segmented Addressing” sebuah internal tempat yang mengijinkan BP digunakan sebagaiadalah pencatat suatumekanisme alamat di memori data. BP ini mikroprosesor untuk melakukan pengalamatan sebesar 1 Mbyte pada memori berpasangan dengan segment register SS (SS:BP). utama. Dengan mekanisme ini mikroprosesor dapat mengakses memori utama Segmented Addressing dan Segment Register dengan cara mengkombinasikan 2 buah alamat 16-bit. Dua buah alamat tersebut “Segmented Addressing”   adalah   sebuah   mekanisme   internal   yang   mengijinkan   dapat di representasikan di dalam program sebagai berikut : mikroprosesor untuk melakukan pengalamatan sebesar 1 Mbyte pada memori utama 1. Dengan mekanisme inisegmen:offset mikroprosesor dapat mengakses memori utama dengan16-bit cara alamat mengkombinasikan 2 buah alamat 16-bit. Dua buah alamat alamat tersebut Pada pertama, merupakan alamat segmen. Sedangkan dapat di representasikan di dalam sebagai berikut alamat : berikutnya adalah alamat offset. program Kerja yang dilakukan segmen yaitu segmen:offset memilih 64K area memori, dan alamat offset bekerja sebagai pemilih byte di dalam area. Berikut akanmerupakan dijelaskan mengenai cara kerjanya: Pada sebuah 16-bit alamat pertama, alamat segmen. Sedangkan alamat berikutnya adalah alamat offset. Kerja yang dilakukan alamat segmen yaitu memilih 1. Alamat segmen akan digeser oleh mikroprosesor sebanyak 4-bit ke kiri, 64K area memori, dan alamat offset bekerja sebagai pemilih byte di dalam sebuah sehingga akan menghasilkan alamat 20-bit dengan akhiran 0. Operasi ini area. Berikut akan dijelaskan mengenai cara kerjanya: sama dengan efek pada perkalian 16. 2. Mikroprosesor akan menambahkan alamat 20-bit ini dengan alamat offset 16bit. Dimana alamat offset tidak mengalami pergeseran. Percobaan I - Sistem Kerja Mikroprosesor 10 sehingga akan menghasilkan alamat 20-bit dengan akhiran 0. Operasi ini sama dengan efek pada perkalian 16.   Modul  Praktikum   ikroprosesor   dan  alamat Mikrokontroler   2. Mikroprosesor akan menambahkan alamat M 20-bit ini dengan offset 16- bit. Dimana alamat offset tidak mengalami pergeseran. 3. Mikroprosesor menggunakan hasil dari alamat 20-bit ini yang disebut dengan 3. Mikroprosesor menggunakan hasil dari alamat 20-bit ini yang disebut dengan alamat fisik / physical Address yang digunakan untuk mengakses lokasi alamat fisik / physical Address yang digunakan untuk mengakses lokasi alamat alamat yang sebenarnya pada ukuran 1 Mbyte. yang sebenarnya pada ukuran 1 Mbyte. Gambar 4 merupakan ilustrasi proses “Segmented Addressing”. Sebenarnya Gambar 4 merupakan ilustrasi   proses   “Segmented Addressing”.   Sebenarnya   mikroprosesor keluarga 80x86 hanya dapat menangani pengalamatan 64K pada mikroprosesor keluarga 80x86 hanya dapat menangani pengalamatan 64K pada satu waktu (karena ukuran register yang dipergunakan hanya sebesar 16-bit). satu waktu (karena ukuran register yang dipergunakan hanya sebesar 16-bit). Dengan penggunaan mekanisme ini, mikroprosesor keluarga 80x86 mampu Dengan penggunaan mekanisme ini, mikroprosesor keluarga 80x86 mampu untuk untuk menjangkau seluruh alamat sebesar 1 Mbyte. menjangkau seluruh alamat sebesar 1 Mbyte. 15 0 16-bit segment register 15 0 Segment register shifted left 4 bits 15 0 16-bit offset 19 0 20-bit physical address Gambar 4 Mengilustrasikan bagaimana mikroprosesor keluarga 80x86 menghitung alamat fisik Ada 44 buah buah segment CS, DS, Ada segment register register yang yang selalu selaluditandai ditandaidengan denganakhiran akhiranS,S,yaitu yaitu CS, SS, dan pada mikroprosesor 80386 ke atas ke terdapat tambahan DS, SS, ES. dan Sedangkan ES. Sedangkan pada mikroprosesor 80386 atas terdapat register segmen 16-bit, yaitu FS (Extra Segment) dan GS (Extra Segment). tambahan register segmen 16-bit, yaitu FS (Extra Segment) dan GS (Extra Segment). CS (Code Segment) CS (Code (Code Segment) Segment) selalu digunakan oleh mikroprosesor untuk menunjukan " ClS tempat dari segmenselalu alamat yang instruksi berikutnya akan diproses oleh IP CS (Code Segment) digunakan oleh mikroprosesor untuk menunjukan (Instruction Pointer).alamat IP merupakan alamat offset. CS:IP tempat dari segmen yang instruksi berikutnya akan merepresentasikan diproses oleh IP instruksi berikutnya jangkauan alamat alamat memori penuh.merepresentasikan (Instruction Pointer).pada IP merupakan offset. CS:IP instruksi berikutnya pada jangkauan alamat memori penuh. " DS (Data Segment) 1 Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat Lihat percobaan III segmen di mana data-data program disimpan. Umumnya isi dari register ini Percobaan Sistem Kerjakecuali Mikroprosesor tidakI -perlu diubah pada program residen. 11 DS (Data Segment) Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat segmen di mana data-data program disimpan. Umumnya isi dari register ini Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler   tidak perlu diubah kecuali pada program residen.   Code Segment CS Data Segment DS Stack Segment SS Extra Segment ES Gambar 5 Segment Register untuk mikroprosesor keluarga 80x86 " SS SS(Stack (StackSegment) Segment) Ketika data pada pada stack, stack, proses proses tersebut tersebut Ketika mikroprosesor mikroprosesor mengakses mengakses data menggunakan Segment). SS:SP selalu menunjuk pada pada suatu alamat menggunakanSS SS(Stack (Stack Segment). SS:SP selalu menunjuk suatu dialamat memori yang merupakan posisi dari stack. di memori yang merupakan posisi dari stack. " ES ES(Extra (ExtraSegment) Segment) Register Register ES ES (Extra (Extra Segment), Segment), bonus bonus yang yang tidak tidak mempunyai mempunyai sesuai dengan dengan namanya namanya adalah adalah suatu suaturegister register sesuai suatu tugas khusus. khusus. Register Register ES ES ini inibiasanya biasanya suatu tugas digunakan alamat di di memori memori yang yang berada berada diluar diluar digunakan untuk untuk menunjukan menunjukan suatu suatu alamat daerah daerahstandar. standar. ES dalam instruksi string. Dengan caracara ini, register DI selalu ESsangat sangatberperan berperandi di dalam instruksi string. Dengan ini, register DI relatif alamat segmensegmen ES. selaluke relatif ke alamat ES. ! Flag FlagRegister Register 2 Register Adapunflag flag Registerini iniberisikan berisikan flag flag yang yang merupakan merupakan laporan laporan status status dari dari CPU CPU. .Adapun yang yangdigunakan digunakanpada padamikroprosesor mikroprosesor8086 8086keatas keatasadalah adalah:: O O D OverFlow Direction besar untuk ditempatkan didalam register Digunakan pada operasi string untuk menunjukan arah proses Digunakan pada operasi string untuk menunjukan arah proses CPU akan mengabaikan interupsi jika flag ini disable I Direction T Trap Digunakan untuk proses instrusi secara bertahap Sign Flag mencatat jika hasilinterupsi kalkulasi jika bernilai CPUakan akan mengabaikan flagnegatif. ini disable Zero Flag akan mencatat jika hasil kalkulasi bernilai 0. Z T Interrupt Enable Flag akan mencatat jika hasil yang didapat terlalu besar Flag ditempatkan akan mencatat jika hasil yang didapat terlalu untuk didalam register D SI 2 OverFlow Interrupt Enable Trap S Sign Lihat percobaan III Digunakan untuk proses instrusi secara bertahap Flag akan mencatat jika hasil kalkulasi bernilai negatif. Z IZero Flag akan mencatat jika hasil kalkulasi bernilai 0. Percobaan - Sistem Kerja Mikroprosesor A Auxiliary Carry 12 Flag akan mencatat jika operasi menghasilkan carry Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler     atau borrow pada 4-bit bagian rendah. Flag ini Flag akan mencatat jika operasi digunakan pada operasi BCD. menghasilkan carry atau A borrow pada 4-bit bagian rendah. Flag ini digunakan pada operasi BCD.mencatat jika bilangan yang dihasilkan Flag akan Auxiliary Carry P Parity P Parity C C Carry Carry Flag akan mencatat jika bilangan yang dihasilkan adalah adalah bilangan genap bilangan genap Jika terjadicarry carryatau atau borrow pada operasi aritmatika Jika terjadi borrow pada operasi aritmatika maka maka akan dicatat oleh flag. akan dicatat oleh flag. 3 1. Tabel flagyang   yangdigunakan   digunakan pada mikroprosesor 8086 atas . Tabel  11  SSusunan usunan  flag   pada   mikroprosesor   8086   ke  ke atas   NT 15 IOPL O D I T S Z A P 7 Gambar 6 Model flag untuk mikroprosesor keluarga 80x86 C 0 Sedangkan flag lain yang berlaku pada keluarga 80x86 ini adalah: Sedangkan flag lain yang berlaku pada keluarga 80x86 ini adalah : Flag yang berfungsi untuk menjaga jalannya Flag yang berfungsi untuk menjaga jalannya * * Nested   T ask     NT NT Nested Task interupsi yang terjadi secara berurutan interupsi yang terjadi secara berurutan IOPL IOPL PE PE IO Protection Level IO  Protection  Level   Flag ini terdiri atas 2 bit digunakan untuk mode Flag ini terdiri atas 2 bit digunakan untuk proteksi mode proteksi * *   Protection Enable Flag akan mencatat jika mode proteksi digunakan sebaliknya berada pada Flag akandan mencatat jikaakan mode proteksi mode real dan sebaliknya akan berada digunakan * Protection  Enable  *   MP Monitor Coprosessor * MP EM * Emulate Coprosessor Monitor   Coprosessor     * TS EM ET TS RF ET VF RF Task Switched Emulate  Coprosessor  *   * Extention  Type     Virtual 8086 mode Resume  Flag  **   Digunakan bersamauntuk flag mengemulasikan trap untuk Flag ini digunakan prosesor matematik x87 menangani terjadinya instruksi WAIT Flag untuk mengemulasikan 80286ini ke digunakan atas prosesor Flag ini matematik digunakan x87 untuk menentukan jenis prosesor matematik 80287 atau 80387 Flag ini dapat dijumpai pada mikroprosesor Flag ini dapat dijumpai pada mikroprosesor 80286 ke atas *   ** Task  SResume witched  Flag * terjadinya instruksi WAIT Flag ini dapat dijumpai pada mikroprosesor * Extention Type Digunakan flag trap untuk menangani pada modebersama real 80386 ke atas ** Flag iniakan mencatat mode proteksi Flag digunakan untukjikamenentukan jenis digunakan, sehingga memungkinkan prosesor matematik 80287 atau 80387 menggunakan mode real pada saat mode proteksi Flag ini digunakan. dapat dijumpai pada mikroprosesor ke atas pada mikroprosesor 80286 dan 80386 Tabel 2 Susunan flag tambahan yang 80386 dapat digunakan                                                                                                                       1 Penamaan flag ini digunakan oleh Microsoft®, sedangkan Intel© menambahkannya dengan akhiran F pada tiap susunan. *3 Penamaanpada flagmikroprosesor ini digunakan 80286 oleh Microsoft Terdapat ke atas , sedangkan Intel menambahkannya dengan akhiran F ** pada tiap susunan. Terdapat pada mikroprosesor 80386 ke atas * Terdapat pada mikroprosesor 80286 ke atas ** Terdapat pada mikroprosesor 80386 ke atas Percobaan I - Sistem Kerja Mikroprosesor 13 Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler     VF Flag akan mencatat jika mode proteksi digunakan, sehingga memungkinkan menggunakan mode real pada saat mode proteksi digunakan. Virtual  8086  mode  **   Tabel  2  Susunan  flag  tambahan  yang  dapat  digunakan  pada  mikroprosesor  80286  dan  80386   3 | DATA ADDRESSING MODES # MOV Instruction MOV merupakan instruksi (dalam Assembly disebut sebagai opcode—operation code) mendasar dari pemroraman Assembly. Opcode ini menyalin (copy) sebuah data dari sumber ke tujuan (source ke destination). Karena fungsinya adalah menyalin, maka data di tempat sumber akan tetap tersimpan. Secara umum penulisan intruksi ini adalah sebagai berikut: MOV dapat digunakan untuk menyalin data antara register ke register, register ke memori atau sebaliknya. MOV tidak dapat digunakan untuk menyalin data dari memori ke memori. # Register Addressing Jenis pengalamatan ini adalah untuk menyalin data dari sebuah register ke register lainnya. Pada prinsipnya seluruh register yang termasuk dalam program visible register dapat digunakan sebagai source dan destination dari mode pengalamatan ini. Namun, ukuran (jumlah bit) dari kedua source dan destination haruslah sama. Contoh: MOV CX,DX MOV ECX,EDI Segment register dapat pula menjadi source dan destination pada instruksi ini tetapi penyalinan data dari sebuah segment register ke segment register lainnya tidak dapat dilakukan secara langsung. Sehingga instruksi MOV DS,CS dikatakan sebagai instruksi illegal. Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler     # Base-plus-index Addressing Merupakan pengalamatan yang menyalin byte atau word antara sebuah register dan lokasi memori yang dialamatkan oleh base register (BP atau BX) ditambah index register (DI atau SI). Contoh: MOV [BX+DI], CL Instruksi tersebut mengkopi isi dari CL ke data segmen yang dialamatkan oleh penjumlahan BX dan DI. # Base-relative-plus-index Addressing Merupakan pengalamatan yang menyalin byte atau word antara register dan lokasi memori yang dialamatkan oleh base dan index register ditambah displacement. Contoh: MOV AX,ARRAY[BX+DI] MOV AX,[BX+DI+4] Instruksi tersebut mengisi AX dari lokasi memori data segment. Instruksi pertama menggunakan alamat yang dibentuk dari penjumlahan ARRAY, BX dan DI dan instruksi kedua dengan penjumlahan BX, DI dan 4. # Scaled-index Addressing Merupakan pengalamatan dimana register kedua yang merupakan register operand dimodifikasi dengan faktor perkalian dari x2, x4 atau x8 untuk mengubah alamat operand. Contoh: MOV EDX,[EAX+4*EBX] 4 | ASSEMBLY LANGUANGE PROGRAMMING # Memory Organization Sebuah assembler menggunakan 2 format dasar dalam mendevelop program. Salah satu method menggunakan model, yang lainnya menggunakan fullsegment. Model memori menggunakan sebuah assembler MASM. TASM assembler juga menggunakan model memori tetapi berbeda dengan MASM. Full- segment digunakan oleh kebanyakan assembler, termasuk Intel assembler, dan sering digunakan untuk mendevelop software. # Assembly Program Structure Format umum penulisan tiap baris pada pemrograman tingkat rendah adalah sebagai berikut : [label :] Mnemonic [operand1] , [operand2] [;comment] Pada bagian mnemonic ada assembler command yang tidak akan di eksekusi oleh mikroprosesor, yang disebut Assembler Directives. Assembler directives hanya merupakan instruksi bagi program tingkat rendah. Contohnya yang sering digunakan ialah ORG, EQU, END, DB, DW, DS. 5 | DATA MOVEMENT INSTRUCTION # PUSH & POP Instruction " PUSH Merupakan instruksi yang mentransfer 2 byte data ke stack. Contoh: PUSH AX Instuksi tersebut memindahkan data dari register AX ke dalam stack. " POP Merupakan instruksi yang menghapus dan memindahkan data dari stack ke sebuah register 16-bit, segment register, atau 16-bit memory location. Contoh: POP BX Instruksi tersebut menghapus data dari stack dan menempatkannya pada register BX. # Load-Effectice Address " LEA Merupakan instruksi yang mengisi 16- atau 32-bit register dengan offset address dari data yang ditunjukkan oleh operand. Contoh: LEA BX,[DI] " LDS LDS, LES, LFS, LGS, dan LSS adalah instruksi yang mengisi 16- atau 32-bit register dengan offset address dan DS, ES, FS, GS atau SS segment register dengan sebuah segment address. Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler       # String Data Transfers Terdapat 5 jenis instruksi untuk string data transfer, yaitu LODS, STOS, MOVS, INS dan OUTS. Masing-masing dari instruksi string ini memperbolehkan data transfer yang mempunyai jenis byte, word atau double word. Pada string data transfer digunakan register SI dan DI. # Miscellaneous Data Transfer Instructions Instruksi transfer data lainnya adalah XCHG, LAHF, SAHF, XLAT, IN, OUT, BSWAP, MOVSX, MOVZX dan CMOV. 6 | HOW TO WRITE A PROGRAM Untuk membuat program dalam bahasa assembly, ada beberapa hal yang harus diperhatikan, salah satunya adalah struktur program tersebut. Dari gambar dibawah ini dapat dilihat struktur untuk program bahasa assembly menggunakan emu8086. Gambar 6 Salah satu contoh struktur dan program sederhana Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler       Setelah menjalankan program diatas, dengan mengklik ikon emulate. Maka akan munjul kotak dialog yang memunculkan isi register dan RAM (Gambar 6). Gambar 7 Kotak dialog yang menerangkan isi register & ram yang dijalankan setiap baris Kemudian, ketika program telah selesai di eksekusi, program ini akan menampilkan string “Hello!” seperti pada Gambar 8. Gambar  8  Hasil  keluaran  dari  program 7 | REFERENCES Brey, Barry B. 2006. The Intel Microprocessors Architecture, Programming, and Interfacing. New Jersey: Pearson Prentice Hall.