DIKTAT KULIAH

MIKROPROSESOR dan ANTARMUKA (S1 TE)

Disusun oleh : Nyoman Bogi Aditya Karna, ST., MSEE

JURUSAN TEKNIK ELEKTRO SEKOLAH TINGGI TEKNOLOGI TELKOM BANDUNG

2002

LEMBAR PENGESAHAN DIKTAT KULIAH / MODUL / BUKU AJAR

Diktat Kuliah Judul Jenis Pada Waktu : Diktat Kuliah Pengenalan Komputer (EE 1122) : Diktat Kuliah : Program Studi S1 Teknik Elektro : Mei 2002

Identitas Penulis : Nama lengkap dan gelar Golongan / Pangkat dan NIP Jabatan Akademik Jurusan / Program / Unit Kerja Perguruan Tinggi : Nyoman Bogi Aditya Karna, ST., MSEE : 8 / 730605 : -: Teknik Elektro : Sekolah Tinggi Teknologi Telkom

Jumlah Penulis

: 1 orang

Mengetahui, Ka. Perpustakaan

Menyetujui, Kajur. Teknik Elektro

Drs. Danang Mursita, Msi
NIP : 95640125

Ahmad Tri Hanuranto, Ir. MT.
NIP : 9366069

Stack …………………………………………………………………………….. Sambungan Kontrol ……………………………………………………. Encoding Instruksi Mesin ……………………………………………………… Memory ………………………………………………………………………… Klasifikasi ……………………………………………………………. Proses Kerja (Bagaimana µP 8088 mengerjakan instruksi) …………………….Daftar Isi Judul Lembar Pengesahan Daftar Isi Terminologi …………………………………………………………………….………... . . Instruksi Mesin µP 8088 ……………………………………………………….... Segmentasi ……………………………………………………………... Register ………………………………………………………. Interfacing µP 8088 dengan Memori ………………………………………….. Instruksi JMP & JZ …………………………………………………….... Sambungan µP 8088 dengan 1 keping memori ……………………….... Sambungan Alamat ……………………………………………………..... Interaksi µP dengan Memori ………………………………………………….. Survival Guide Using DEBUG ………………………………………………… Command pada DEBUG ………………………………………………..... Kemampuan Bus ……………………………………………………….…. Struktur Memori pada µP 8088 ……………………………………………….. 8086/8088 Instruction Set Summary …………………………………………… Data Transfer …………………………………………………………… Arithmetic …………………………………………………………...... Sistem Penunjang µP 8088 …………………………………………………….... Penulisan data …………………………………………………. Instruksi MOV …………………………………………………………... Peta Memori …………………………………………………………........ Instruksi ADD & SUB …………………………………………………. Organisasi Komputer ………………………………………………………….. Mikroprosesor 8088 ……………………………………………………………. Logic …………………………………………………………………… Control Transfer ………………………………………………………. PC-XT (Personal Computer eXtended Technology) …………………………. Memori pada sistem µP 8088 …………………………………………………....... Pengalamatan ……………………………………………………….... 1 4 4 7 9 9 10 11 12 12 14 15 17 18 20 22 22 24 24 25 26 26 29 31 33 35 35 35 36 37 38 40 42 43 45 46 46 47 48 ... Hirarki ………………………………………………………………........ Pembacaan data ………………………………………………….. Sambungan Data ………………………………………………………...... Bagan Dasar µP Intel 8088 ……………………………………………………. Mikroprosesor µP 8088 ………………………………………………………..

49 51 52 56 51 51 63 69 73 74 75 76 77 78 81 Referensi . Interfacing µP 8088 dengan I/O ………………………………………………. Structural Hazard ……………………………………………………….. PPI 8255 ………………………………………………………………………… Interrupt ………………………………………………………………………… Studi Kasus Mikroprosesor secara Umum ……………………………………... Addressing Mode ………………………………………………………. Perangkat Input : Dip Switch ………………………………………….. Data Hazard ……………………………………………………………. Pipeline pada x86 ………………………………………………………………. Control Hazard ………………………………………………………….... Sambungan µP 8088 dengan 4 keping memori ………………………. Set Instruksi …………………………………………………………….Sambungan µP 8088 dengan 2 keping memori ……………………….. Address Decoder ………………………………………………………. Perangkat Output : LED ……………………………………………….

Suatu simbol biner sering disebut sebagai bit (binary digit) 4. yaitu : a. ‘6’. IC hybrid: integrasi miniatur komponen analog (contoh : Integrated Amplifier) c. ‘4’. ‘8’. ‘1’. ‘F’. ‘9’. ‘3’. Gerbang logika (Logic Gate) adalah komponen dasar dari rangkaian digital yang dibentuk dari beberapa transistor digital untuk membentuk suatu fungsi tertentu (contoh : AND Gate. ‘5’. dan TTL (TransistorTransistor Logic) 10. Kesatuan 16 simbol biner yg merepresentasikan suatu informasi disebut dgn word 8. Contoh: kita biasanya menggunakan sistem bilangan desimal (10). CMOS (Complementary MOS). ‘8’. ‘7’. Ada beberapa jenis IC dilihat dari komponen yang digabungkan.Terminologi Istilah-istilah yang sering digunakan dalam dunia komputer : 1. ‘2’. ‘9’. transistor digital dibedakan menjadi nMOS (negative Metal Oxide Semiconductor). Kesatuan 4 simbol biner yg merepresentasikan suatu informasi disebut dgn nibble 6. ‘5’. Kesatuan 8 simbol biner yg merepresentasikan suatu informasi disebut dgn byte 7. Integrated Circuit (IC) adalah gabungan komponen-komponen yang menjalankan suatu fungsi khusus dan dikemas dalam satu paket (packaging). ‘6’. INVERTER) 11. yaitu : ‘0’ dan ‘1’. 3. Dunia digital menggunakan 2 buah tegangan (0 volt dan +5 volt). ‘2’. ‘D’. Sistem bilangan adalah metode yg menyepadankan suatu besaran dengan suatu simbol tertentu. Karena hanya ada 2 besaran. Microcontroller adalah sebuah Microprocessor dengan fasilitas memori didalamnya (yang dapat diprogram oleh user) untuk mengerjakan tugas tertentu yang dikehendaki . kedua besaran tersebut akan direpresentasikan dengan sistem bilangan biner (‘0’ dan ‘1’) 9. yaitu : ‘0’. IC analog: integrasi komponen analog (contoh : Operational Amplifier) b. Tergantung dari bahan dan media pembuatannya. ASIC (Application Specific IC): integrasi komponen yang dirancang untuk melakukan suatu fungsi khusus (contoh : Prosesor pada HandPhone) 12. ‘A’. UP adalah otak dari komputer karena dialah yang bertugas menghitung dan mengontrol peralatan lain disekitarnya (contoh : Zilog dengan Z80. ‘B’. ‘7’. 2. Very Large Scale Integration (VLSI) adalah IC digital yang memiliki jumlah transistor digital lebih dari 100. Transistor adalah komponen aktif yang dapat digunakan sebagai penguat sinyal (dalam dunia analog) atau sebagai saklar (dalam dunia digital). Sistem bilangan Hexadecimal menggunakan 16 (enambelas) buah simbol untuk merepresentasikan 16 besaran. yaitu : ‘0’. Microprocessor (atau CPU = Central Processing Unit) adalah sebuah VLSI yang didesain khusus untuk memproses/mengerjakan tugas-tugas standar. ‘E’. IC digital: integrasi komponen digital ke dalam plat MOS d. 5. ‘4’. OR Gate.000 buah (contoh : Microprocessor) 13. Intel dengan PentiumTM) 14. Sistem bilangan biner (Binary) menggunakan 2 (dua) buah simbol untuk merepresentasikan 2 besaran. ‘3’. ‘C’. ‘1’. Ini berarti kita memiliki 10 buah simbol untuk menyatakan 10 buah besaran.

Peripheral adalah adalah semua perangkat yang digunakan untuk menambah utilitas/kegunaan komputer (contoh : printer. Register adalah memori yg diimplementasikan di dalam microprocessor sehingga memiliki kecepatan yg sama dgn microprocessor. Perbedaan dengan RAM adalah jika power supply ke ROM diputuskan isinya tidak akan hilang.oleh pemrogramnya dan terkadang juga diperlengkapi dengan port Input/Output (contoh : Zilog dengan Z8.d. dan kemudian ditulis kembali ke dalam RAM. dibaca. K6/2. 80486. x86 adalah sebutan untuk keluarga mikroprosesor 8086. Cx6x86. Data di dalam RAM akan hilang jika powernya dimatikan (volatile) 20. OR. K6. Variable Length Instruction (VLI) adalah set instruksi dimana lebar instruksi bervariasi tergantung kebutuhan. bus address. mouse. joystick. Pentium. DDR). Pentium IV. Fixed Length Instruction (FLI) adalah set instruksi dimana lebar semua instruksi adalah sama. Contoh : Instruksi pada uP 8088 s. Arithmetic and Logic Unit (ALU) adalah bagian dari Microprocessor yang bertugas untuk melakukan proses aritmetika (penjumlahan dan pengurangan) dan proses logika (AND. Flip-Flop menjadi komponen dasar memori (contoh : Data Flip-Flop) 17. Flip-Flop adalah rangkaian digital yg dapat digunakan untuk menyimpan suatu nilai biner (‘0’ atau ‘1’). Pentium IV 28. 80386. K6/3. Memori adalah serangkaian Flip-Flop yg dikombinasikan untuk menyimpan suatu informasi. Duron. 18. plotter. EISA (Enhanced ISA). maka data harus dapat ditulis. Celeron. Random Access Memory (RAM) adalah tempat penyimpanan sementara bagi data dan code (program) untuk dapat digunakan oleh Microprocessor sebagai scratch book (contoh : SDRAM. Cx5x86. Bus adalah jalur pengiriman sinyal informasi antar komponen. 25. terdapat bus data. PCI. dan bus control. ada yg hanya 1 instruksi = 1 byte dan ada yg 1 instruksi mencapai 4 byte. Athlon. 80286. Contoh : uP Alpha dari DEC (Digital Equipment Computer) dan PowerPC pada Apple Macintosh dari Motorola . dan Shift) pada data yang melaluinya 16. misalnya 4 byte. Intel dengan 8051) 15. gamepad) 23. Read Only Memory (ROM) adalah tipe memori yang bersifat baca saja dimana data ditulis sekali ke dalamnya dan untuk seterusnya hanya dibaca saja. Karena kemampuannya untuk menyimpan nilai biner. Register) 22. Dilihat dari jenis informasi yang dibawa. Input/Output (I/O) adalah saluran transmisi yg digunakan oleh komputer untuk berinteraksi dgn peripheral (contoh : ISA (IBM Standard Architecture). Control Unit (CU) adalah bagian dari Microprocessor yang bertugas untuk mengontrol kerja dari bagian-bagian khusus Microprocessor di atas (ALU. ROM pada umumnya digunakan sebagai tempat penyimpanan program atau pustaka (contoh : EEPROM untuk bootstrap loader). K5. HardDisk adalah tempat penyimpanan sekunder untuk penyimpanan data dan program dalam jumlah/ukuran yang besar 26. 19. MII 27. Pentium II. Jika dilihat dari lokasinya ada bus internal dan bus eksternal. Karena bersifat sebagai scratch book. 21. Parallel Port) 24.

Predict-taken dan Predict-not-taken adalah suatu metode untuk memprediksi apakah suatu instruksi jump akan dilakukan (taken) atau tidak (not-taken). Temporal locality adalah suatu metode yg menganggap : jika suatu data sedang diakses. Cycles Per Instruction (CPI) adalah ukuran kecepatan pengerjaan instruksi. 43. Complex Instruction Set Computer (CISC) adalah desain uP dimana instruksi yang dapat dijalankan oleh uP tersebut sangat banyak dan kompleks (mencapai 200 instruksi). Very Long Instruction Wide (VLIW) adalah mesin yang mengerjakan beberapa instruksi sekaligus dimana instruksi-instruksi yang akan dikerjakan dipilih oleh software secara statis 41. Control Hazard adalah yang menyebabkan stall terjadi karena eksekusi instruksi kontrol 37. Reduced Instruction Set Computer (RISC) adalah desain uP dimana instruksi yang dapat dijalankan oleh uP tersebut sangat terbatas namun sederhana (kurang dari 50 instruksi). pipeline mulai diterapkan sejak 80386DX 32. Structural Hazard adalah yang menyebabkan stall terjadi karena adanya keterbatasan resource sistem 35. Satuan lainnya adalah MOPS (Million Operation Per Second). Contoh : Sharp SH3 pada Palmtop HP320LX 31. Data Hazard adalah yang menyebabkan stall terjadi karena adanya ketergantungan data antar instruksi yg berdekatan 36. Contoh : uP 8088 s. Million Instruction Per Second (MIPS) adalah satuan kecepatan uP yg menunjukkan berapa juta instruksi yg bisa dikerjakan oleh uP tsb dalam sedetiknya. 46. MFLOPS (Million Floating Point Operation Per Second) 42. 33. Spatial locality adalah suatu metode yg menganggap : jika suatu data sedang diakses. Hazard adalah hal-hal yang menyebabkan stall terjadi.29. Pipeline adalah suatu metode yg mengeksploitasi setiap komponen di dalam uP untuk selalu bekerja setiap saat. Yang diukur adalah jumlah rata-rata cycles yang digunakan untuk mengerjakan 1 instruksi. maka kemungkinan besar data selanjutnya yg akan diakses adalah data yg pernah diakses sebelumnya (berdasarkan history) 44. Standar 1 MIPS adalah uP VAX (tahun 1970). maka kemungkinan besar data selanjutnya yg akan diakses adalah data yg letaknya berdekatan (berdasarkan space) 45. Contoh : pada x86. Paralelism adalah instruksi-instruksi yang tidak memiliki ketergantungan satu sama lainnya sehingga dapat dikerjakan pada saat yg bersamaan 38. Tomasulo algorithm adalah metode pengembangan (penggabungan) antara metode Predict-taken dan Predict-not-taken. Instruction Scheduling adalah teknik untuk meminimisasi terjadinya Data Hazard dengan cara menyusun ulang semua instruksi yang akan dikerjakan 39. Stalled adalah suatu kondisi dimana suatu instruksi baru tidak dapat dijemput sehingga penjemputannya terpaksa ditunda (delayed) sampai semua kondisi mendukung.d Pentium IV 30. . 34. Superscalar adalah mesin yang mengerjakan beberapa instruksi sekaligus dimana instruksi-instruksi yang akan dikerjakan dipilih oleh hardware khusus secara dinamis 40.

Sampai sekarangpun program Debug tetap disertakan pada saat anda menginstall MS Windows.Survival Guide using DEBUG Debug adalah suatu program kecil yang telah ada sejak MS-DOS versi 3. Dari window ‘Run’ ketikkan ‘Debug’ dan klik tombol ‘OK’. pindahlah ke subdirectory yang berisi instruksiinstruksi DOS. Salah satu dari kedua cara tersebut akan memanggil program Debug dengan menampilkan cursor berbentuk strip (-) C:\>Debug . mengubahnya (edit). Cara kedua : Di lingkungan DOS. dan menjalankan (run) instruksi-instruksi yang ada di blok tersebut. Program ini digunakan untuk melihat isi suatu blok memori (view). 2. klik ‘Start’ dan kemudian pilih ‘Run’. Cara mengaktifkan : 1.0 dikeluarkan. pindahlah ke C:\Windows\Command. dan kemudian ketik ‘Debug’ dan tekan tombol ‘Enter’. Jika Windows terinstall. Cara pertama : Di lingkungan Windows.

BX AX... …........ ..bx 0F6C:0105 mov ax.....[BX] alamat -d 0F6C:0100 0F6C:0110 0F6C:0120 0F6C:0130 0F6C:0140 0F6C:0150 0F6C:0160 0F6C:0170 kode-instruksi instruksi ! dump (view) isi memori B8 90 90 90 90 90 90 90 34 90 90 90 90 90 90 90 12 90 90 90 90 90 90 90 89 90 90 90 90 90 90 90 D8 90 90 90 90 90 90 90 8B 90 90 90 90 90 90 90 07 90 90 90 90 90 90 90 90-90 90-90 90-90 90-90 90-90 90-90 90-90 90-90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ...1234 0F6C:0103 mov ax... …................... rip.1234 AX....[bx] 0F6C:0107 -u 0F6C:0100 0F6C:0103 0F6C:0105 instruksi yg akan dijalankan ! un-assemble program B83412 89D8 8B07 MOV MOV MOV AX..... …..........Command pada DEBUG Disini Debug menanti perintah (command) dari kita command a u d f t g n l w r rxx arti assemble unassemble dump fill trace go name load write register register xx keterangan menulis instruksi-instruksi yang akan dijalankan ke memori melihat instruksi-instruksi yg ada di memori melihat isi dari memori (128 bytes ditampilkan) mengisi secara langsung suatu blok memori menjalankan instruksi-instruksi yang ada di memori instruction-by-instruction (1 ‘t’ menjalankan 1 instruksi) menjalankan semua instruksi yg ada di memori memberikan nama file yg akan di-edit atau di-save Load suatu file ke memori (nama file telah didefinisikan terlebih dahulu dengan command ‘n’) menulis isi memori ke file menampilkan isi semua register mengubah isi suatu register xx (contoh : rax... ….. ….......... rss) C:\WINDOWS>debug -f 0000 ffff 90 ! mengisi memori dari alamat 0000 sampai ffff dengan data 90H ! assemble a program -a 0F6C:0100 mov ax........ …......................4….. …..

alamat isi memori (dalam Hexadecimal) isi memori (ASCII) .

CX) ke file ‘tes.aaa -rcx CX 0000 :0007 -r AX=20CD DS=0F6C -w BX=0000 ES=0F6C ! trace program (run per instruction) CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 SS=0F6C CS=0F6C IP=0103 NV UP EI PL NZ NA PO NC MOV AX.aaa’ BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:0001=0020 ! mengubah isi register CX dari 0000 menjadi 0007 CX=0007 SS=0F6C DX=0000 CS=0F6C SP=FFEE IP=0107 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC ! menulis isi memori sebanyak 7 bytes (reg.[BX] BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:0000=20CD CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0107 MOV AX.-t AX=1234 BX=0000 DS=0F6C ES=0F6C 0F6C:0103 89D8 -t AX=0000 BX=0000 DS=0F6C ES=0F6C 0F6C:0105 8B07 -t AX=20CD BX=0000 DS=0F6C ES=0F6C 0F6C:0107 8B4701 -n tes.[BX+01] ! set filename = ’tes.aaa’ Writing 00007 bytes -q C:\WINDOWS>_ .BX ! next instruction ! run that ‘next instruction’ CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0105 MOV AX.

Organisasi Komputer Sistem mikroprosesor bekerja pada 2 level tegangan. Oleh karenanya kita dapat mempergunakan sistem bilangan Biner (Binary) untuk merepresentasikan kedua level tegangan tersebut dengan simbol ‘0’ dan simbol ‘1’. Pada umumnya. Sementara sistem yang mengenal jumlah besaran yang sangat banyak (bahkan mencapai tak berhingga) disebut sistem analog. dan (2) menyimpan informasi biner untuk sementara waktu sampai µP memiliki waktu untuk membacanya. disebut sistem digital. XOR. yaitu 0 Volt dan +5 Volt. data tersebut harus dikonversi terlebih dahulu ke sistem digital. maka diperlukan DAC (Digital to Analog Converter) yg terdapat di Sound Card dalam komputer anda . Pengubahan ini dilakukan oleh blok Input dan Output. digunakan sistem analog. SHL. Arithmetic and Logic Unit (ALU) berfungsi untuk membantu CU saat melakukan perhitungan aritmetika (ADD. Blok Output memiliki 2 fungsi yaitu (1) mengkonversi besaran biner menjadi suatu besaran tertentu. Sistem yang hanya mengenal 2 besaran. Oleh karena adanya perbedaan ini. seperti halnya mikroprosesor. sebelum mikroprosesor dapat mengolah data dari luar sistemnya. SHR) 4. Contoh : agar informasi lagu yg tersimpan di memori dapat didengarkan dari speaker. OR. Contoh : agar sinyal dari microphone dapat direkam oleh µP. Memory berfungsi untuk menyimpan informasi biner 5. diluar sistem mikroprosesor. diperlukan ADC (Analog to Digital Converter) yg terdapat di Sound Card dalam komputer anda 2. dan (2) menyimpan informasi biner dari mikroprosesor sampai perangkat luar yg akan membaca data tersebut siap. Blok Input memiliki 2 fungsi yaitu (1) mengkonversi besaran yg berlaku di luar sistem µP menjadi besaran biner. SUB) dan logika (AND. Control Unit (CU) berfungsi untuk mengatur operasi seluruh sistem dengan menghasilkan atau memproses sinyal kontrol 3. Sinyal analog I N P U T sinyal biner Microprocessor = sinyal biner Control Unit + O U T P U T sinyal analog Memory Fungsi dari masing-masing bagian : 1.

Case Study : Alat Pengukur Rata-rata Temperature 1. Blok Input adalah termometer digital untuk mengukur suhu diluar sistem dan mengubahnya menjadi representasi biner 2. 3. CU akan membaca informasi biner tersebut dan menyimpannya di memori 4. Agar uP mengetahui bahwa blok Input akan mengirim data.Cara Kerja 1. maka informasi biner tersebut dikirimkan ke uP. 2. Tegangan hasil blok Output akan menggerakkan jarum penunjuk untuk memberikan informasi rata-rata temperatur . CU setelah menerima sinyal kontrol tersebut akan membaca informasi yang diberikan oleh blok Input dan menyimpannya di memori. informasi yang disimpan di memori tersebut akan diambil kembali untuk diproses lebih lanjut dengan bantuan ALU. Hasil proses ini dikirimkan oleh CU ke blok Output. 5. 4. Sistem diluar sistem uP bekerja pada besaran analog. mengirim sinyal kontrol ‘ada data’ ke uP untuk mendapatkan perhatian uP 3. Setelah blok Input mengubahnya menjadi besaran biner. Hasil proses ini dikeluarkan ke blok Output untuk diubah menjadi suatu tegangan. Jika diperlukan. terlebih dahulu blok Input mengirim sinyal kontrol ke uP. Blok Input berfungsi untuk mengubah besaran tersebut menjadi besaran biner yang dapat dimengerti oleh uP. CU harus memproses semua informasi yang telah terkumpul dan menghitung rata-ratanya 5. Setelah informasi terkumpul selama 1 menit. Blok Output akan mengubah besaran biner menjadi suatu besaran tertentu sesuai keinginan pembuatnya.

Sebelum uP dapat menuliskan suatu data ke memori. menyimpan (menulis) informasi ke memori Seperti halnya manusia yg ingin menulis pada suatu buku dan membaca suatu informasi dari buku. 2. terlihat bahwa uP dapat : 1. Proses pembacaan data oleh uP dari memori (arah data : uP ! memori) alamat read 8088 memori data Urutan kerja : 1. data yg sesuai dikirimkan oleh memori ke µP8088 .). pertama-tama uP harus menyediakan informasi mengenai dimana data tersebut akan ditulis. setelah menerima sinyal read. alinea. µP8088 mengirimkan sinyal read ke memori 3.e. Informasi mengenai ‘dimana data tersebut’ disebut dengan Alamat.Interaksi µP dengan memori Dari bagan organisasi komputer di atas. nomor halaman. pertama-tama uP harus menyediakan informasi mengenai dimana data tersebut berada. baris. memori mencari data yg diinginkan µP8088 sesuai dgn alamat yg diberikan 4. µP8088 mempersiapkan alamat (lokasi) dari data yg akan dibaca 2. pertama-tama manusia harus dapat menentukan dimana lokasi informasi tersebut berada (i. etc. dimana : sebelum uP dapat membaca data dari memori. mengambil (membaca) informasi dari memori. Hal yg sama juga berlaku di uP. Baru setelah itu dapat menuliskan informasinya atau membaca informasinya.

µP8088 mempersiapkan alamat (lokasi) dimana data akan ditulis (diletakkan) 2. . µP8088 mempersiapkan data yg akan ditulis 3. µP8088 mengirimkan sinyal write ke memori 4. memori membaca data yg diberikan oleh µP8088 dan meletakkannya sesuai dgn alamat yg ditentukan Pada proses penulisan dan pembacaan data. dan (3) kontrol baca/tulis. (2) data. dan (3) bus kontrol. setelah menerima sinyal write. uP8088 menggunakan 3 (tiga) buah saluran khusus untuk mengirimkan (1) alamat.Proses penulisan data oleh uP ke memori (arah data : uP " memori) alamat 8088 data write memori Urutan kerja : 1. Ketiga saluran ini disebut sebagai (1) bus alamat. (2) bus data.

.

Register Segment Register = 50 = 0E 0101 0reg 000reg110 (0101 0000): reg=000(AX) (0000 1110): reg=01(CS) contoh 1: PUSH AX contoh 2: PUSH CS . (10001000 11011000) w=0. 3.[1234] = A13412 (10100001 34H 12H)) w=1. mod=00. = 8907 d=0.[BX] MOV AX.1234 MOV AL.[BX] = 88D8 d=0.AL MOV [BX]. mod=00. 2. 4. Hi-data=12H = B078 (10110000 78H ) w=0. = 8807 d=0. reg=000(AX). mod=00. reg=000(AL).addr-high=12H PUSH . (10001001 00000111) w=1. reg=011(BX). data=78H contoh 3: MOV AX. Low-data=34H. reg=000(AL). reg=000(AX). (10001001 11011000) w=1.8086/8088 Instruction Set Summary DATA TRANSFER MOV – Move 1. reg=000(AL). (10001000 00000111) w=0. mod=00. 2.BL MOV AX. Reg/Mem to/from Reg Immediate to Register Memory to Accumulator Accumulator to Memory 1000 10dw 1011 wreg 1010 000w 1010 001w modregr/m data addr-low addr-low data (w=1) addr-high addr-high contoh 1: MOV AL. = 89D8 d=0.78 = B83412 (10111000 34H 12H) w=1.Push 1. reg=000(AX).BX MOV [BX].addr-low=34H. reg=011(BL). (10001011 00000111) w=1.addr-low=34H. (10001010 00000111) w=0. r/m=000(AL) r/m=000(AX) r/m=111([BX]) r/m=111([BX]) r/m=111([BX]) r/m=111([BX]) contoh 2: MOV AX. mod=11.AX MOV AL. = 8B07 d=1. mod=11.AX = A33412 (10100011 34H 12H)) w=1.addr-high=12H contoh 4: MOV [1234]. = 8A07 d=1.

2. w=1. (00000000 d=0.1234 = 81EB3412 (10000001 11101011 34H 12H) sw=01.1234 = 2D3412 (00101101 34H 12H) w=1. r/m=011(BL) contoh 2: ADD BX.1234 = 053412 (00000101 34H 12H) w=1.CX SUB BL. Low-data=34H. 2. Register Segment Register = 58 = 0F 0101 1reg 000reg111 (0101 1000): reg=000(AX) (0000 1111): reg=01(CS) contoh 1: POP AX contoh 2: POP CS ARITHMETIC ADD .Pop 1.CL = 29CB = 28CB (00101001 d=0. reg=001(CL). mod=11. Reg/Memory and Reg Immediate from Reg/Mem Immediate from AX/AL 0010 10dw 1000 00sw 0010 110w modregr/m mod101r/m data data data (w=1) data(sw=01 contoh 1: SUB BX. r/m=011 contoh 3: SUB AX. r/m=011(BX) 11001011) mod=11.POP . reg=001(CL). w=0. r/m=011 contoh 3: ADD AX.1234 = 81C33412 (10000001 11000011 34H 12H) sw=01.CX ADD BL. Reg/Mem with Register Immediate to Reg/Mem Immediate to AX/AL 0000 00dw 1000 00sw 0000 010w modregr/m mod000r/m data data data (w=1) data(sw=01 contoh 1: ADD BX. 3. mod=11. Low-data=34H. (00101000 d=0. w=1. Hi-data=12H SUB . r/m=011(BL) contoh 2: SUB BX. r/m=011(BX) 11001011) mod=11. 11001011) mod=11. w=0. reg=001(CX). reg=001(CX). 2. Hi-data=12H .Subtract 1.CL = 01CB = 00CB (00000001 d=0.Add 1. 11001011) mod=11. 3.

LOGIC NOT .Jump on Equal/Zero contoh: -a 100 0D9C:0100 0D9C:0102 0D9C:0104 0D9C:0106 0D9C:0108 -u 100 0D9C:0100 0D9C:0102 0D9C:0104 0D9C:0106 jmp 010f jmp 0100 jz 010f jz 0100 1110 1011 0111 0100 disp disp EB0D EBFC 7409 74F8 JMP JMP JZ JZ 010F 0100 010F 0100 jadi: JMP JMP JZ JZ 010F 0100 010F 0100 = = = = EB0D EBFC 7409 74F8 (11101011 (11101011 (01110100 (01110100 00001101):jump 11111100):jump 00001011):jump 11111000):jump 0D(=+13) FC(=-4) 09(=+9) FB(=-8) bytes bytes bytes bytes forward forward forward forward (IP=IP+13) (IP=IP-4) (IP=IP+9) (IP=IP-8) (angka minus menggunakan format 2’s complement) .Unconditional Jump Direct w/in Segment Short JE/JZ .And 1111 011w 1101 00vw 1101 00vw 0010 00dw 1000 000w 0010 010w 0000 10dw 1000 000w 0000 110w 0011 00dw 1000 000w 0011 010w mod01 0r/m mod10 0r/m mod10 1r/m modregr/m mod100r/m data modregr/m mod001r/m data modregr/m mod110r/m data 1.Or data data (w=1) data (w=1) XOR .Exclusive Or data data (w=1) data (w=1) CONTROL TRANSFER JMP . 3. 2. 2. Reg/Memory and Reg Immediate to Reg/Mem Immediate to AX/AL Reg/Memory and Reg Immediate to Reg/Mem Immediate to AX/AL Reg/Memory and Reg Immediate to Reg/Mem Immediate to AX/AL data data (w=1) data (w=1) OR . 2.Invert SHL = Shift Logical Left SHR = Shift Logical Right AND . 3. 1. 3. 1.

IP) r/m: if r/m = 000 then EA = (BX) + (SI) + DISP if r/m = 001 then EA = (BX) + (DI) + DISP if r/m = 010 then EA = (BP) + (SI) + DISP if r/m = 011 then EA = (BP) + (DI) + DISP if r/m = 100 then EA = (SI) + DISP if r/m = 101 then EA = (DI) + DISP if r/m = 110 then EA = (BP) + DISP* if r/m = 111 then EA = (BX) + DISP if s:w=01 then 16 bits of immediate data form the operand if s:w=11 then an immediate data byte is sign extended to form the 16-bit operand REG is assigned according to the following table: 16-Bit (w=1) 000 AX 001 CX 010 DX 011 BX 100 SP 101 BP 110 SI 111 DI 8-Bit (w=0) 000 AL 001 CL 010 DL 011 BL 100 AH 101 CH 110 DH 111 BH Segment 00 ES 01 CS 10 SS 11 DS .NOTES: d = direction: if d=1 then ‘to’ reg (Reg ! Mem) if d=0 then ‘from’ reg (Reg ! Reg. disp-low and disp-high are absent disp = displacement: show how far should the CPU jump from recent point (reg. Mem ! Reg) w = word: if w=1 then word operation (1 word = 2 bytes) if w=0 then byte operation mod = mode: if mod=11 then r/m is treated as a REG field if mod=00 then DISP=0.

F7 AX Yang tercetak tebal merupakan op-code nya dimana : B8 berarti MOV AX.f7 push ax B83412 B3F7 50 MOV MOV PUSH AX. ?? .1234 mov bl.Instruksi pada uP selalu memiliki 2 bagian yaitu operation code (op-code) dan data. ?? ?? B3 berarti MOV BL. Instruksi 1 byte : Instruksi 2 byte : Instruksi 3 byte : Instruksi 3 byte : -a 0100 0EA0:0100 0EA0:0103 0EA0:0105 -u 0100 0EA0:0100 0EA0:0103 0EA0:0105 op-code op-code op-code op-code data data data data data data mov ax.1234 BL.

.

Dipasarkan dengan format 40-pin CERDIP (Ceramic Dual Inline Package). berarti ada 1048576 lokasi memori yg dpt dialamati read : sinyal kontrol untuk membaca write : sinyal kontrol untuk menulis clock : frekuensi kerja µP8088 (5 MHz atau 8 MHz) reset : menginisialisasi kembali semua isi register ALE : Address Latch Enable.d pin 16 menyimpan informasi alamat . Mikroprosesor ini termasuk keluarga mikroprosesor 8 bit dan 16 bit. depletion load. Mikroprosesor Intel 8088 kompatible secara langsung dengan software yang didesain untuk mikroprosesor 8086 dan 8080/8085. dan secara hardware juga kompatible dengan mikroprosesor 8080/8085.Mikroprosesor 8088 Mikroprosesor Intel 8088 adalah multipurpose mikroprosesor yang diimplementasikan dengan teknologi N-channel. GND A14 A13 A12 A11 A10 A9 A8 D7 / A7 D6 / A6 D5 / A5 D4 / A4 D3 / A3 D2 / A2 D1 / A1 D0 / A0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc A15 A16 A17 A18 A19 read write 8088 ALE Keterangan GND Vcc D0 – D7 clock GND reset : ground (0 volt) : +5 volt : Data bus (8 informasi biner = 1 byte) ada 28 = 256 kombinasi data (00H – FFH) ! untuk kode ASCII A0 – A19 : Address bus (20 informasi biner) ada 220 = 1048576 kombinasi harga. menandakan bahwa pin 9 s. silicon gate (HMOS-II).

9 – 16). selain CU dan ALU. Memori ini disebut dengan register. µP dengan 1 buah alamat (A) hanya dapat mengakses 2 blok memori yaitu pada saat A=0 dan A=1 blok 0 uP blok 1 b.8 GHz). Untuk mempercepat pemrosesan data di dalam mikroprosesor. uP harus mengakses memori setiap saat. Contoh: µP8088 adalah microprocessor 8-bit karena jumlah pin untuk bus data sebanyak 8 buah (D0–D1–D2–D3–D4–D5–D6–D7 : pin no.Kemampuan Bus 1. Dan karena kecepatan memori jauh lebih lambat dari uP (sebagai contoh uP Pentium IV telah mencapai kecepatan 2 GHz sedangkan DDRAM maksimum hanya memiliki kecepatan 0. Register Pada bagan organisasi komputer. Sedangkan bus kontrol memiliki lebar 1 saluran untuk setiap fungsi. Lebar dari bus data sering digunakan untuk mengklasifikasikan uP. 2. dapat diakses jika A = 1 uP dengan 2 buah alamat (A0 dan A1) hanya dapat mengakses 4 blok memori yaitu pada saat A0 uP A1 blok 00 blok 01 blok 10 blok 11 dapat diakses jika A0 = 0 dan A1 = 0 dapat diakses jika A0 = 1 dan A1 = 0 dapat diakses jika A0 = 0 dan A1 = 1 dapat diakses jika A0 = 1 dan A1 = 1 dapat diakses jika A = 0 Jumlah jalur alamat 1 2 16 20 total blok memori 21=2 22=4 216=65536 220=1048576 kapasitas memori (1 blok memori = 1 byte) 2 byte 4 byte 65536 byte = 64 Kbyte 1048576 byte = 1024 Kbyte = 1 Mbyte keterangan i8080. Lebar dari bus alamat menyatakan jumlah maksimum blok memory yg dapat diakses oleh mikroprosesor. mikroprosesor juga akan membutuhkan memori yg memiliki kecepatan sama dengan uP. memori tersebut harus diimplementasikan didalam mikroprosesor. Z80 i8088 Contoh: uP 8088 memiliki bus alamat dengan lebar 20 bit sehingga uP 8088 dapat mengakses memori berkapasitas maksimum 220=1048576 blok memori atau 1 Mb. memori diletakkan terpisah dari mikroprosesor. Jika bagan tersebut diimplementasikan. Untuk melakukannya. maka kecepatan kerja uP akan sangat dipengaruhi oleh kecepatan memori. a. .

FFFFH atau 216 = 65536 kombinasi harga. DH. CH. BP (Base Pointer). DF. DI (Destination Index). CS (Code Segment). ZF (Zero Flag). SI (Source Index). IP (Instruction Pointer) dan BX (Base) -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0100 NV UP EI PL NZ NA PO NC 3. IF. uP membutuhkan alamat dari data tersebut yg disimpan oleh register alamat. Terdiri dari: SP (Stack Pointer). DL). CL. PF.Jenis register berdasarkan informasi yg disimpannya dapat dibagi menjadi 4. ES (Extra Segment). SS (Stack Segment). BH. CF (Carry Flag) Flag : OF DF IF TF SF ZF AF PF CF -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0100 NV UP EI PL NZ NA PO NC 4. BL. 16 bit 8 bit AH AL . kecuali register data dapat diakses dalam format 8 bit = 1 byte (AH. BX (Base). Register Alamat karena jumlah register data sangat terbatas. TF. Sehingga setiap register dapat berharga 0000H s. Register Data digunakan untuk menyimpan data yg diperlukan untuk suatu operasi Terdiri dari: AX (Accumulator). Register Status (Flags) digunakan untuk menyimpan status dari hasil operasi yg menggunakan ALU. Setiap register akan diakses (dibaca/ditulis) dalam format 16 bit tersebut. Untuk dapat mengaksesnya. DS (Data Segment). DX (Data) -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0100 NV UP EI PL NZ NA PO NC 2. Terdiri dari: OF (Overflow Flag). AL. 1.d. SF (Sign Flag). CX (Counter). Register Instruksi digunakan untuk menyimpan instruksi yang sedang dikerjakan Catatan: Register BX selain dapat digunakan sebagai register data dapat juga digunakan sebagai register alamat Lebar semua register uP8088 adalah 16 bit = 2 byte. AF. maka sebagian besar data tetap diletakkan di memori.

BH CH DH BL CL DL .

F..F..^....F...3.F....... .V..F . dan pada alamat 0001 isi datanya E8..F..4.^.F. .. Alamat 0D9C:0100 0D9C:0110 0D9C:0120 0D9C:0130 0D9C:0140 0D9C:0150 0D9C:0160 0D9C:0170 0E C9 C8 AE 8B 00 89 F8 E8 C3 08 FC 46 00 46 FF DC 8B 00 89 F8 C7 FA 5E FC 46 00 46 FF 46 89 FA 89 F8 C7 FA 5E FE 56 89 46 FF 46 89 FA 00 FC 46 data (Hexa) FA 5E FE 56 89 00 0B FE 89-56 FA-89 00-00 FC-0B 46-FE C7-46 D0-75 8B-46 FC 46 C7 D0 8B F8 04 FE 0B FE 46 75 46 41 33 C9 D0 8B F8 04 FE 00 C0 C3 75 34 40 33 C9 0E C9 C8 04 00 00 C0 C3 E8 C3 08 33 8B 0E C9 C8 80 8B 00 C0 0D E8 C3 08 FC 46 00 data (ASCII) ...... Dari hasil ‘dumping’ memori dgn Debug. Dapat dilihat bahwa pada alamat 0000 isi datanya 0E... FFFFFH) atau 2 byte 2.. .3.u.. data yg diakses untuk setiap alamat adalah 8 bit atau 1 byte contoh : Alamat (dlm Hexa) FFFF ! 1 0 data yg disimpan pada alamat tsb (dlm Biner) (dlm Hexa) 0 0 1 0 1 0 = 8A 8000 ! 1 1 1 0 1 0 0 0 = E8 0002 ! 0001 ! 0000 ! 1 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 0 = BC = 0D = FE Alamat dari suatu cell memori direpresentasikan dalam format 2 byte (0000H – FFFFH) yg disimpan dalam register alamat (yg lebarnya juga 2 byte). .Struktur Memori pada µP 8088 Memori pada sistem µP 8088 memiliki dua ciri : 1.F.. .F. ...F. dst.u.A...V...........F.. Dan karena suatu cell memori menyimpan data 1 byte (00H – FFH) maka suatu register alamat µP 8088 dapat mengakses (membaca/menulis) memori berkapasitas 65536 byte = 64 KByte..F...d.@... memori ditampilkan dalam format 128 byte.^..3... diakses dgn alamat selebar 16 bit (00000H s.. Karena kapasitas register alamat adalah 2 byte.. maka jumlah cell memori yg dapat disimpan alamatnya adalah 216 = 65536 cell memori.. dan pada alamat 0002 isi datanya DC...u....F..F..F..V. .

.

Secara fisik. Alamat tersebut akan disimpan didalam register alamat. Untuk mengatasi kekurangan ini. Intel menggunakan 2 register untuk pengalamatan. Ini berarti jika suatu register alamat menyimpan alamat memori.d FFFFFH. Contoh: Segment address Offset address Physical Address DS = BX = DS+BX FFFFF FFFFE FFFFD Segment F000 F0001 F0000 1FFFF 1FFFE Segment 1000 10002 10001 10000 0FFFF 0FFFE Segment 0000 00002 80 Offset 0002 9A 2B 53 06 7A Offset Offset Offset Offset Offset 0002 0001 0000 FFFF FFFE 64 20 15 55 CD Offset 0001 Offset 0000 Offset FFFF Offset FFFE 1024 64 4 bit 0 0 FA 3B 43 4 bit F 0 F 4 bit 8 0 8 4 bit C 0 C 4 bit 5 5 Offset FFFF Offset FFFE Offset FFFD 64 . dia hanya dapat digunakan untuk mengakses alamat 0000 sampai FFFF atau 64 KByte. µP 8088 memiliki register alamat dengan lebar hanya 16 bit dari 20 yang dibutuhkan untuk mengakses semua memori. Satu register akan menyimpan alamat segment (suatu area memori seluas 64 Kbyte). dan Satu register akan menyimpan alamat offset (menentukan byte yang mana di dalam segment tersebut yg akan diakses). Namun masalah timbul pada lebar register alamat. Ke20 bit tersebut digunakan untuk mengakses memori dgn kapasitas 220 = 1048576 cell.Segmentasi Mikroprosesor harus dapat mengakses semua cell memori dari alamat terendah sampai alamat tertinggi. uP8088 memiliki 20 buah jalur alamat (A0 – A19) untuk menyediakan informasi alamat selebar 20 bit dimana informasi alamat tersebut dapat berharga 00000H s.

BX (Base Register) menyimpan alamat offset dari data yang akan menentukan data mana di dalam 64 Kb tadi yang akan diambil Segment untuk Stack ! SS:SP SS (Stack Segment) menyimpan alamat segment (64 Kb of memory) dari stack.EXE) atau hanya menggunakan sebuah segment untuk menampung program + data + stack + extra (format program *.COM) C:\WINDOWS\COMMAND>debug -n CHKDSK. SP (Stack Pointer) menyimpan alamat offset dari top of the stack yang akan menentukan tumpukan (stack) mana di dalam 64 Kb tadi yang akan diambil (POP) Extra Segment ES (Extra Segment) menyimpan alamat segment (64 Kb of memory) yg digunakan untuk tambahan lokasi penyimpanan data jika segment Data tidak mencukupi. segment stack ada di segment nomor 1086 3. segment data = segment extra = 0F8C C:\WINDOWS\COMMAND>debug -n FORMAT.COM -l " loading file ‘format.com’ ke memori -r AX=0000 BX=0000 CX=28E7 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=0F8C ES=0F8C SS=0F8C CS=0F8C IP=0100 NV UP EI PL NZ NA PO NC Perhatikan bahwa program berekstensi COM hanya menggunakan 1 segment yaitu segment nomor 0F8C .00001 DE Offset 0001 00000 1F Offset 0000 µP8088 menyediakan 4 segment untuk menjalankan suatu program. IP (Instruction Pointer) menyimpan alamat offset dari program yang akan menentukan instruksi mana di dalam 64 Kb tadi yang akan dieksekusi Segment untuk Data ! DS:BX DS (Data Segment) menyimpan alamat segment (64 Kb of memory) dari data. Suatu program dapat memakai 4 segment yg berbeda-beda (format program *. Segment untuk Program (Code/Instruksi) ! CS:IP CS (Code Segment) menyimpan alamat segment (64 Kb of memory) dari program.EXE -l " loading file ‘chkdsk. segment program ada di segment nomor 0F9C 2.exe’ ke memori -r AX=0000 BX=0000 CX=0AA0 DX=0000 SP=4000 BP=0000 SI=0000 DI=0000 DS=0F8C ES=0F8C SS=1086 CS=0F9C IP=0000 NV UP EI PL NZ NA PO NC Perhatikan bahwa program berekstensi EXE menggunakan 3 segment : 1.

SP AX. SHR) Kontrol digunakan untuk memindahkan kontrol instruksi ke suatu lokasi baru (tidak lagi secara sekuensial). Suatu program bahasa Pascal tidak akan dapat dieksekusi secara langsung oleh mikroprosesor.Instruksi Mesin µP 8088 Instruksi mesin (machine instruction) adalah instruksi-instruksi yg dapat dikerjakan oleh suatu mikroprosesor. Bahasa PASCAL Begin 0F9C:0000 0F9C:0005 0F9C:0006 0F9C:0008 0F9C:000A 0F9C:000F 0F9C:0010 0F9C:0011 0F9C:0012 0F9C:0014 0F9C:0015 0F9C:0016 0F9C:0017 Hasil Compile 9A00009E0F 55 89E5 31C0 9ACD029E0F 90 90 90 EB03 90 90 90 5D CALL PUSH MOV XOR CALL NOP NOP NOP JMP NOP NOP NOP POP 0F9E:0000 BP BP. OR. sehingga agar mikroprosesor dapat mengerti isi program tersebut. SUB. MUL. JZ. Contoh: JMP. yaitu : Data transfer digunakan untuk (1) memindahkan data dari suatu elemen memory ke elemen memory lainnya atau (2) mengisi register data dengan suatu data. instruksi mesin di µP 8088 dapat dibedakan menjadi 3.AX 0F9E:02CD inline($90/ $90/ $90). XOR. NOT. POP Aritmetika dan Logika digunakan untuk mengkalkulasi suatu perhitungan aritmetika (contoh: ADD. Dilihat dari fungsi yg dilakukannya. JE . SHL. terlebih dahulu kita harus meng-compile program tersebut agar menjadi instruksi mesin. inline($90/ $90/ $90). exit. DIV) dan logika (contoh: AND. PUSH. 0017 BP Pada contoh diatas tampak bahwa hasil penterjemahan instruksi PASCAL “exit” adalah instruksi mesin “JMP”. Contoh: MOV. end.

Register ! Memory (data yg akan ditulis ke register berasal dari memory.al : tidak bisa karena AL = 1 byte dan DX = 2 byte . AH ke reg. dan alamat dari data disimpan di register alamat) 4. Register ! Data (data yg akan ditulis ke register ditulis langsung di instruksi) 2.BX BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC BX=AB56 ES=0F6C CX=0000 SS=0F6C DX=0000 CS=0F6C SP=FFEE IP=0109 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC catatan: Instruksi berikut akan menimbulkan Error : mov ch.AH BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0107 MOV AX. mengisi reg.abcd ah. AX -r AX=0000 BX=0000 DS=0F6C ES=0F6C 0F6C:0100 BBCDAB -t AX=0000 BX=ABCD DS=0F6C ES=0F6C 0F6C:0103 B456 -t AX=5600 BX=ABCD DS=0F6C ES=0F6C 0F6C:0105 88E3 -t AX=5600 BX=AB56 DS=0F6C ES=0F6C 0F6C:0107 89D8 -t AX=AB56 DS=0F6C CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0100 MOV BX.5678 : tidak bisa karena CH = 1 byte dan datanya 2 byte mov dl.ABCD BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0103 MOV AH.bx " " " " mengisi reg.56 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0105 MOV BL.ax : tidak bisa karena AX = 2 byte dan DL = 1 byte mov dx. BL reg.56 bl. Register ! Register (data yg akan ditulis ke register berasal dari register lainnya) 3. dan alamat memory yg akan ditulis disimpan di register alamat) Contoh instruksi MOV untuk pengisian langsung (1) dan transfer antar register (2) -a 0F6C:0100 0F6C:0103 0F6C:0105 0F6C:0107 0F6C:0109 mov mov mov mov bx. mengcopy isi mengcopy isi AX dgn data ABCDH AH dgn data 56H reg. BX ke reg.ah ax.Instruksi MOV 1. Memory ! Register (data yg akan ditulis ke memory berasal dari register.

.. BX dgn memori pada memori pada memori pada isi reg.[BX] BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:0002=0302 CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0107 MOV AX... -r AX=0000 BX=0000 DS=0F6C ES=0F6C 0F6C:0100 BB0200 -t AX=0000 BX=0002 DS=0F6C ES=0F6C 0F6C:0103 8A27 -t AX=0200 BX=0002 DS=0F6C ES=0F6C 0F6C:0105 8B07 -t AX=0302 BX=0002 DS=0F6C ES=0F6C 0F6C:0107 8B4701 -t AX=0403 BX=0002 DS=0F6C ES=0F6C 0F6C:010A 8907 -t AX=00A0 BX=0002 DS=0F6C ES=0F6C 0F6C:010C 90 -d 0F6C:0000 0F6C:0010 0F6C:0020 0F6C:0030 CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0100 MOV BX... !”#$%&’()*+.[bx] ax.[bx+1] [bx].../ 0123456789:.#? @ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^_ `abcdefghijklmno pqrstuvwxyz{|}~..ax " " " " " mengisi membaca membaca membaca menulis reg...-..-......0002 ah.....[bx] ax.... ../ 0123456789:..... ......0002 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0103 MOV AH.#? ......Contoh instruksi MOV untuk transfer Register ! Memory (3) dan transfer Memory ! Register (4) -a 0F6C:0100 0F6C:0103 0F6C:0105 0F6C:0107 0F6C:010A 0F6C:010C -d 0F6C:0000 0F6C:0010 0F6C:0020 0F6C:0030 0F6C:0040 0F6C:0050 0F6C:0060 0F6C:0070 mov mov mov mov mov bx..........AX BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:0002=0302 CX=0000 DX=0000 SS=0F6C CS=0F6C NOP SP=FFEE IP=010C BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC 00 10 20 30 01 11 21 31 03 12 22 32 04 13 23 33 04 14 24 34 05 15 25 35 06 16 26 36 07-08 17-18 27-28 37-38 09 19 29 39 0A 1A 2A 3A 0B 1B 2B 3B 0C 1C 2C 3C 0D 1D 2D 3D 0E 1E 2E 3E 0F 1F 2F 3F . AX data 0002H alamat BX sebanyak 1 byte (AH) alamat BX sebanyak 2 byte (AX) alamat BX+1 sbanyak 2 byte (AX) ke memori pada alamat BX 00 10 20 30 40 50 60 70 01 11 21 31 41 51 61 71 02 12 22 32 42 52 62 72 03 13 23 33 43 53 63 73 04 14 24 34 44 54 64 74 05 15 25 35 45 55 65 75 06 16 26 36 46 56 66 76 07-08 17-18 27-28 37-38 47-48 57-58 67-68 77-78 09 19 29 39 49 59 69 79 0A 1A 2A 3A 4A 5A 6A 7A 0B 1B 2B 3B 4B 5B 6B 7B 0C 1C 2C 3C 4C 5C 6C 7C 0D 1D 2D 3D 4D 5D 6D 7D 0E 1E 2E 3E 4E 5E 6E 7E 0F 1F 2F 3F 4F 5F 6F 7F .. !”#$%&’()*+.[BX+01] BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:0003=0403 CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=010A MOV [BX]......[BX] BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:0002=02 CX=0000 DX=0000 SP=FFEE SS=0F6C CS=0F6C IP=0105 MOV AX.......

AX bukan register alamat reg.5678 -t " trace MOV BX.BX AX=1234 BX=5678 CX=0000 DS=0DA0 ES=0DA0 SS=0DA0 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PE NC DX=0000 CS=0DA0 SP=FFEE IP=010A BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC . DX bukan register alamat Instruksi PUSH & POP Instruksi PUSH dan POP akan dipelajari lebih lanjut di bagian mengenai STACK (halaman berikutnya). CX bukan register alamat reg.[bx+1] : transfer data dari memori ke memori secara langsung mov [bx].bx ax.5678 AX=1234 BX=5678 CX=0000 DX=0000 SP=FFEE DS=0DA0 ES=0DA0 SS=0DA0 CS=0DA0 IP=0106 0DA0:0106 01D8 ADD AX.bx mov [cx].bx mov [dx].bx -t " trace MOV AX.BX AX=68AC BX=5678 CX=0000 DX=0000 SP=FFEE DS=0DA0 ES=0DA0 SS=0DA0 CS=0DA0 IP=0108 0DA0:0108 29D8 SUB AX. Instruksi ADD dan SUB Contoh Penggunaan Instruksi Aritmatika (ADD dan SUB) -a 0DA0:0100 0DA0:0103 0DA0:0106 0DA0:0108 0DA0:010A mov mov add sub ax.5678 ax. Catatan: Instruksi berikut akan menimbulkan Error : mov [bx].1234 AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE DS=0DA0 ES=0DA0 SS=0DA0 CS=0DA0 IP=0103 0DA0:0103 BB7856 MOV BX.[bl] mov [ax].BX -t " trace ADD AX.1234 bx.bx : : : : register alamat harus digunakan dalam format 2 byte reg.12 : transfer data langsung ke memori kesimpulan : semua transfer yg melibatkan memori harus via register mov ah.0F6C:0040 0F6C:0050 0F6C:0060 0F6C:0070 40 50 60 70 41 51 61 71 42 52 62 72 43 53 63 73 44 54 64 74 45 55 65 75 46 56 66 76 47-48 57-58 67-68 77-78 49 59 69 79 4A 5A 6A 7A 4B 5B 6B 7B 4C 5C 6C 7C 4D 5D 6D 7D 4E 5E 6E 7E 4F 5F 6F 7F @ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^_ `abcdefghijklmno pqrstuvwxyz{|}~.BX -t " trace SUB AX.

BH 010E -t " trace MOV AX.ABCD AX=ABCD BX=0000 CX=0000 DX=0000 DS=0F6C ES=0F6C SS=0F6C CS=0F6C -t " trace MOV BX.Instruksi JMP dan JZ Contoh Penggunaan Instruksi Control (JMP dan JZ) -a 0F6C:0100 0F6C:0103 0F6C:0106 0F6C:0108 0F6C:010A 0F6C:010C 0F6C:010E MOV MOV XOR JMP MOV JZ AX.DCBA AL.AL 010C AL.DCBA AX=ABCD BX=DCBA CX=0000 DX=0000 DS=0F6C ES=0F6C SS=0F6C CS=0F6C -t " trace XOR AL.AL AX=AB00 BX=DCBA CX=0000 DS=0F6C ES=0F6C SS=0F6C -t " trace JMP 010C AX=AB00 BX=DCBA CX=0000 DS=0F6C ES=0F6C SS=0F6C -t " trace JZ 010E AX=AB00 BX=DCBA CX=0000 DS=0F6C ES=0F6C SS=0F6C SP=FFEE IP=0103 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC SP=FFEE IP=0106 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DX=0000 CS=0F6C SP=FFEE IP=0108 BP=0000 SI=0000 DI=0000 NV UP EI PL ZR NA PE NC DX=0000 CS=0F6C SP=FFEE IP=010C BP=0000 SI=0000 DI=0000 NV UP EI PL ZR NA PE NC DX=0000 CS=0F6C SP=FFEE IP=010E BP=0000 SI=0000 DI=0000 NV UP EI PL ZR NA PE NC .ABCD BX.

.

PUSH akan ‘mendorong’ data ke stack dan POP akan ‘mengeluarkan’ data dari stack.5678 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC CX=0000 DX=0000 SS=0EA0 CS=0EA0 PUSH AX SP=FFEE IP=0106 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC CX=0000 DX=0000 SS=0EA0 CS=0EA0 PUSH BX SP=FFEC IP=0107 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC ↓ . CX. Oleh karenanya.Stack Karena jumlah register data terbatas (hanya 4 buah : AX. sistem akses data di stack disebut LIFO (Last In First Out) dimana data yang akan diambil adalah data yang ditumpuk terakhir. Ini berarti jika kita akan menyimpan data di stack. data tersebut akan ditumpuk berdasarkan urutan siapa yang terakhir datang.5678 push ax push bx pop ax pop bx SP=FFEE ↓ 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ! tumpukan terakhir ! isi stack -t AX=1234 BX=0000 DS=0EA0 ES=0EA0 0EA0:0103 BB7856 -t AX=1234 BX=5678 DS=0EA0 ES=0EA0 0EA0:0106 50 -t AX=1234 BX=5678 DS=0EA0 ES=0EA0 0EA0:0107 53 -d ffe0 CX=0000 DX=0000 SP=FFEE SS=0EA0 CS=0EA0 IP=0103 MOV BX. maka diperlukan suatu lokasi penyimpanan data untuk sementara yang disebut stack. -a 0EA0:0100 0EA0:0103 0EA0:0106 0EA0:0107 0EA0:0108 0EA0:0109 -d ffe0 0EA0:FFE0 mov ax.1234 mov bx. digunakan register SP (Stack Pointer). BX. DX). Penumpukan data di stack dilakukan dari bawah. Dari arti katanya stack adalah tumpukan. FFFF FFFE 5E CD tumpukan baru Untuk mengidentifikasi tumpukan data terakhir (paling bawah). isi SP akan berkurang (counting down). Jadi SP akan ‘menunjuk’ ke tumpukan terendah dari stack. Setiap kali ada data yang ditumpuk. Kelebihan stack adalah dari kesederhanaannya didalam menyimpan dan mengembalikan kembali data yg telah tersimpan dibandingkan dengan penyimpanan ke memori. Instruksi yang digunakan untuk operasi stack adalah PUSH dan POP.

0EA0:FFE0 00 00 00 00 00 00 00 00-00 00 00 00 34 12 00 00 ! AX ada di stack -t AX=1234 BX=5678 DS=0EA0 ES=0EA0 0EA0:0108 58 -d ffe0 0EA0:FFE0 CX=0000 DX=0000 SS=0EA0 CS=0EA0 POP AX SP=FFEA IP=0108 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC ↓ 00 00 00 00 00 00 00 00-00 00 78 56 34 12 00 00 ! BX ada di stack -t AX=5678 BX=5678 DS=0EA0 ES=0EA0 0EA0:0109 5B -t AX=5678 DS=0EA0 CX=0000 DX=0000 SS=0EA0 CS=0EA0 POP BX SP=FFEC IP=0109 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC BX=1234 ES=0EA0 CX=0000 SS=0EA0 DX=0000 CS=0EA0 SP=FFEE IP=010A BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC .

dan CU akan membangkitkan sinyal-sinyal kontrol yang diperlukan untuk melaksanakan instruksi tersebut. . semuanya diketahui oleh CU dengan bantuan microprogram yang ditanamkan padanya. Hasil dekoding diberikan ke CU. Pengontrolan oleh CU dilakukan melalui Bus Kontrol (panah dari/ke Control Unit).bit Data Bus Internal Flag Instruction reg AH BH CH DH AL BL CL DL ALU Accumulator Instruction Decoder Stack Segment Stack Pointer Code Segment Instruction Pointer Data bus buffer Control Unit Mem Mem Read Write A0 A2 A4 Address buffer A16 A12 A10 A14 A18 A6 A8 D6 D4 D2 D0 Memory Controller 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 8-bit Memory (max of 1 Mb) 1048576 cell 1 byte Elemen didalam mikroprosesor adalah : CU (Control Unit) adalah manajer dari semua unit. Apa yang harus dilakukan oleh suatu unit. Instruction Decoder bertugas untuk menerjemahkan suatu instruksi dengan cara membandingkannya dengan tabel instruksi yang dimilikinya. CU mengatur keselarasan kerja setiap unit.Bagan dasar µP Intel 8088 8 .

SI (Source Index). Berdasarkan isinya.Register adalah memori khusus di dalam uP. Pointer Register : BP (Base pointer). maka hasil operasinya dapat mengubah salah satu bit di register status. OR. . menyimpan alamat segment dari stack Stack Pointer : SP. DI (Destination Index). Untuk mengidentifikasikannya. menyimpan alamat offset dari program Data Segment : DS. menyimpan alamat segment dari data Index Register : BI (Base Index). Stack Segment : SS. menyimpan alamat segment dari program Instruction Pointer : IP. register memiliki nama khusus yang juga sekaligus mencerminkan fungsi register tersebut. menyimpan alamat offset dari stack Base Register : BX Register status (Flag) berfungsi untuk menyimpan status dari suatu operasi Register instruksi menyimpan instruksi yang akan dikerjakan oleh CPU (Instruction Register) ALU (Arithmetic and Logic Unit) adalah mesin penghitung (kalkulator) dari CPU. CU akan menggunakan ALU jika instruksi yang dikerjakan membutuhkan perhitungan aritmetika (contoh: ADD. Jika suatu instruksi aritmetika dan logika dieksekusi. SUB) atau logika (contoh: AND. XOR). register dapat dibedakan menjadi : Register Data memiliki lebar 16 bit namun dapat diakses dalam format 2x8 bit: Accumulator : AX = AH+AL Base Register : BX = BH+BL Counter Register : CX = CH+CL Data Register : DX = DH+DL Register Alamat memiliki lebar 16 bit : Code Segment : CS.

CU akan melaksanakan satu dari tiga fungsi. Penjemputan Instruksi (IF = Instruction Fetch) IR ! [CS+IP] • Proses kerja dimulai dengan penjemputan instruksi baru dari memori ke IR. CU membaca isi dari bus data dan meletakkannya di IR. 3. uP 8088 melakukan 3 tahap pengerjaan sbb : 1. akan melihat isi dari bus alamat. CU harus menjemput beberapa byte lagi dari memori agar instruksinya menjadi lengkap. • Hasil terjemahan isi CS dan IP ini dikirim CU ke memori melalui bus alamat • CU mengirim sinyal MemREAD untuk memberitahukan memori bahwa CU ingin membaca data • Memori. Dekoding Instruksi (ID = Instruction Decode) Isi baru dari IR tersebut kemudian diterjemahkan oleh CU untuk mengetahui apa saja yang diinginkan oleh instruksi baru tersebut.Proses Kerja (Bagaimana µP8088 mengerjakan instruksi) Didalam menjalankan suatu instruksi. Eksekusi Instruksi (EX = Execution) Tergantung dari hasil penterjemahan instruksi diatas. CU menggunakan bantuan tabel instruksi yang ada di Instruction Decoder untuk dapat memahami maksud dari instruksi tersebut. • CU menerjemahkan isi register CS dan IP untuk menentukan letak dari instruksi • baru tersebut di memori. 2. Byte pertama dari instruksi yg dijemput disebut dgn op-code (operation code) karena dari penterjemahan op-code tersebut. didapatkan panjang isntruksi sebenarnya. Untuk tugas penterjemahan ini. yaitu : • Operasi Aritmetika atau Logika • Data transfer • Control Arsitektur x86 (contoh: µP8088) menggunakan Variable Length Instruction (VLI) dimana instruksi yang berbeda memiliki panjang instruksi yang berbeda pula (bervariasi dari 1 byte sampai 4 byte). • Kemudian isi dari cell memori yang sesuai dengan alamat tersebut diletakkan di bus data (selebar 1 byte) • Beberapa saat setelah mengirim sinyal MemREAD. maka kemungkinan besar setelah proses ID. . Karena pada saat IF yg dijemput hanya 1 byte. setelah mendapat sinyal MemREAD.

Contoh : untuk instruksi B8 34 12 (MOV AX. karena ada suatu tenggang waktu tertentu dimana uP harus menjemput instruksi selengkapnya dari memori setelah dekoding (kekurangan ini diperbaiki melalui Prefetching) Instruksi 1 byte (contoh: PUSH & POP) DE IF EX proses: IF – DE – EX Instruksi >1 byte (contoh: MOV.1234) CU pertama akan mengambil byte “B8” untuk mengetahui bahwa instruksi tsb adalah MOV AX. Kekurangan : Lebih lambat. ADD.xx yy sehingga CU harus mengambil 2 byte setelahnya untuk dapat mengeksekusi instruksi tsb. JMP) DE IF EX proses: IF – DE – IF – DE – EX . VLI (Variable Length Instruction) Kelebihan : Hemat space. dimana jumlah byte yang dibutuhkan untuk merepresentasikan suatu instruksi merupakan jumlah byte minimumnya.

.

[bx] ! Register Indirect mov ax. Ini menunjukkan bahwa tidak semua CPU memiliki microcode yang sama. BX Add AX. 3F 5B Add AX. [BX+128] Add AX.000f ! Immediate mov ax. program yang dapat dijalankan di IBM PC tidak akan jalan di Apple Macintosh. [1001] Arti AX ! AX + 3F 5B AX ! AX + BX AX ! Mem[BX] AX ! Mem[BX+128] AX ! Mem[1001] mov bx.Encoding Instruksi Mesin Di dalam CPU (tepatnya pada blok Instruction Decoder). Beda arsitektur berarti berbeda juga microcode-nya.[000d] ! Direct/Absolute [0000] [000D] [000F] -d 0000 ↓ ↓ ↓ 0EA0:0000 CD 20 00 A0 00 9A EE FE .[BX] BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:000F=2503 CX=0000 DX=0000 SP=FFEE SS=0EA0 CS=0EA0 IP=0107 MOV AX. Sebagai contoh.[BX-01] BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:000E=038A . instruksi-instruksi uP 8088 dapat dibedakan menjadi : Addressing Mode Immediate Register Direct Register Indirect Displacement Direct atau Absolute -a 0EA0:0100 0EA0:0103 0EA0:0105 0EA0:0107 0EA0:010A Contoh instruksi Add AX.[bx-1] ! Displacement mov ax. Daftar ini disebut sebagai microcode dan setiap kali CPU menerima sebuah instruksi. terdapat tabel instruksi yang memuat daftar semua instruksi yang dapat dimengerti oleh CPU tersebut. begitu pula sebaliknya. Berdasarkan Addressing Mode-nya (bagaimana uP mendapatkan data yg dibutuhkan oleh suatu instruksi). CPU akan memecah kode instruksi tersebut (tahap decoding) dan kemudian melihat arti dari masing-masing pecahan tersebut di microcode.BX -t AX=000F BX=000F DS=0EA0 ES=0EA0 0EA0:0105 8B07 -t AX=2503 BX=000F DS=0EA0 ES=0EA0 0EA0:0107 8B47FF CX=0000 DX=0000 SP=FFEE SS=0EA0 CS=0EA0 IP=0105 MOV AX.bx ! Register Direct mov ax. Hampir semua instruksi memerlukan data untuk dioperasikan. [BX] Add AX.01 01 01 00 02 FF FF FF ↑ [0010] -t AX=0000 BX=000F CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0103 NV UP EI PL NZ NA PO NC 0EA0:0103 89D8 MOV AX.1D F0 4F 03 27 08 8A 03 0EA0:0010 25 08 17 03 25 08 2A 07 .

.

[000D] BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:000D=8A08 BX=000F ES=0EA0 CX=0000 SS=0EA0 DX=0000 CS=0EA0 SP=FFEE IP=010D BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC .-t AX=038A BX=000F DS=0EA0 ES=0EA0 0EA0:010A A10D00 -t AX=8A08 DS=0EA0 CX=0000 DX=0000 SP=FFEE SS=0EA0 CS=0EA0 IP=010A MOV AX.

Solusi ekonomis untuk keinginan tersebut adalah dengan menggunakan hirarki memori. Size. Namun hal ini akan memakan biaya yang sangat mahal.Memory Klasifikasi ROM (Read Only Memory) merupakan media penyimpan data non-volatile (volatile = menguap) yang berarti datanya tidak akan hilang meskipun power supplynya diputuskan. RAM (Random Access Memory) merupakan media penyimpan data volatile yang berarti datanya akan hilang jika power supplynya diputuskan Contoh: SDRAM pada Main Memory komputer anda (yang mencapai 64 Mb. Capacity. Dengan hirarki memori.000 u/ Capacity 64 Mb. Speed 2 ns DRAM : Price = Rp 100. Contoh: ROM BIOS (ROM Basic Input Output System) pada motherboard yang bertugas untuk memeriksa keberadaan dan kondisi semua peripheral yang terpasang. dan bootstrap loader (memanggil OS pada Hard Disk).5 Mb. Tujuannya adalah untuk menyediakan sistem memori dengan harga serendah-rendahnya dan kecepatan setinggi mungkin. Size 20 mikron per cell. 256 Mb). RAM dibagi menjadi 2 jenis : SRAM (Static RAM) menggunakan hanya transistor digital (± 10 buah transistor) DRAM (Dynamic RAM) menggunakan ± 2 buah transistor dan kapasitor SRAM : Price = Rp 100. Speed 10 ns Hirarki Memory Seorang pengguna komputer akan membutuhkan memori yang cepat dalam jumlah yang tidak terbatas. kita dapat menyeimbangkan antara Speed. dan Price. Size 50 mikron per cell. menghitung dan mengecek main memory.000 u/ Capacity 0. uP 8088 Price Capacity Cache memory Main memory Hard Disk Size Speed .

80486 16 MByte 1 MByte .80186 . Peletakan data di memori diurutkan dari LSB (least significant byte) dengan alamat memori terendah sampai MSB (most significant byte) dengan alamat memori tertinggi. Memori logika biasanya diberikan nomor dalam format Hexadecimal. Meskipun terdapat perbedaan lebar data pada tiap desain microprocessor di atas. maka jika uP hendak mengakses 16-bit (2 byte) data dari memori. Sistem ini disebut Little Endian dan berlaku untuk semua keluarga uP x86 yang berarti alamat memori dari suatu data akan menunjuk ke LSB dari data.386 SX FFFF 000 Karena semua cell memori pada sistem uP 8088 memiliki lebar 8-bit (1 byte). Logical Memory Memori logika adalah system memori yang dilihat dari sudut programmer. FFFFFF 4 GByte FFFF . -a 11A8:0100 mov ax.80286. dan 80386DX-80486 : 32-bit.386 DX .8086 .Pengalamatan Memori Metode pengalamatan memori untuk tiap-tiap desain uP amat berbeda.1D F0 4F 03 2D 0B 8A 03 BX=0000 ES=11A8 CX=0000 SS=11A8 DX=0000 CS=11A8 SP=FFEE IP=0103 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC Physical Memory Pada keluarga microprocessor Intel. 2 byte berturutan akan diambil. 8086-80386SX : 16-bit.[0005] [0000] -d 0000 ↓ 11A8:0000 CD 20 00 A0 [0005] = 9A (LSB ! AL) [0006] = EE (MSB ! AH) -t AX=EE9A DS=11A8 [0005] [0006] ↓ ↓ 00 9A EE FE .8088 . Disini kita akan mempelajari metode pengalamatan yang dipakai oleh uP 8088. seorang . perbedaan memori secara hardwarenya terletak pada lebarnya dimana 8088 : 8-bit. .

. Perbedaan lebar data tersebut hanya menjadi masalah bagi hardware desainer.programmer tetap mengaksesnya seakan-akan mereka adalah 8-bit.

Memori sebesar 1 Mb ini dibagi menjadi 2 menurut fungsinya. 1. sistem operasi MSDOS (Real Mode) membagi seluruh area memori menjadi 3 : unlimited depend on the uP 100000 FFFFF EMS (Expanded Memory System) A0000 9FFFF TPA 640 Kb Conventional Memory (Transient and Program Area) 00000 Microprocessor x86 dan sistem operasi produk Microsoft selalu mempertahankan kompatibilitasnya terhadap microprocessor dan sistem operasi pendahulunya. Cell memori dengan alamat terendah digambarkan paling bawah FFFF 7777 0000 8A E8 FE Untuk µP x86. penggunaan memori diatas 1 Mb dimungkinkan dan daerah ini disebut dengan XMS (Extended Memory System). Daerah 640Kb pertama disebut TPA (Transient Program Area) atau conventional memory. Diatas TPA terdapat EMS (Expanded Memory System) yang pada dasarnya merupakan BIOS (Basic I/O System) system area untuk pengontrolan I/O (alamat fisik A0000 – FFFFF) Untuk microprocessor diatas i8088. dan program aplikasi yg dijalankan (alamat fisik 00000 – 9FFFF) 2. Oleh karenanya Intel Pentium® pun tetap mengacu pada peta memori uP i8088 dengan memori utamanya sebesar 1 Mb (Intel menyebutnya real memory). Disini terdapat OS (Operating System). 384 Kb System Area XMS (eXtended Memory System) 15 Mb for 80286 – 80386SX 4 Gb for 80386DX and up .Peta memori Peta memori adalah suatu peta yang menggambarkan lokasi dari data di memori. Peta memori digambarkan sebagai blok yang memiliki alamat dan 8-bit data.

.

ROM 4164 41256 41256 4164 41256 41256 4164 4164 ROM 4164 4164 41256 41256 8-bit ISA bus 8253 4164 4164 41256 41256 ROM 4164 4164 41256 41256 8259 4164 4164 41256 41256 Dip Switch 8237 4164 41256 41256 4164 41256 41256 ON 8088 4164 4164 8255 4164 4164 41256 41256 8087 PC-XT Personal Computer eXtended Technology Main Memory = (256Kbyte x 2) + (64Kbyte x 2) = 640 Kbyte Keyboard 8284 Crystal 8288 8259 = Programmable Interrupt Controller 8088 = Microprocessor 8087 = Floating Point Numeric Processor 8288 = Bus Controller 8284 = Clock Generator Crystal = 14.318 MHz 8253 = Programmable Interval Timer 8237 = DMA Controller 8255 = Programmable Peripheral Interface Power Supply .

Dengan prosesor Intel 8088 dan DRAM 640KB. Oleh karena DRAM ini hanya dapat menyimpan 1 bit. digunakan 8 x 4164. . sinyal Reset.77 MHz).PC-XT adalah komputer komersial pertama yang dikeluarkan IBM. maka untuk dapat menyimpan 8 bit. tidak pada motherboard) 8253 (Programmable Interval Timer) adalah prosesor khusus untuk menangani timing 8255 (Programmable Peripheral Interface) adalah prosesor khusus untuk transaksi data paralel (misalnya untuk floppy disk) 8259 (Programmable Interrupt Controller) adalah prosesor khusus untuk mengontrol mekanisme interupsi 8284 (Clock Generator) adalah IC yg digunakan untuk menghasilkan : sinyal clock (4. Ditambah 1 x 41256 untuk menyimpan Parity Bit. Motherboard komputer PC-XT memiliki beberapa komponen penting : 8088 (Microprocessor) adalah mikroprosesor yang bertugas mengontrol semua komponen 8087 (Arithmatic Co-Processor) adalah arithmatic co-prosesor yang bertugas untuk membantu 8088 dalam menangani kalkulasi atau perhitungan aritmetik yang melibatkan angka sangat besar 8237 (DMA Controller) adalah prosesor khusus untuk menangani proses DMA (Direct Memory Access) yaitu suatu proses dimana yang menulis / membaca data di memori bukan lagi mikroprosesor. Oleh karena DRAM ini hanya dapat menyimpan 1 bit. 41256 (Dynamic RAM) adalah memori DRAM dengan kapasitas 262144 x 1 bit (256 Kbit). dan sinyal Ready. 8288 (Bus Controller) adalah prosesor khusus untuk mengontrol penggunaan bus data dan bus alamat 4164 (Dynamic RAM) adalah memori DRAM dengan kapasitas 65536 x 1 bit (64 Kbit). digunakan 8 x 41256. komputer ini dipasarkan sekitar tahun 1985. Ditambah 1 x 4164 untuk menyimpan Parity Bit. melainkan peripheral (perangkat luar) 8251 (Serial Communication Controller) adalah prosesor khusus untuk transaksi data serial (misalnya untuk modem) (terpasang pada I/O card. maka untuk dapat menyimpan 8 bit.

dan POP untuk mengakses memori. • Untuk pengaksesannya digunakan Address Bus A0 – A15 (Address Line A0 – A15 menyimpan nomor port) .AX ! mengirimkan data dari register AX (16 bit) ke perangkat output yang memiliki nomor port FFH Keterangan : • Disini nomor port yg akan diakses ditulis langsung pada instruksinya.DX ! mengirimkan data dari register AL (8 bit) ke perangkat output yang nomor portnya ada di register DX OUT AX. maka instruksi untuk mengakses I/O sedikit berbeda : Berdasarkan Addressing 1.DX ! mengirimkan data dari register AX (16 bit) ke perangkat output yang nomor portnya ada di register DX Keterangan : • Disini nomor port yg akan diakses terlebih dahulu ditulis ke register DX • Maksimum jumlah port yang bisa diakses adalah 65536 (register DX bisa berharga 0000 sampai FFFF). menggunakan variable addressing : IN AL.FF ! mengambil data dari perangkat input yang memiliki nomor port FFH dan dimasukkan ke register AX (16 bit) OUT 00.FFH). menggunakan fixed addressing : IN AL.00 ! mengambil data dari perangkat input yang memiliki nomor port 00H dan dimasukkan ke register AL (8 bit) IN AX.DX ! mengambil data dari perangkat input dan dimasukkan ke register AX (nomor port dari perangkat tersebut ada di register DX) OUT AL. • Maksimum jumlah port yang bisa diakses adalah 256 (IN AL. data yg ditransfer bisa 8 bit (menggunakan register AL) atau 16 bit (menggunakan register AX) 2.AL ! mengirimkan data dari register AL (8 bit) ke perangkat output yang memiliki nomor port 00H OUT FF. Jika kita menggunakan instruksi MOV.DX ! mengambil data dari perangkat input dan dimasukkan ke register AL (nomor port dari perangkat tersebut ada di register DX) IN AX. • Untuk pengaksesannya digunakan Address Bus A0 – A7 (Address Line A0 – A7 menyimpan nomor port) • Tergantung dari kemampuan I/O yg diakses.Interfacing µP Intel 8088 dengan I/O Setiap perangkat Input maupun Output akan memiliki nomor tersendiri (unik) untuk menandakan perangkat mana yang akan diakses oleh µP 8088. PUSH.00H sampai IN AL. Nomor ini disebut nomor port.

. Instruksi IN dan OUT untuk akses I/O. Isolated I/O : dimana peta alamat I/O berbeda dengan peta alamat untuk memori Peta memori : FFFFF 1 Kbyte dari 4016 A FFC00 A07FF 2 Kbyte dari 4016 B A0000 30FFF 4 Kbyte dari 4016 C 30000 01FFF 8 Kbyte dari 4016 D 00000 00 8-bit Dip Switch (Input) F7 LED (Output) Peta I/O 2. Sedangkan pada Memory-mapped I/O. instruksi untuk mengakses I/O dibedakan dengan instruksi untuk mengakses memori. Memory-mapped I/O : dimana peta alamat I/O dimasukkan ke dalam peta alamat untuk memori Peta memori + Peta IO FFFFF 1 Kbyte dari 4016 A FFC00 30FFF 4 Kbyte dari 4016 C 30000 000FF 00000 I/O [00000] = Dip Switch [000FF] = LED Pada Isolated I/O.• Tergantung dari kemampuan I/O yg diakses. data yg ditransfer bisa 8 bit (menggunakan register AL) atau 16 bit (menggunakan register AX) Berdasarkan Peta Memori 1. dan MOV untuk akses memori. instruksi untuk mengakses I/O sama dengan instruksi untuk mengakses memori yaitu MOV (instruksi IN dan OUT tidak ada lagi).

Ada 4 desain yg berbeda : 1. Desain decoder dan jumlah address line yg digunakan tergantung dari desain kita. Contoh perangkat Input dengan menggunakan Dip Switch : +5 V 5 KOhm x 8 ON D0 D1 D2 D3 D4 D5 D6 D7 8088 RD IO / M Address Decoder } Address Bus Dip switch seperti halnya switch biasa akan memutuskan atau menyambungkan suatu titik dengan salah satu titik lainnya (SPDT = Single Pole Double Terminal). Sehingga data bus dari dip switch berisi (D7)01101000(D0). fixed addressing + memory mapped IO 3. Agar i8088 dapat mengambil data tersebut. Untuk keperluan ini dapat digunakan 3-state buffer untuk perangkat input dan latch atau flip-flop untuk perangkat output. Jika posisi suatu switch ada dalam posisi ON (di kanan) maka line Data tersebut akan tersambung langsung dengan Ground (0 volt) sebaliknya jika dalam posisi OFF (kiri) maka line Data tersebut akan tersambung dengan VCC (5 volt). variable addressing + isolated IO . Setelah semua 3-state buffer diaktifkan.Untuk dapat mengambil data dari suatu I/O diperlukan suatu interface khusus untuk menjembatani data yg disimpan oleh I/O tersebut dengan data bus. Posisi Dip switch di atas akan menghasilkan D0 = D1 = D2 = D4 = D7 = ground dan D3 = D5 = D6 = VCC. i8088 harus mengaktifkan kedelapan 3-state buffer diatas dengan menggunakan decoder. maka data bus i8088 akan tersambung dengan dengan data bus dip switch dan data dati dip switch dapat dibaca (RD) oleh i8088. fixed addressing + isolated IO 2.

instruksi IN AL.[04] ! addressing mode : absolute.04 Contoh untuk desain decoder nomor 1 (fixed addressing + isolated IO) : A0 A1 A2 A3 A4 A5 A6 A7 RD IO/M Address Decoder to 3-state buffer Pada gerbang OR diatas. variable addressing + memory mapped IO Salah satu dari keempat desain tersebut akan menentukan : • Apakah kita menggunakan sinyal IO/M ? jika ya berarti : isolated IO jika tidak berarti : memory mapped IO Jumlah address line yg dibutuhkan ? fixed addressing ! A0 – A7 variable addressing ! A0 – A15 • Misal Dip Switch tersebut akan diakses pada : alamat 04H = (A7)0000 0100(A0) ! instruksi : IN AL. Tanpa adanya dekoding sinyal IO/M. maka tidak akan ada lagi yg membedakan antara akses ke IO dgn akses ke memori. karena : instruksi IN akan mengaktifkan sinyal RD (0 volt) dan juga sinyal IO (IO/M = 5 volt) nomor port 04 akan memberikan nilai yg sesuai pada address line A0 sampai dengan A7 Contoh untuk desain decoder nomor 2 (fixed addressing + memory mapped IO) A0 A1 A2 A3 A4 A5 A6 A7 RD Address Decoder to 3-state buffer sinyal IO/M tidak perlu di-decode-kan dan instruksinya menjadi MOV AL.4. Oleh karenanya tidak ada lagi instruksi IN dan OUT yg menyebabkan sinyal IO/M berharga 5V dan akan digantikan dgn instruksi MOV yg menyebabkan sinyal IO/M berharga 0V . Dalam hal ini semua akses ke IO dianggap sama dgn akses ke memori.04 akan mengaktifkan outputnya.

.

instruksi untuk mengaktifkannya menjadi: MOV DX.DX Contoh untuk desain decoder nomor 4 (variable addressing + memory mapped IO) A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 RD Address Decoder to 3-state buffer address line yg masuk ke Address Decoder (gerbang OR diatas) adalah A0 – A15 tidak hanya sampai A7 saja.Contoh untuk desain decoder nomor 3 (variable addressing + isolated IO) A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 RD IO/M Address Decoder to 3-state buffer address line yg masuk ke Address Decoder (gerbang OR diatas) adalah A0 – A15 tidak hanya sampai A7 saja.[DX] (setelah terlebih dahulu mengisi DX dengan 0004) ! addressing mode : register indirect .0004 IN AL. Dan sinyal IO/M tidak perlu di-decode-kan dan instruksinya menjadi MOV AL.

Untuk mengaktifkan Flip-Flop kita tinggal mengaktifkan sinyal CLOCK-nya agar D-FF membaca masukan data dan mengubah outputnya sesuai dgn data yg diberikan. ada 4 desain yg berbeda : 1. Kemudian sesuai dengan data yg tersimpan pada D-FF. maka semua LED akan menyala begitu kesemua D-FF diaktifkan clock-nya. lampu LED akan dinyalakan sehingga kita dapat melihat (visualisasi) data yg dikeluarkan oleh i8088. fixed addressing + memory mapped IO 3. Sama seperti pada dip switch. variable addressing + isolated IO 4. fixed addressing + isolated IO 2. Misalnya data yg dikeluarkan adalah FF. variable addressing + memory mapped IO Misal LED tersebut akan diakses pada : alamat F7H = (A7)1111 0111(A0) ! instruksi : OUT AL.Contoh perangkat Output dengan menggunakan LED (Light Emitting Diode) QD QD QD QD QD QD QD QD D0 D1 D2 D3 D4 D5 D6 D7 8088 WR IO / M Address Decoder } Address Bus Disini akan digunakan D-FF (Data Flip-Flop) untuk menyimpan data keluaran dari i8088 agar datanya dapat dilihat terus sampai kemudian diubah dgn data lainnya.F7 Contoh untuk desain decoder nomor 1 (fixed addressing + isolated IO) A0 A1 A2 A3 A4 A5 A6 A7 WR IO/M Address Decoder to D-FF .

Sedangkan nomor port F7 akan memberikan nilai yg sesuai pada A0 – A7 Contoh untuk desain decoder nomor 2 (fixed addressing + memory mapped IO) A0 A1 A2 A3 A4 A5 A6 A7 WR Address Decoder to D-FF sinyal IO/M tidak perlu di-decode-kan dan instruksinya menjadi MOV [F7]. AL ! addressing mode : absolute Contoh untuk desain decoder nomor 3 (variable addressing + isolated IO) A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 WR IO/M Address Decoder to D-FF address line yg masuk ke IO decoder (gerbang AND diatas) adalah A0 – A15 tidak hanya sampai A7 saja. Contoh untuk desain decoder nomor 4 (variable addressing + memory mapped IO) A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 WR Address Decoder to D-FF .Pada gerbang AND diatas.F7 akan mengaktifkan outputnya. instruksi OUT AL. karena instruksi OUT akan mengaktifkan sinyal WR (0 volt) dan juga sinyal IO (IO/M = 5 volt).

AL (setelah terlebih dahulu mengisi DX dengan 00F7) ! addressing mode : register indirect . Dan sinyal IO/M tidak perlu di-decode-kan namun instruksinya menjadi MOV [DX].address line yg masuk ke IO decoder (gerbang NAND diatas) adalah A0 – A15 tidak hanya sampai A7 saja.

depletion load. BH-BL. ES. CX. Word (16 bit). dan dipasarkan dalam 40-pin CERDIP (Ceramic Dual In Line Package). DI. SI. and Block (variable) Dua frekuensi kerja : • 5 MHz untuk type 8088 • 8 MHz untuk type 8088-2 Dua mode kerja : • Mode Minimum • Mode Maximum Mikroprosesor 8088 difabrikasi dgn teknologi N-channel. BP. CS. IP • 1 register status ! Flag Operasi data dalam format Byte (8 bit). GND A14 A13 A12 A11 A10 A9 A8 D7 / A7 D6 / A6 D5 / A5 D4 / A4 D3 / A3 D2 / A2 D1 / A1 D0 / A0 NMI interrupt clock GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 8088 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc A15 A16/S3 A17/S4 A18/S5 A19/S6 SS0 min/max read hold hold ack write IO/mem DT/R DEN ALE interrupt ack test ready reset . DH-DL • 9 register alamat ! SP. BX. silicon gate (HMOS-II).Mikroprosesor i8088 Mikroprosesor yg akan digunakan disini adalah µP Intel 8088 yang memiliki karakteristik sebagai berikut (diambil dari spesifikasi teknis i8088 dari Intel®): 8-Bit Data Bus Interface (D0 – D7) ! Eksternal Data Bus = 8 jalur 16-Bit Internal Architecture ! Internal Data Bus = 16 jalur Direct Addressing memori sampai 1 Mbyte ! Address Bus = A0 – A19 14 Register dengan lebar masing-masing 16 bit : • 4 register serba guna ! AX. DS. SS. DX dapat diakses dalam 8 bit menjadi AH-AL. CH-CL.

20 40 9-16 2-8 35-39 25 18 24 19 21 28 Nama GND VCC AD7–AD0 A8 – A14 A15 – A19 ALE INTR INTA Fungsi disambungkan dengan Ground (0 Volt) disambungkan dengan power +5 V DC Address line (A0 – A7) + Data line (D0 – D7) (termultipleks dalam time / TDMA) Address line (A8 – A14) Address line (A15 – A19) Address Latch Enable (Active High) jika ‘1’ berarti pin 9 – 16 (AD0 – AD7) = Address Bus (A0 – A7) jika ‘0’ berarti pin 9 – 16 (AD0 – AD7) = Data Bus (D0 – D7) sinyal interupsi dari suatu I/O (Active High) yang menyebabkan i8088 melakukan service khusus Interrupt Acknowledge (Active Low) (balasan dari i8088 ke I/O yg mengirim sinyal interupsi) masukan untuk frekuensi kerja (clock) Menginisialisasi semua register (Active High) Memori (Low) ataukah I/O (High) yg diakses oleh i8088 ? jika ‘1’ (High Voltage) berarti yg diakses adalah I/O jika ‘0’ (Low Voltage) berarti yg diakses adalah memori Sinyal Write (Active Low) berarti i8088 akan menulis data Address bus telah berisi alamat valid dari sel yg akan ditulis Data bus telah berisi data valid dari data yg akan ditulis Hold Acknowledge (Active High) yg menandakan bahwa i8088 telah memutuskan dirinya dari bus Sinyal Hold (Active High) meminta i8088 memutuskan hubungan dengan Address Bus dan Data Bus (untuk DMA) Sinyal Read (Active Low) berarti i8088 akan membaca data (Address bus telah berisi alamat valid dari data yg akan dibaca) Menset i8088 untuk bekerja pada salah satu mode jika ‘1’ (High Voltage) berarti bekerja dalam mode Minimum jika ‘0’ (Low Voltage) berarti bekerja dalam mode Maximum Tipe Pow Pow I/O Out Out Out In Out In In Out CLK RESET IO / M 29 30 31 32 33 WR Out Out In Out In HLDA HOLD RD MN / MX Active High Active Low In Out Pow : pin tersebut dianggap aktif jika dalam kondisi High Voltage (VCC) : pin tersebut dianggap aktif jika dalam kondisi Low Voltage (Ground) : arah sinyal masuk ke dalam i8088 : arah sinyal keluar dari i8088 : Power Line (catu daya) Inisialisasi register saat Reset diaktifkan: semua register akan berisi data 0000 kecuali CS=FFFF.Pada i8088 ada beberapa pin yg harus diperhatikan (mode Minimum) : Pin 1. .

dan READY. i8088 membutuhkan minimal 2 IC tambahan. IC 74LS373 adalah 8 latch (Flip-Flop) yg digunakan untuk memisahkan (demultipleksing) pin 9 – 16 menjadi 2 buah informasi yaitu Address dan Data. sedangkan jika ALE = Low maka pin 9 – 16 membawa informasi Data. dimana jika ALE = High maka pin 9 – 16 membawa informasi Address.Sistem Penunjang i8088 +5 V 1 GND Vcc 40 39 38 37 36 35 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 QD QD 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A15 A16 A17 A18 A19 +5 V 33 32 min/max read +5 V D7 / A7 D6 / A6 74 LS 373 D5 / A5 D4 / A4 D3 / A3 D2 / A2 D1 / A1 D0 / A0 8088 29 28 write IO/mem CSync 1 18 17 Vcc X1 15 MHz 8284 25 16 X2 +5 V ALE ready 5 13 F/C D0 ALE D7 clock 19 20 22 ready reset clock GND 8 9 11 10 res reset GND 21 Untuk dapat bekerja. IC 8284 digunakan untuk menghasilkan sinyal CLOCK (maksimum 5 MHz). Sinyal ALE (Address Latch Enable) digunakan untuk memisahkan kedua informasi tersebut. . RESET.

dimulai dari data pada alamat terendah (00000 H pada i8088) sampai alamat tertinggi (FFFFF H pada i8088). A B C D D0 DQ DQ DQ DQ D1 DQ DQ DQ DQ D2 DQ DQ DQ DQ D0 .A1 CS D5 DQ DQ DQ DQ D6 DQ DQ DQ DQ D7 DQ DQ DQ DQ A0 A1 CS Struktur Memori CS A1 0 0 0 0 0 1 0 1 A0 0 1 0 1 Set Flip-Flop yang Disambungkan dgn Data Bus (D0 – D7) A B C D .Memori pada sistem µP 8088 Peta Memori Peta memori digunakan untuk menggambarkan lokasi semua data yang ada di memori.D7 D3 DQ DQ DQ DQ D4 DQ DQ DQ DQ Read Only Memory 4 byte A0 .

Memori diatas memiliki kapasitas 4 x 8 bit atau 4 byte. RAM digunakan untuk scratch book (buku oretoretan) karena sifat data adalah variabel (berubah-ubah). Program akan ditulis sekali saja ke dalam ROM karena pada saat operasionalnya program hanya dibaca saja RAM (Random Access Memory). adalah media penyimpanan yang bersifat BACA SAJA.1 X X tidak ada karena output semua gerbang OR = ‘1’ Dengan memberikan suatu harga tertentu pada Address Bus (A0 – A1) maka salah satu set Flip-Flop akan diaktifkan dan datanya dapat diambil melalui Data Bus (D0 – D7) dgn catatan input CS harus diaktifkan. maka program yang harus dilakukan oleh uP disimpan didalamnya. memori dibedakan menjadi 2: ROM (Read Only Memory). Kapasitas suatu memori = 2n x d bit dimana n = jumlah address bus yang masuk kedalam IC memori d = jumlah data bus yang ada pada IC memori tersebut Klasifikasi Memori Dilihat dari sistem aksesnya. . Karena sifatnya. adalah media peyimpanan data yang dioperasikan sehingga sifatnya BACA dan TULIS.

Interfacing i8088 dengan Memori
Memori harus tersedia pada suatu sistem mikroprosesor, baik untuk menyimpan program maupun untuk menyimpan data. Tergantung dari kebutuhan, memori yg dapat digunakan oleh µP Intel 8088 berbeda-beda berdasarkan ukurannya. Ada yg hanya ¼ KByte (256 Byte) sampai 128 KByte per kepingnya (per IC = Integrated Circuit). Memory Size 256 Byte 512 Byte 1 Kbyte 2 Kbyte 4 Kbyte 8 Kbyte 16 Kbyte 32 Kbyte 64 Kbyte

Memory Map 00 – FF 000 – 1FF 000 – 3FF 000 – 7FF 000 – FFF 0000 – 1FFF 0000 – 3FFF 0000 – 7FFF 0000 – FFFF

Address line used A0 A1 A2 A3 A4 A5 A6 A7 A0 A1 A2 A3 A4 A5 A6 A7 A8 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15

ROM vs. RAM Data di ROM hanya dapat dibaca saja sedangkan data di RAM dapat dibaca dan juga ditulis. Hal ini menyebabkan secara hardware mereka berbeda. Contoh : Sebuah keping memori ROM 2716 dengan kapasitas 2 KByte Sebuah keping memori RAM 4016 dengan kapasitas 2 KByte
A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND 1 2 3 4 5 6 7 8 9 10 11 12 24 23 22 21 20 19 18 17 16 15 14 13 Vcc A8 A9 Vpp CS A10 PGM D7 D6 D5 D4 D3 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND 1 2 3 4 5 6 7 8 9 10 11 12 24 23 22 21 20 19 18 17 16 15 14 13 Vcc A8 A9 WE OE A10 CS D7 D6 D5 D4 D3

2716
2 Kbyte PROM

4016
2 Kbyte SRAM

Nama
CS

Fungsi
Chip Select (Active Low) digunakan untuk mengaktifkan memori. Untuk dapat diakses datanya, CS dari suatu memori (baik ROM maupun RAM) harus diaktifkan terlebih dahulu Data bus 8 jalur (8 bit) sebagai saluran data antara isi memori dgn data bus eksternal, untuk mengambil data dari memori atau menuliskan data ke memori

Tipe
In Out (ROM) In+Out (RAM)

D0 – D7

A0 – A10

Address bus (A0 – A10) digunakan untuk mengaktifkan salah satu set data-8-bit dari total kapasitasnya = 211 x 8 bit = 2048 byte (lihat tabel)

In

Nama
OE WE

Fungsi
Output Enable (Active Low) jika diaktifkan maka salah satu set data-8-bit dalam RAM dapat dibaca Write Enable (Active Low) jika diaktifkan maka salah satu set data-8-bit dalam RAM dapat ditulis Program (Active +18 Volt) digunakan untuk menulis ke dalam ROM

Tipe
In In In

PGM

Pada kasus RAM, struktur internal pengaksesannya adalah sebagai berikut :
D0 D1 D2 D3 D4 D5 D6 D7

DATA ARRAY

WE OE

Sinyal WE dan OE akan mengaktifkan salah satu set dari 3-state buffer (jika WE diaktifkan ! arah data masuk ke dalam memori, jika OE diaktifkan ! arah data keluar dari memori). Untuk menyambungkan suatu keping memori dengan µP Intel 8088 dibutuhkan 3 penyambungan yaitu sambungan untuk data, alamat, dan kontrol. Sambungan data adalah secara langsung karena lebarnya sama-sama 8 bit (D0 – D7) baik dari sisi µP Intel 8088 maupun dari sisi memori. Sambungan alamat tergantung dari kapasitas memori yg digunakan (lihat tabel). Misalnya memori yg digunakan berkapasitas 2 Kbyte, berarti address line yg digunakan untuk mengakses suatu data pada memori tersebut adalah A0 – A10. Maka yang diambil dari µP Intel 8088 adalah address line yg bersesuaian yaitu A0 – A10, dimana :

Pin A0 dari µP Intel 8088 disambungkan pada masukan A0 RAM/ROM, Pin A1 dari µP Intel 8088 disambungkan pada masukan A1 RAM/ROM, Pin A2 dari µP Intel 8088 disambungkan pada masukan A2 RAM/ROM, Pin A3 dari µP Intel 8088 disambungkan pada masukan A3 RAM/ROM, dst… sampai Pin A10 dari µP Intel 8088 disambungkan pada masukan A10 RAM/ROM Sambungan kontrol yg diperlukan adalah :

8088
RD IO / M
WR signal Mem WRITE to pin WE signal Mem READ to pin OE

untuk kasus RAM, sinyal Memory Read digunakan untuk memberitahu keping memori yg telah diaktifkan pin CS-nya bahwa jenis akses adalah READ. Untuk itu digunakan sebuah gerbang OR untuk menggabungkan sinyal RD dan IO/M dari µP Intel 8088. Sinyal Memory READ yang active-low ini akan disambungkan pada pin OE yang juga active-low. sinyal Memory Write digunakan untuk memberitahu keping memori yg telah diaktifkan pin CS-nya bahwa jenis akses adalah WRITE. Untuk itu digunakan sebuah gerbang OR untuk menggabungkan sinyal WR dan IO/M dari µP Intel 8088. Sinyal Memory WRITE yang active-low ini akan disambungkan pada pin WE yang juga active-low. sinyal CS: untuk mengaktifkan suatu keping memori. Sisa dari Address line yg tidak digunakan (A12 – A19) akan dipakai untuk mengaktifkan memori tersebut (masukan Chip Select).

D7 2716 8088 D0 .A10 CS CS CS (a) (b) (c) Pada gambar di atas dapat diperhatikan : 1.D7 RD IO / M WR 4016 8088 D0 .A10 A0 ..D7 4016 OE WE RD IO / M WR OE WE 11 A0 .D7 2716 11 A0 .Contoh sambungan 8088 dengan sebuah ROM 2716 (gambar atas) dan sebuah RAM 4016 (gambar bawah) 8088 D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 2716 D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 8088 8 D0 .A10 A0 .A10 CS CS CS (a) (b) (c) 8088 D0 D1 D2 D3 D4 D5 D6 D7 RD IO / M WR A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 4016 D0 D1 D2 D3 D4 D5 D6 D7 OE WE A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 8088 8 D0 .7) . Dimana Dn dari i8088 disambungkan dengan Dn yg bersesuaian (n = 0. sambungan untuk data adalah langsung (direct connection) tanpa perantara.

2. sambungan untuk alamat tergantung pada Address Line yg dibutuhkan untuk mengaktifkan salah satu set flip-flop di dalam memori. Untuk kasus diatas: salah satu dari 2048 (211)set flip-flop akan diaktifkan dgn A0 – A10 dari i8088 3. sambungan bus kontrol adalah untuk memberikan sinyal RD atau WR dari 8088 ke 4016 untuk menandakan jenis akses data (apakah READ ! membaca data dari memori, ataukah WRITE ! menulis data ke memori). Dan untuk sinyal CS, karena hanya ada satu keping memori yg digunakan, maka pengaksesan memori hanya terjadi pada 2716/4016. Sehingga 2716/4016 tersebut selalu dalam keadaan aktif. Gambar (b) dan (c) merupakan cara lain (yg lebih sederhana) untuk menggambarkan interkoneksi (bus data dan bus alamat) antara 8088 dgn memori. Interfacing µP Intel 8088 dengan 2 buah keping memory Jika digunakan dua buah 4016, akan timbul masalah ketika µP Intel 8088 akan mengakses data pada alamat 00000 dimana akan ada suatu data dari 4016 yg pertama dan ada data lainnya dari 4016 yang kedua. Untuk menghindarinya, diperlukan suatu mekanisme pemilihan (selector) yang akan memilih salah satu 4016. Jadi dalam suatu saat hanya ada satu 4016 yang aktif. Untuk hal ini, disediakan sebuah masukan pada 4016 yang disebut dgn CS (Chip Select) yang aktif Low. Jika CS diaktifkan (diberikan Low Voltage) maka data didalam 4016 akan dapat diakses oleh i8088. Sebaliknya jika CS tidak diaktifkan (diberikan High Voltage) maka data didalam 4016 tidak akan dapat diakses. Karena hanya ada 2 pilihan (2 buah 4016) maka dapat digunakan sebuah gerbang inverter dimana untuk mengaktifkannya kita gunakan A19. Hal yang sama juga berlaku untuk ROM 2716.

8088

D0 - D7 A0 - A10
CS

2716 A 2716 B
CS

A19

(a)

8088

D0 - D7 A0 - A10
CS

4016 A WE
OE

A19

4016 B WE
OE CS

RD

IO/ M
WR

Mem READ Mem WRITE

(b)
Peta memori untuk sistem diatas adalah sebagai berikut : A19 ---------------------------A0 1111-1111-1111-1111-1111 =

FFFFF 510 KByte berisi pengulangan content 4016B (atau 2716B) second half 512 K Byte selected when A19 = 1

1000-0000-1000-0000-0000 = 1000-0000-0111-1111-1111 = 1000-0000-0000-0000-0000 = 0111-1111-1111-1111-1111 =

80800 807FF 80000 7FFFF

2 KByte dari 4016B (atau 2716B) 510 KByte berisi pengulangan content 4016A (atau 2716A)

0000-0000-1000-0000-0000 = 0000-0000-0111-1111-1111 = 0000-0000-0000-0000-0000 =

00800 007FF 00000

2 KByte dari 4016A (atau 2716A)

first half 512 K Byte selected when A19 = 0

Terjadinya pengulangan content memori karena tidak semua Address Line sisa (A11 – A19) digunakan untuk menghasilkan sinyal CS. Perhatikan bahwa pada saat Address Bus berisi 00000H dan 00800H, memori 4016A (atau 2716A) tetap diaktifkan. Dan pada kedua kondisi tersebut, set flip-flop yg sama (yg pertama) yg akan diakses. Untuk menghindari terjadinya pengulangan isi memori, maka seluruh sisa Address Line yg tidak tersambung ke memori, harus di-kode-kan untuk menghasilkan sinyal CS. Pada

kasus diatas, untuk menghasilkan sinyal CS, maka seluruh A11 – A19 harus di-kode-kan (tidak hanya A19 saja). Masalah akan menjadi besar jika kita akan menggunakan lebih dari dua buah 4016, dimana harus ada suatu sistem selektor untuk mengaktifkan salah satu memori. Disini kita akan mendesainnya dengan gerbang logika.
D0 - D7 A0 - A10 N1 CS

4016 A 4016 B
CS

WE OE

WE
OE

N2

i8088
N3
CS

4016 C 4016 D
CS

WE
OE

WE
OE

A18 A19 RD IO / M WR

N4

Mem READ

Mem WRITE

Peta memori untuk sistem diatas adalah sebagai berikut : A19 ---------------------------A0 1111-1111-1111-1111-1111 = 1100-0000-1000-0000-0000 = 1100-0000-0111-1111-1111 = 1100-0000-0000-0000-0000 = 1011-1111-1111-1111-1111 = 1000-0000-1000-0000-0000 = 1000-0000-0111-1111-1111 =

FFFFF C0800 C07FF C0000 BFFFF 80800 807FF

254 KByte berisi pengulangan content 4016D 2 KByte dari 4016 D 254 KByte berisi pengulangan content 4016C 2 KByte

fourth quarter 256 KByte selected when A19 = 1 & A18 = 1 third quarter 256 KByte selected when A19 = 1 & A18 = 0

dari 4016 C 1000-0000-0000-0000-0000 = 80000 .

Interface ke 2708 address line : Interface ke 2716 address line : Interface ke 2732 address line : Interface ke 2764 address line : = 1 Kbyte untuk aktivasi CS dari 2708 untuk mengakses memori 2708 A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 = 2 Kbyte untuk aktivasi CS dari 2716 A19 A18 A17 A16 A15 A14 A13 A12 A11 = 4 Kbyte untuk aktivasi CS dari 2732 A19 A18 A17 A16 A15 A14 A13 A12 = 8 Kbyte untuk aktivasi CS dari 2764 A19 A18 A17 A16 A15 A14 A13 untuk mengakses memori 2716 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 untuk mengakses memori 2732 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 untuk mengakses memori 2764 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Kita akan menggunakan 4 buah gerbang OR yg berbeda untuk mengaktifkan masingmasing memori. maka seluruh sisa Address Line yg tidak tersambung ke IC memori tersebut harus di-kode-kan untuk menghasilkan sinyal CS. . untuk 2732 kita membutuhkan gerbang logika OR 8 input (A12 – A19). Sebagai contoh. Karena sambungan data dan kontrol selalu tetap. untuk 2708 kita membutuhkan gerbang logika OR 10 input (A10 – A19). maka yg perlu diperhatikan hanya sambungan alamatnya saja (disesuaikan dengan tabel).0111-1111-1111-1111-1111 = 0100-0000-1000-0000-0000 = 0100-0000-0111-1111-1111 = 0100-0000-0000-0000-0000 = 0011-1111-1111-1111-1111 = 0000-0000-1000-0000-0000 = 0000-0000-0111-1111-1111 = 0000-0000-0000-0000-0000 = 7FFFF 40800 407FF 40000 3FFFF 00800 007FF 00000 254 KByte berisi pengulangan content 4016B 2 KByte dari 4016 B 254 KByte berisi pengulangan content 4016A 2 KByte dari 4016 A second quarter 256 KByte selected when A19 = 0 & A18 = 1 first quarter 256 KByte selected when A19 = 0 & A18 = 0 Untuk menghindari terjadinya pengulangan isi memori. dan untuk 2764 kita membutuhkan gerbang logika OR 7 input (A13 – A19). untuk 2716 kita membutuhkan gerbang logika OR 9 input (A11 – A19). kita akan membuat Address Decoder yg akan mengaktifkan salah satu dari 4 IC memori yg berbeda-beda kapasitasnya.

Peta memori untuk sistem diatas adalah sebagai berikut : 1111-1111-1111-1111-1111 = FFFFF 248 KByte empty A13 A14 A15 A16 A17 A18 A19 Address Decoder to CS of 2764 1100-0010-0000-0000-0000 = 1100-0001-1111-1111-1111 = 1100-0000-0000-0000-0000 = 1011-1111-1111-1111-1111 = C2000 C1FFF C0000 BFFFF 8 KByte dari 2764 252 KByte empty A12 A13 A14 A15 A16 A17 A18 A19 Address Decoder to CS of 1000-0001-0000-0000-0000 = 1000-0000-1111-1111-1111 = 81000 80FFF 80000 7FFFF 2732 1000-0000-0000-0000-0000 = 4 KByte dari 2732 0111-1111-1111-1111-1111 = 254 KByte empty A11 A12 A13 A14 A15 A16 A17 A18 A19 Address Decoder to CS of 2716 0100-0000-1000-0000-0000 = 0100-0000-0111-1111-1111 = 0100-0000-0000-0000-0000 = 0011-1111-1111-1111-1111 = 40800 407FF 40000 3FFFF 2 KByte dari 2716 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 255 KByte empty 0000-0000-0100-0000-0000 = to CS of 0000-0000-0011-1111-1111 = 2708 Address Decoder 00400 003FF 00000 0000-0000-0000-0000-0000 = 1 KByte dari 2708 .

kita dapat menggunakan 3-to-8 Decoder yang akan menterjemahkan sinyal A17. Pada contoh diatas (4 buah 4016).Alternatif lain (dan juga yg paling banyak diterapkan) untuk mengaktifkan salah satu keping memori adalah dengan menggunakan address decoder. Decoder adalah suatu alat yang akan menterjemahkan kondisi input dengan mengaktifkan salah satu outputnya.to . A18 A19 Y0 ENABLE 0 0 0 0 1 A19 0 0 1 1 X A18 0 1 0 1 X Y3 1 1 1 0 1 Y2 1 1 0 1 1 Y1 1 0 1 1 1 Y0 0 1 1 1 1 4016 A B C D - 2 . maka hanya ada satu keping memory yg diaktifkan. maka dibutuhkan decoder 2-to-4 yang memiliki 4 buah output dan salah satu output akan mengaktifkan salah satu keping memori yang bersesuaian. dan A19 untuk mengaktifkan salah satu dari 8 keping memori. A18. Setiap output dari decoder akan dihubungkan ke masukan CS dari salah satu keping memori. output Y3 untuk mengaktifkan 4016-D dimana ini terjadi pada saat A19 = 1 & A18 = 1. kita dapat menggunakan : output Y0 untuk mengaktifkan 4016-A dimana ini terjadi pada saat A19 = 0 & A18 = 0. output Y1 untuk mengaktifkan 4016-B dimana ini terjadi pada saat A19 = 0 & A18 = 1.4 Decoder Y1 Y2 Y3 ENABLE Mengacu pada tabel operasi diatas. output Y2 untuk mengaktifkan 4016-C dimana ini terjadi pada saat A19 = 1 & A18 = 0. Sedangkan untuk menyeleksi 8 keping memori. karena ada 4 buah keping yang akan diaktifkan. . Karena hanya ada satu output yg aktif.

A10 CS 2716 A 2716 B i8088 CS 2716 C CS A18 A19 2 to 4 Decoder CS 2716 D .D7 A0 .Rangkaian lengkap dari sistem µP Intel 8088 dengan 4 keping memori ada pada gambar berikut ini : D0 .

.

Dan jika dibutuhkan. Sedangkan untuk menerima data. Sebuah latch hanya dapat digunakan untuk satu arah saja : output atau input. sampai µP 8088 memiliki waktu untuk mengambil data tersebut.PPI 8255 Untuk mengirimkan data ke perangkat luar. . memiliki 3 port : • port A (pin 1-4 dan 37-40). • port C (pin 10-17) 2. apakah ingin dibuat sebagao input latch atau sebagai output latch. µP8088 dapat menggunakan latch (FlipFlop) untuk menyimpan data tersebut sampai ada data baru yang ingin dikirim µP 8088. port C dapat diprogram sebagai port kontrol 3. PPI 8255 : 1. address line A0 (pin 8) dan A1 (pin 9) digunakan untuk memilih salah satu port yg ingin diakses. implementasi dengan PPI 8255 (Programmable Peripheral Interface) akan sangat memudahkan dan menyederhanakan sistem. Hal ini disebabkan karena PPI 8255 memiliki 3 latch yang dapat diprogram sesuka kita. Untuk sistem yang kompleks. • port B (pin 18-25). masing-masing port tersebut dapat diprogram menjadi port input maupun sebagai port output atau keduanya. diperlukan pula suatu latch untuk menyimpan data. Skema konektor dari IC PPI 8255 adalah sebagai berikut : PA3 PA2 PA1 PA0 read CS ground A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1 PB2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 8255 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 PA4 PA5 PA6 PA7 write reset D0 D1 D2 D3 D4 D5 D6 D7 Vcc PB7 PB6 PB5 PB4 PB3 Terlihat pada skema diatas.

D7 DATA BUS BUFFER REGISTER DATA A PA0 . port B. dan port C. Register 8255 8255 menyediakan 4 buah register 8-bit : diakses saat A0 A1 0 0 0 1 1 0 1 1 keterangan register ini menyimpan data dari/untuk port A register ini menyimpan data dari/untuk port B register ini menyimpan data dari/untuk port C register untuk mengontrol kerja 3 register lainnya Register data A Register data B Register data C Register kontrol .PB7 RD WR READ/WRITE CONTROL LOGIC Terlihat bahwa PPI 8255 memiliki 3 port I/O (setiap port memiliki lebar 8 bit).PC3 REGISTER DATA C PC4 . Ketiga port tersebut diberi nama port A.PA7 Group A A0 A1 2 TO 4 DECODER PC0 .Skema blok diagram didalam PPI 8255 adalah sebagai berikut : D0 .PC7 REGISTER CONTROL Group B REGISTER DATA B PB0 .

Control Word A : untuk memprogram kerja port 1 D6 D5 D4 D3 D2 D1 D0 Group B Tipe Port C Lower (PC0-PC3) 0 → output 1 → input Tipe Port B 0 → output 1 → input Mode Selector 0 → mode 0 1 → mode 1 Group A Tipe Port C Upper (PC4-PC7) 0 → output 1 → input Tipe Port A 0 → output 1 → input Mode Selector 00 → mode 0 01 → mode 1 1X → mode 2 . B.Register data A. dan C. kita dapat memprogram kerja dari port A. Informasi ini disebut juga dengan Control Word. sedangkan Control Word B berfungsi untuk menSet atau meReset salah satu bit di Port C. Control Word A berfungsi untuk memprogram kerja setiap port. dan register kontrol hanya dapat diakses dalam format 8bit. Register data C dapat diakses dalam 2 nibble (2 x 4 bit) yaitu Lower C (C0 – C3) dan Upper C (C4 – C7) Programming 8255 Dengan mengirim suatu informasi selebar 1 byte ke register kontrol. register data B.

Control Word B : menSet/Reset salah satu bit di Port C saat 8255 bekerja pada mode 0 X X X D3 D2 D1 D0 Set / Reset selected bit in Port C below 0 ® reset 1 ® set Select a specific bit in Port C 000 ® select Port C bit 0 001 ® select Port C bit 1 010 ® select Port C bit 2 011 ® select Port C bit 3 100 ® select Port C bit 4 101 ® select Port C bit 5 110 ® select Port C bit 6 111 ® select Port C bit 7 Karena masing-masing port dapat diprogram sebagai buffer input maupun output.PC4 PC3 . masing-masing dapat bekerja sebagai input atau output. MODE 0 . maka untuk memudahkan.PA0 Control Word A : D7 1 D6 0 D5 0 D4 A D3 CU D2 0 D1 B D0 CL . mode 0 : Basic I/O pada mode ini setiap port bekerja secara independen.8255 Port B 8 lines 4 lines Port C 4 lines Port A 8 lines I/O I/O I/O PB7 .PB0 PC7 . 8255 didesain khusus untuk menerima 3 mode kerja : 1.PC0 PA7 .

8255 Port B 8 lines Port C Port A 8 lines I/O Control atau I/O I/O PB7 . CU = 0 (Port C Upper sbg output).PC0 PA7 . B = 0 (port B sbg Output).PC4 PC3 . CU = 0 (Port C Upper sbg output). B = 0 (port B sbg Output).A = 0 (port A sbg Output).PB0 PC7 .PA0 Control Word A : D7 1 D6 0 D5 1 D4 A D3 CU D2 1 D1 B D0 CL A = 0 (port A sbg Output). CL = 0 (Port C Lower sbg Output) 2. CL = 0 (Port C Lower sbg Output) Control Word B : D7 1 a 0 0 0 0 1 1 1 1 D6 D5 D4 don’t care b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 D3 a D2 b D1 c D0 0/1 bit di register C yg diakses C0 C1 C2 C3 C4 C5 C6 C7 . mode 1 : Strobe I/O MODE 1 .

PC0 PA7 .8255 Port B 8 lines Port C Port A 8 lines Bidirectional I/O Control Bidirectional PB7 .PC5 PC4 .3.PA0 Control Word A : D7 1 D6 1 D5 X D4 A D3 CU D2 1 D1 B D0 CL A = 0 (port A sbg Output).PB0 PC7 . CL = 0 (Port C Lower sbg Output) Control Word B : D7 1 a 0 0 0 0 1 1 1 1 D6 D5 D4 don’t care b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 D3 a D2 b D1 c D0 0/1 bit di register C yg diakses C0 C1 C2 C3 C4 C5 C6 C7 . mode 2 : Bidirectional I/O MODE 2 . B = 0 (port B sbg Output). CU = 0 (Port C Upper sbg output).

Mencari alamat routine XX 3. Tipe interupsi ini ada 2 jenis : 1. nomor interupsi 1FH) 2.Interrupt Interupsi adalah upaya untuk mengalihkan perhatian µP Intel 8088 dari program yg sedang dikerjakan untuk memberikan pelayanan khusus terlebih dahulu pada yang menginterupsinya. Software Generated Dihasilkan oleh instruksi INT yang diikuti nomor interupsinya. Lompat ke alamat routine tersebut 4. Kembali ke program semula dgn cara mengembalikan semua isi register dari Stack . Mengerjakan routine tersebut 5. Interupsi yg dihasilkan oleh ROMBIOS (untuk nomor interupsi 0 s. interupsi dapat dibedakan menjadi 2. dan mengerjakan routine khusus untuk nomor interupsi tersebut. Interupsi yg dihasilkan oleh sistem operasi yg digunakan (untuk nomor interupsi 20H keatas) Adanya instruksi INT dalam program akan menyebabkan µP 8088 meninggalkan program yg sedang dikerjakan. maka µP 8088 akan kembali ke program semula yg tadinya ditinggalkan. Contoh : Keyboard menginterupsi kerja 8088 karena ada tuts keyboard yg ditekan. Hardware generated : dihasilkan dengan mengaktifkan sinyal Interrupt pada pin 18 di µP Intel 8088 (active high) Kedua jenis interupsi di atas akan menyebabkan µP Intel 8088 mengerjakan suatu routine (program kecil) khusus (Interrupt Service Routine). Software generated : dihasilkan dengan menggunakan instruksi INT 2. Urutan kerja µP 8088 saat mengerjakan instruksi INT XX (nilai XX dapat berharga 00H sampai FFH) : 1. Menyimpan isi register ke Stack 2. Data yg dihasilkan oleh tuts tersebut harus diambil sesegera mungkin oleh µP Intel 8088.d. yaitu : 1. Setelah routine tersebut selesai dikerjakan. Dilihat dari siapa yg menginterupsi. Contoh : INT 13 berarti interupsi nomor 13H.

akan dikembalikan. 4. Pop IP. 4. Yang dilakukan : 1. µP 8088 akan mencarinya di Interrupt Vector Table yg ada di alamat 00000H sampai 003FFH (setiap nomor interupsi membutuhkan 4 byte alamat yg disimpan oleh Interrupt Vector Table: 2 byte untuk alamat Segment dan 2 byte untuk alamat Offset) address 003FF 003FE 003FD 003FC 00003 00002 00001 00000 content 02 46 F0 00 00 C9 0F 9E Description Segment address Interrupt #FF Offset address Segment address Interrupt #00 Offset address 3. Set Interrupt Flag. 2. Lompat ke alamat routine XX Melompat ke instruksi awal dari routine XX dgn melakukan lompatan JMP SSSS:OOOO dimana SSSS adalah alamat Segment dan OOOO adalah alamat Offset. Mengerjakan routine XX µP 8088 akan mengerjakan semua instruksi yg ada sampai ditemukan instruksi IRET (Interrupt Return) 5. µP 8088 harus mencari terlebih dahulu dimana routine XX tersebut berada. Yang dilakukan : 1. Push CS. Mencari alamat routine XX Sebelum dapat menjalankan routine XX. Pop Flag . 4. Push Flag. Push IP 2. Clear Interrupt Flag. Untuk mendapatkan alamat routine tsb. Clear Trap Flag. 5. Pop CS. maka semua isi regiter yg tadi disimpan. Kembali ke program semula Jika instruksi IRET dikerjakan. Set Trap Flag. 2. 5. 3. Menyimpan isi register ke Stack Langkah ini ditujukan untuk mengembalikan kembali isi register setelah routine XX selesai dijalankan. 3.1.

Mengerjakan routine tersebut 7. Clear Interrupt Flag. Mengaktifkan sinyal INTA Langkah ini ditujukan agar Interrupt Controller (ex: 8259) memberitahukan µP 8088 nomor interupsinya 3. Menyimpan isi register ke Stack Langkah ini ditujukan untuk mengembalikan kembali isi register setelah routine selesai dijalankan. 3. Push CS. Mencari alamat routine yg sesuai Sebelum dapat menjalankan routine yg sesuai. Yang dilakukan : 1. Menyimpan isi register ke Stack 2. maka 8088 akan kembali ke program semula yg tadinya ditinggalkan. Mencari alamat routine untuk nomor interupsi tersebut 5. 4. Lompat ke alamat routine tersebut 6. Clear Trap Flag. Mengaktifkan sinyal INTA (Interrupt Acknowledged) di pin 24 3. 5. Membaca nomor interupsi Membaca kondisi Address Bus A0 – A7 untuk mengetahui siapa yg menginterupsinya 4. Push Flag. µP 8088 akan mencarinya di Interrupt Vector Table yg sama dgn tabel untuk Software Generated Interrupt. .Hardware Generated Adanya sinyal +5V pada pin 18 pada 8088 akan menyebabkan 8088 meninggalkan program yg sedang dikerjakan. Urutan kerja µP 8088 saat mendapatkan sinyal aktif pada pin 18 (INTR) : 1. 2. µP 8088 harus mencari terlebih dahulu dimana routine tersebut berada. Lompat ke alamat routine tersebut Melompat ke instruksi awal dari routine dgn melakukan lompatan JMP SSSS:OOOO dimana SSSS adalah alamat Segment dan OOOO adalah alamat Offset. 5. Push IP 2. dan mengerjakan routine khusus untuk nomor interupsi tersebut. Membaca nomor interupsi di Address Bus (A0 – A7) 4. Setelah routine tersebut selesai dikerjakan. Untuk mendapatkan alamat routine tsb. Kembali ke program semula dgn cara mengembalikan semua isi register dari Stack 1.

maka semua isi regiter yg tadi disimpan. Set Trap Flag.6. Mengerjakan routine tersebut µP 8088 akan mengerjakan semua instruksi yg ada sampai ditemukan instruksi IRET (Interrupt Return) 7. 3. Pop CS. 5. Pop IP. Pop Flag . Kembali ke program semula Jika instruksi IRET dikerjakan. akan dikembalikan. Set Interrupt Flag. 4. 2. Yang dilakukan : 1.

CALL. SUB. yang kemudian oleh pengontrol memori. Karena belum tentu opcode yg ada di IR tersebut adalah instruksi lengkapnya. POP • Aritmetika dan Logika: CU akan meminta ALU (Arithmetic and Logic Unit) untuk melakukan kalkulasi. JZ.Studi Kasus Mikroprosesor secara Umum Proses Kerja suatu µP Urutan kerja yang harus dilakukan oleh CU dalam mengerjakan suatu instruksi tergantung pada desainnya. 2. PUSH. Control Unit (CU) harus menerjemahkan isi dari register Code Segment dan Instruction Pointer (CS+IP) untuk menentukan letak dari instruksi baru tersebut di memori. isi dari cell memori yang bersesuaian diletakkan di bus data. contoh : JMP. maka ada kemungkinan akan terjadi penjemputan kembali ke memori untuk melengkapi instruksinya. Dekoding Instruksi (ID = Instruction Decode) Isi baru dari IR tersebut kemudian diterjemahkan oleh CU untuk mengetahui apa saja yang diinginkan oleh instruksi baru tersebut. bagian operation codenya (opcode) dari memori ke Instruction Register (IR). AND • Control: CU akan melompat ke suatu lokasi memori dengan cara mengubah isi register CS dan IP. contoh : MOV. CU menggunakan bantuan tabel instruksi untuk memahami isi dari opcode tersebut. Untuk penterjemahan ini. Arsitektur VLI (Variable Length Instruction) seperti pada x86 menggunakan 3 tahapan sebagai berikut : 1.0007 = B8 07 00 " hanya opcode = B8 yg dijemput pada tahap IF. Ini menyebabkan perlunya pengaksesan memori kembali untuk menjemput data “07 00” 3. Contoh : PUSH AX = 50 " instruksi 1 byte yg berarti tidak perlu lagi penjemputan ke memori MOV AX. contoh : ADD. RET . JE. Hasil terjemahan isi CS+IP ini dikirim CU ke pengontrol memori melalui bus alamat. XOR. yaitu : • Data Transfer: CU akan memindahkan data dari suatu elemen memori ke elemen memori lainnya. CU akan melaksanakan satu dari tiga fungsi. CU kemudian memasukkannya ke IR. Eksekusi Instruksi (EX = Execution) Tergantung dari hasil penterjemahan instruksi diatas. Untuk dapat menjemput opcode instruksi baru tersebut. Penjemputan Instruksi (IF = Instruction Fetch) IR ! Mem[CS+IP] Proses kerja dimulai dengan penjemputan instruksi baru.

Sedangkan empat tipe terakhir akan berbeda untuk masing-masing arsitektur dari tidak ada sama sekali sampai pengembangan secara khusus. Konversi desimal-ke-karakter String String move. kali Decimal Penjumlahan/Perkalian desimal. Tipe-tipe instruksi dapat dikategorikan menjadi 8. Traps System Operating System call. Sedangkan support untuk tipe instruksi keempat System berbeda jauh pada tiap-tiap arsitektur. Sebagai contoh. berdasarkan pengukuran dengan SPECint92. pada umumnya terdapat penggunaan extensive pada beberapa tipe instruksi tertentu. String search Graphics Operasi pixel. Contoh: AMD K6/2 dengan 3Dnow! yang merupakan tambahan instruksi untuk operasi Graphics. yaitu : No 1 2 3 4 5 6 7 8 Type Instruksi Data Transfer Contoh Load-Stores (memindahkan informasi dari dan ke CPU dengan pengalamatan memori) Arithmetic & Logic Aritmetika integer dan operasi logika : ADD. Ini menunjukkan bahwa tidak semua CPU memiliki microcode yg sama. Pada arsitektur Intel 80x86. String compare. AND Control Branch. CPU akan menterjemahkan kode instruksi tersebut (decoding) dan kemudian melihat arti dari masing-masing pecahan tersebut di microcode. Beda arsitektur berarti berbeda juga microcodenya. Top 10 instruksi yang paling sering dijalankan pada 80x86 : Rank 1 2 3 4 5 6 7 8 Instruksi 80x86 Load Conditional branch Compare Store Add And Sub Move register-register % total dijalankan 22 % 20 % 16 % 12 % 8% 6% 5% 4% . Daftar ini sering disebut sebagai microcode dan setiap kali CPU menerima sebuah instruksi. Jump. manajemen virtual memory Floating Point Operasi floating point : tambah. program yang dapat dijalankan di IBM PC tidak akan jalan di Apple Macintosh. Operasi kompresi/dekompresi Semua CPU menyediakan fasilitas pengoperasian terhadap ketiga tipe pertama. Procedure call dan return.Set Instruksi Di dalam CPU terdapat daftar instruksi yang dapat dikerjakan hanya oleh CPU itu sendiri.

100(R1) Add R4. -(R2) Add R1. (R1) Add R3. (R1+R2) Add R1. #3 Add R4. instruksi tersebut pasti termasuk ke salah satu jenis pengalamatan (addressing mode) di bawah ini : Jenis Register Immediate Displacement Register Indirect Indexed Direct or Absolute Memory Indirect Autoincrement Autodecrement Scaled Contoh instruksi Add R4. 100(R2)[R3] Arti Reg[R4] ! Reg[R4] + Reg[R3] Reg[R4] ! Reg[R4] + 3 Reg[R4] ! Reg[R4] + Mem[100+Reg[R3]] Reg[R4] ! Reg[R4] + Mem[Reg[R1]] Reg[R3] ! Reg[R4] + Mem[Reg[R1]+Reg[R2]] Reg[R1] ! Reg[R1] + Mem[1001] Reg[R1] ! Reg[R4] + Mem[Mem[Reg[R3]]] Reg[R1] ! Reg[R1] + Mem[Reg[R2]] Reg[R2] ! Reg[R2] + d Reg[R2] ! Reg[R2] – d Reg[R1] ! Reg[R1] . (R2)+ Add R1.9 10 Call Return 1% 1% Addressing Mode Jika CPU mengerjakan instruksi yang memerlukan pengalamatan. @(R3) Add R1.Mem[Reg[R2]] Reg[R1] ! Reg[R1] + Mem[100+Reg[R2]+Reg[R3]*d] . R3 Add R4. (1001) Add R1.

.

. Demikian seterusnya. Dengan demikian telah terjadi percepatan sebanyak 1.14x dari 15T menjadi hanya 7T.AX IF DE IF DE EX ADD BX.CX Setelah CU menjemput instruksi 1 dari memori (IF).04).CX IF DE IF DE EX Disini instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan. Kelemahan pipeline adalah untuk mencapai keadaan ideal tersebut. Contoh pengerjaan instruksi tanpa pipeline t= 1 2 3 4 5 6 7 8 9 10 ADD AX.AX IF DE IF DE EX ADD BX. Pada saat CU menerjemahkan instruksi 1 tersebut. Untuk kasus pipeline sendiri. setiap instruksi yang berdekatan harus tidak tergantung dari instruksi disekitarnya.CX IF DE IF DE EX ADD DX. Inilah yang disebut paralelism yaitu dimana instruksi-instruksi disusun sedemikian sehingga mereka dapat dijalankan secara bersamaan (paralel). Ini berarti untuk 100 instruksi akan dapat dikerjakan dalam 104T (CPI = 1. Pada kondisi ideal CPI akan mencapai harga 1. Sedangkan untuk pengerjaan 3 buah instruksi terjadi percepatan sebanyak 2. maka dimungkinkan untuk mengisi kekosongan kerja di komponen tersebut. 2 instruksi dapat dikerjakan dalam 6T (CPI = 3) dan 3 instruksi dapat dikerjakan dalam 7T (CPI = 2. Sebagai contoh : Instruksi 1 : ADD AX.67x dari 10T menjadi hanya 6T. pada saat CU menjalankan instruksi 1 (EX).3) dan untuk 4 instruksi dapat dikerjakan dalam 8T (CPI = 2). instruksi 2 diterjemahkan (ID). CU akan menerjemahkan instruksi tersebut (ID). Adanya teknologi pipeline menyebabkan IF akan menjemput instruksi 2 pada saat ID menerjemahkan instruksi 1. komponen IF tidak bekerja.AX Instruksi 2 : ADD BX. 9 10 Dengan adanya pipeline dua instruksi selesai dilaksanakan pada detik keenam (sedangkan pada kasus tanpa pipeline baru selesai pada detik kesepuluh). Contoh pengerjaan instruksi dengan pipeline t= 1 2 3 4 5 6 7 8 ADD AX.Pipeline pada x86 Karena untuk setiap tahap pengerjaan instruksi.DX IF DE IF DE EX Disini instruksi baru akan dijemput setelah tahap IF menganggur (t2). komponen yang bekerja berbeda.

t= PUSH AX PUSH BX ADD AX. dan satunya lagi untuk mengeksekusi instruksi kedua. akan menghasilkan stall setiap kali tahapan EX dan IF terjadi bersamaan dimana suatu instruksi pada tahap EX ingin menulis memori dan pada saat yang bersamaan instruksi lainnya ada pada tahap IF yang berarti pembacaan memori. Structural Hazards muncul dari konflik resource sistem yaitu ketika hardware tidak dapat mensuport semua kemungkinan kombinasi pelaksanaan instruksi 2. Hazards mengurangi performansi dari CPU dimana percepatan ideal tidak dapat dicapai. maka setiap resource harus diduplikasi sebanyak jumlah stage dalam pipeline (= jumlah tahapan pengerjaan instruksi). Seperti misalnya instruksi kedua dan ketiga dieksekusi pada saat yg bersamaan. Yang pertama untuk mengirim isi register AX ke stack dan yg kedua untuk menjemput instruksi ketiga (ADD).Masalah-masalah pada Pipeline Dengan adanya persyaratan bahwa setiap instuksi yang berdekatan harus tidak saling bergantung. Structural Hazards Ketika suatu mesin di-pipeline. Tidak ada instruksi baru yang dijemput sampai hambatan itu selesai. Jika memori tidak mendukung 2 pembacaan sekaligus seperti ini.AX 1 IF 2 DE IF 3 4 EX DE EX IF DE 5 6 7 IF DE EX Pada t3 terjadi dua buah akses ke memori. . Situasi ini disebut Hazards. Untuk menghilangkan terjadinya Structural Hazard. maka ini berarti komponen-komponen yg terlibat dalam eksekusi harus diduplikasi. sebuah mesin yang memiliki sistem memori dengan hanya 1 port (1 set address bus dan 1 set data bus) untuk membaca dan menulis. Salah satu untuk mengeksekusi instruksi pertama. CPU tersebut dikatakan memliki structural hazards Sebagai contoh. maka akan terjadi Structural Hazard dimana penjemputan instruksi ketiga (ADD) akan ditunda sampai detik keempat. Ada 3 kelompok Hazards : 1. Ini berarti instruksi-instruksi selanjutnya akan ditunda pula penjemputannya. Data Hazards muncul ketika data untuk suatu instruksi tergantung pada hasil instruksi sebelumnya 3. Control Hazards muncul pada pelaksanaan instruksi yang mengubah PC (contoh : branch) Adanya Hazards menyebabkan pipeline terhambat (stalled). Jika beberapa kombinasi dari instruksi tidak dapat diakomodasikan karena konflik resource. maka ada kemungkinan terjadinya situasi dimana pipeline gagal dilaksanakan (instuksi berikutnya tidak bisa dilaksanakan). eksekusi dari instruksi yang bertumpukan tersebut membutuhkan pemasangan pipeline pada unit-unit fungsional dan duplikasi resource untuk memperbolehkan semua kemungkinan kombinasi pelaksanaan instruksi di pipeline.

Data Hazards dapat diklasifikasikan menjadi 3 tipe dilihat dari urutan operasi baca-tulis oleh instruksi yang berdekatan.Data Hazards Data hazards terjadi ketika pipeline merubah urutan baca/tulis ke operand sehingga urutannya menjadi berbeda dengan urutan yang dilihat dengan menjalankan instruksiinstruksi tersebut pada mesin yang tidak di-pipeline. data yang ada di AX adalah 0000. RAW adalah type yang paling sering terjadi diantara tipe yg lain. WAW (Write After Write) : Y mencoba untuk menulis suatu cell memori sebelum ditulis oleh X. maka data yang ada di AX adalah dari stack. Instruksi ketiga akan membaca AX pada t5 sehingga yang dibaca adalah 0000 bukan FFFF. Jika ada 2 instruksi X dan Y dimana instruksi X dikerjakan lebih dahulu dari instruksi Y : RAW (Read After Write) Y mencoba untuk membaca suatu cell memori sebelum X menulisnya sehingga Y mendapatkan harga lama dari memori tersebut. t= MOV AX. dan kemudian akan ditumpuk oleh instruksi kedua dengan data FFFF pada t6. 0000 MOV AX. Urutan penulisan menjadi terbalik sehingga isi dari memori adalah hasil proses instruksi X padahal yang diinginkan adalah hasil proses dari instruksi Y (tertumpuk oleh hasil instruksi X) t= MOV AX. FFFF PUSH AX 1 IF 2 DE IF 3 4 5 IF DE EX DE IF DE IF DE EX 6 EX Jika ketiga instruksi tersebut dikerjakan pada uP tanpa pipeline. Hal ini disebabkan karena register AX akan diisi data dari stack oleh instruksi kedua pada t4 sedangkan instruksi pertama akan menumpuknya dengan data 0000 karena instruksi kedua baru selesai pada t5. Hal ini disebabkan karena register AX akan diisi harga 0000 oleh instruksi pertama pada t5. maka data yang di-Push ke stack adalah FFFF. Namun ternyata jika dikerjakan pada uP dengan pipeline. . yang di-Push ke stack adalah 0000. Namun ternyata jika dikerjakan pada uP dengan pipeline.FFFF POP AX 1 IF 2 3 DE IF IF DE 4 DE EX 5 EX Jika kedua instruksi tersebut dikerjakan pada uP tanpa pipeline.

dimana a = [0000]. t= MOV AX. Hal ini disebabkan karena register AX akan diisi data dari stack oleh instruksi ketiga pada t5. Disini instruksi-instruksi disusun sedemikian rupa agar tingkat kebergantungan antara instruksi yang berdekatan dapat dikurangi. Namun ternyata jika dikerjakan pada uP dengan pipeline. Contoh : Pada cuplikan program Pascal : a := b + c. d = [0006]. Sebagai contoh adalah output dari ALU (tahap EX) diumpankan langsung kembali ke ALU yang digunakan untuk melaksanakan proses selanjutnya. CX IF DE [0000]. data yang ada di BX berasal dari stack. Teknik ini sederhana untuk dilakukan namun akan memperumit desain CPU dan tidak dapat digunakan untuk semua kasus Data Hazard. dan data ini akan menumpuk data FFFF yang diberikan oleh instruksi pertama. [0004] IF DE IF BX. d := a + e. c = [0004]. Teknik kedua adalah yang paling sering digunakan yaitu dengan penjadwalan instruksi (Instruction Scheduling). [0002] IF DE IF DE CX. e = [0008] jika diterjemahkan ke instruksi mesin oleh compiler Pascal yg ‘lugu’ : [asumsi: instruksi ADD hanya 1 byte] t= 1 2 3 4 BX. b = [0002].FFFF MOV BX.AX POP AX 1 IF 2 DE IF 3 IF DE IF 4 5 DE EX IF DE DE EX 6 EX Jika ketiga instruksi tersebut dikerjakan pada uP tanpa pipeline. Beberapa Teknik untuk meminimisasi stall oleh Data Hazard Teknik yang pertama adalah forwarding atau bypassing dimana hasil dari suatu tahap pengerjaan instruksi diumpankan langsung ke tahapan dimana instruksi lainnya memerlukan hasil dari tahap tersebut. maka data yang ada di BX adalah FFFF. BX IF 5 6 7 8 EX DE EX EX DE IF DE EX 9 10 11 12 MOV MOV a:=b+c ADD MOV . Hal ini membutuhkan suatu compiler yang canggih dan pintar untuk melakukan penyusunan instruksi.WAR (Write After Read) : Y mencoba untuk menulis suatu cell memori sebelum dibaca oleh X.

[0008] AX. [0004] IF DE IF DE EX MOV AX. CX IF DE EX MOV [0000]. [0002] IF DE IF DE EX MOV CX. [0002] IF DE IF DE EX CX. BX [0006]. Untuk menghindarinya. AX IF DE IF DE IF DE IF IF DE IF EX DE EX EX DE IF DE EX Akan terjadi dua buah RAW Hazard : 1. [0000] BX. BX IF DE IF DE EX sisipan instruksi lain ADD AX. t= 1 2 3 4 5 6 7 8 9 10 BX. antara instruksi ke-6 dan ke-7 dimana instruksi ketujuh akan membaca BX sebelum diisi data [0008] oleh instruksi keenam. kita harus menunda eksekusi instruksi ketujuh sampai detik ke-13 agar BX yg dibaca adalah data dari [0008] (semua instruksi telah tergeser 2T karena penundaan instruksi ketiga diatas) t= AX. delapan instruksi diatas dapat disusun ulang (reschedule) pengerjaannya menjadi : t= 1 2 3 4 5 6 7 8 9 10 11 12 13 MOV BX. antara instruksi ke-2 dan ke-3 dimana instruksi ketiga akan membaca CX sebelum diisi data [0004] oleh instruksi kedua. [0004] IF DE IF DE EX BX. AX IF DE IF DE EX . Untuk menghindarinya. BX [0006]. BX IF DE IF DE EX MOV MOV ADD MOV 2. Dengan hasil yang sama. CX IF DE EX [0000]. BX IF DE EX MOV [0006]. [0008] IF DE IF DE EX sisipan instruksi lain ADD BX. [0000] BX.MOV MOV d:=a+e ADD MOV AX. [0008] AX. kita harus menunda eksekusi instruksi ketiga sampai detik ke-7 agar CX yg dibaca adalah data dari [0004]. AX 7 8 9 10 11 12 13 14 15 16 IF DE IF DE EX IF DE IF DE EX IF DE EX IF DE IF DE EX MOV MOV ADD MOV Total waktu yg dibutuhkan untuk melaksanakan semua instruksi menjadi 16T karena ada 4 buah penundaan.

Dengan menyusun ulang instruksi waktu yang dibutuhkan sekarang menjadi 13T. .

Control Hazard Control Hazards menyebabkan CPU kehilangan performansi yang sangat besar karena ketika suatu instruksi mengubah isi Program Counter (CS+IP). . teknik minimisasi control hazard adalah dengan menghitung alamat tujuan terlebih dahulu dan menjemput instruksi di alamat tujuan tersebut. Untuk jump. a := b. dan return. Hal ini karena ketiga instruksi tersebut perubahan isi PC pasti akan dilakukan (karena lompatan tanpa syarat). maka hal ini akan menjadi masalah karena register AX telah diubah oleh instruksi POP AX. Jika lompatan ternyata tidak dilakukan. AX. Hal ini terjadi jika instruksi tersebut adalah lompatan (jump). Sedangkan untuk lompatan bersyarat isi PC dapat berubah dan dapat juga tidak. repeat a := a+1. until a = 10. call. Namun jika lompatan ternyata dilakukan. CX. Contoh : Pada cuplikan program Pascal : a := 0. maka hal ini tidak menjadi masalah karena memang instruksi berikutnya adalah POP AX. seluruh instruksi setelahnya akan dibatalkan meskipun sudah dijemput (IF). panggilan service (call). CX. 0103 AX IF DE IF DE EX IF DE EX Saat instruksi JNZ 0103 dieksekusi (t9). dimana b = stack jika diterjemahkan ke instruksi mesin oleh compiler Pascal yg ‘lugu’ : offset 0100 0103 0106 0109 010B 010D t= 1 2 3 4 0000 IF DE IF DE 000A IF DE IF 0001 IF DE AX IF 5 6 7 8 EX DE EX IF DE EX DE IF DE EX 9 a:=0 repeat a:=a+1 until a=10 a:=b MOV MOV ADD XOR JNZ POP AX. dan kembali ke alur program sebelumnya (return). instruksi POP AX telah selesai dieksekusi (t8). Hal ini akan menyebabkan stall yang cukup besar jika instruksi yang dijemput adalah instruksi yang salah.

metode scoreboard akan merekam setiap instruksi lompat. Kelanjutan dari tes ini adalah menghitung alamat tujuan terlebih dahulu. Dan kekurangannya adalah diperlukannya hardware tambahan (yg cukup banyak) untuk dapat melakukan testing tersebut. dengan mendeteksi terlebih dahulu apakah lompatan bersyarat akan dilaksanakan atau tidak dengan mengetes instruksi yang mempengaruhi keputusan tersebut. 2. Pengembangan lebih lanjut dari kedua metode diatas (predict-taken dan predict-nottaken) adalah dgn suatu metode yg disebut scoreboard. a. Not Taken Taken Predict Taken 00 Predict Taken 01 Taken Taken Predict Not Taken 11 Not Taken Not Taken Predict Not Taken 10 Taken Not Taken Dengan menggunakan algoritma Tomasulo di atas. Predict Not Taken adalah menganggap semua lompatan bersyarat pasti tidak dilakukan (pasti tidak melompat) sehingga jika terjemput suatu instruksi lompatan. . Misalnya saat ini scoreboard berisi 00 yg berarti setiap instruksi lompat dianggap akan diambil (predict taken). Algoritma yg digunakan pada metode ini adalah Tomasulo. maka yg dijemput kemudian adalah instruksi-instruksi setelah instruksi lompatan tersebut. Predict Taken adalah menganggap semua lompatan bersyarat pasti dilakukan (pasti melompat) sehingga begitu terjemput suatu instruksi lompatan.Ada dua cara yg dapat dilakukan untuk mengurangi Control Hazard : 1. dengan mengasumsikan apakah lompatan bersyarat tersebut akan dilakukan atau tidak. Kelebihan dari cara ini adalah deteksinya 100% benar. maka yg dijemput kemudian adalah instruksi-instruksi di alamat tujuan lompatan tersebut. Sistem akan berubah menjadi predict not taken hanya jika telah terjadi 2x lompatan yg tidak diambil (2x tidak melompat) dimana scoreboard akan berisi harga 10. Sehingga disini pengambilan keputusan berdasarkan history. b.

McGraw Hill 2. Programming. 1987 4. 80386. Douglas V. 80186. “8088 Data Sheet Book”. Brey. “Microprocessors and Interfacing : Programming and Hardware”. Intel. Barry B. Hall. MIS Press. . “The Intel Microprocessors : 8086/88. 3rd ed. Agustus 1990 3.Referensi 1. Maxwell Macmillan Int. 2nd ed. and Interfacing”. 80286. and 80486 : Architecture. Sanjiva Nath. “Assembly Language Interfacing in Turbo Pascal”.

Sign up to vote on this title
UsefulNot useful