13.07.2013 Views

Arsitektur Mikroprosesor - ELearning Jogja

Arsitektur Mikroprosesor - ELearning Jogja

Arsitektur Mikroprosesor - ELearning Jogja

SHOW MORE
SHOW LESS

Transform your PDFs into Flipbooks and boost your revenue!

Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.

<strong>Mikroprosesor</strong><br />

Bab 3: <strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Generasi Awal Prosesor<br />

PENTIUM<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 1


20 bit<br />

16 bit<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Register<br />

Antrian<br />

(FIFO)<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 2


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

• Prosesor 8086 terbagi menjadi 2 bagian<br />

fungsional yang independen, yakni BIU (bus<br />

interface unit) dan EU (execution unit).<br />

• BIU bertugas mengirim kode-kode alamat<br />

keluar, mengambil instruksi dari memori, dan<br />

membaca data dari port dan memori. BIU<br />

menangani semua trnasfer data dan alamat<br />

pada bus untuk membantu EU.<br />

• EU meminta BIU untuk mengambilkan<br />

instruksi dan data dari memori, mendekode<br />

dan melaksanakan instruksi<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 3


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU)<br />

• EU mengandung rangkaian-rangkaian<br />

kontrol yang berfungsi mengarahkan<br />

operasi-operasi internal.<br />

• Dekoder pada EU menerjemahkan instruksiinstruksi<br />

yang telah diambil dari memori ke<br />

dalam urutan aksi.<br />

• EU memilki ALU 16-bit dan dapat melakukan<br />

penjumlahan, pengurangan, AND, OR, XOR,<br />

increment, decrement, complement, atau<br />

shift bilangan biner.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 4


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU) : FLAG REGISTER<br />

• 8086 memiliki register bendera dengan<br />

panjang 16-bit. Dari 16-bit itu terdapat 9<br />

bendera yang aktif.<br />

• Dari 9 bendera yang aktif, 6 bendera di<br />

antaranya (bendera kondisi) digunakan<br />

untuk menunjukkan kondisi-kondisi yang<br />

dihasilkan oleh pelaksanaan instruksi yakni<br />

bendera CF(carry flag), PF(parity flag),<br />

AF(auxiliary carry flag), ZF(zero flag),<br />

SF(sign flag), dan OF(overflow flag).<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 5


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): FLAG REGISTER<br />

• Sedangkan 3 bendera lainnya (bendera<br />

kontrol) digunakan untuk mengendalikan<br />

beberapa operasi prosesor. Bendera-bendera<br />

kontrol ini berbeda dengan 6 bendera kondisi<br />

dalam hal cara set dan reset-nya. Keenam<br />

bendera kondisi diset dan direset oleh EU,<br />

berdasarkan hasil operasi-operasi aritmetika<br />

atau logika, sedangkan 3 bendera kontrol diset<br />

dan direset oleh instruksi-instruksi khusus yang<br />

ada pada program. Bendera itu adalah TF (trap<br />

flag), IF (interrupt flag), dan DF (direction flag).<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 6


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

• Lokasi bit setiap bendera dalam register bendera:<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 7


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): FLAG REGISTER<br />

• Bendera carry akan diset (CF=1), jika<br />

operasi ALU menghasilkan carry. Contoh:<br />

1 ---> carry<br />

1010 1000 isi Akumulator<br />

1000 1001 + isi TMP<br />

0011 0001 isi Akumulator setelah<br />

Penjumlahan bit ke-7<br />

menghasilkan carry<br />

sehingga CF=1<br />

perintah penjumlahan<br />

dilaksanakan<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 8


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): FLAG REGISTER<br />

• Bendera paritas (parity flag) akan diset<br />

(PF=1), jika pelaksanaan perintah oleh ALU<br />

menghasilkan jumlah bit 1 genap dan reset<br />

(PF=0) jika jumlah bit 1 ganjil.<br />

Contoh: Output ALU=01100011, maka PF= 1<br />

Output ALU=00101010, maka PF= 0<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 9


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): FLAG REGISTER<br />

• Bendera AF (auxiliary carry flag) akan diset<br />

(AF=1), jika dalam penjumlahan, bit ke 3<br />

menghasilkan carry. Contoh:<br />

Bit ke-7<br />

Bit ke-3<br />

Bit ke-0<br />

0011 0010 isi Akumulator<br />

0000 0101 + isi TMP<br />

0011 0111 isi Akumulator setelah<br />

Penjumlahan bit ke-3<br />

tidak menghasilkan<br />

carry sehingga AF=0<br />

perintah penjumlahan<br />

dilaksanakan<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 10


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): FLAG REGISTER<br />

• Contoh yang lain<br />

0010 1000 isi Akumulator<br />

0000 1001 + isi TMP<br />

0011 0001 isi Akumulator setelah<br />

Penjumlahan bit ke-3<br />

menghasilkan carry<br />

sehingga AF=1<br />

perintah penjumlahan<br />

dilaksanakan<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 11


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): FLAG REGISTER<br />

• Bendera zero akan diset (ZF=1), jika operasi ALU<br />

memberikan hasil 0.<br />

• Bendera sign akan diset (SF=1), jika pelaksanaan<br />

perintah oleh ALU menghasilkan bilangan negatif.<br />

• Bendera OF(overflow flag) akan set jika terjadi<br />

overflow yakni jumlah bit hasil operasi lebih besar dari<br />

lebar akumulator. Contoh: jika suatu operasi<br />

menghasilkan bilangan dengan panjang 17-bit,<br />

sedangkan akumulator 8086 hanya 16-bit, maka<br />

bendera OF akan set.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 12


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): FLAG REGISTER<br />

• Bendera TF (trap flag) digunakan pada mode<br />

operasi langkah tunggal (single step atau<br />

trace). Jika bendera ini set, maka pelaksanaan<br />

instruksi akan dilakukan step demi step.<br />

• Bendera IF digunakan untuk mengijinkan<br />

interupsi dari program.<br />

• Bendera DF digunakan pada operasi string.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 13


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): REGISTER SERBAGUNA<br />

(GENERAL-PURPOSE REGISTERS)<br />

• 8086 memiliki 8 buah register serbaguna yakni:<br />

AH, AL, BH, BL, CH, CL, DH, DL. Khusus<br />

untuk AL dinamakan pula AKUMULATOR.<br />

• Jika register-register tersebut akan digunakan<br />

sebagai register 16-bit, maka pasangan AH<br />

dan AL membentuk AX, BH dan BL<br />

membentuk BX, CH dan CL membentuk CX,<br />

serta DH dan DL membentuk DX 16-bit.d<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 14


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): REGISTER SERBAGUNA<br />

(GENERAL-PURPOSE REGISTERS)<br />

8-bit<br />

8-bit<br />

AH AL<br />

BH BL<br />

CH CL<br />

DH DL<br />

AX, 16-bit<br />

BX, 16-bit<br />

CX, 16-bit<br />

DX, 16-bit<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 15


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

EXECUTION UNIT (EU): REGISTER SERBAGUNA<br />

(GENERAL-PURPOSE REGISTERS)<br />

• AX: merupakan akumulator, sering digunakan<br />

untuk menyimpan hasil sementara setelah<br />

operasi aritmetika dan logika<br />

• BX: sering digunakan sebagai register base<br />

untuk menyimpan address base data yang<br />

terletak di dalam memori dan juga address<br />

base tabel data.<br />

• CX: dapat digunakan sebagai register count.<br />

• DX: dapat digunakan sebagai register data.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 16


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit (BIU)<br />

Register Antrian<br />

• Pada saat EU mendekode atau melaksanakan<br />

suatu instruksi, ia tidak memerlukan<br />

menggunakan bus sehingga dapat digunakan<br />

oleh BIU untuk mengambil 6 byte instruksi<br />

sebagai instruksi berikutnya yang akan<br />

dilaksanakan.<br />

• Instruksi-instruksi tersebut dinamakan<br />

prefetched instruction dan oleh BIU disimpan<br />

dalam register FIFO (first-in first-out) yang<br />

disebut juga register antrian.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 17


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit (BIU)<br />

Register Antrian<br />

• Ketika EU siap melaksanakan instruksi<br />

berikutnya, ia dengan mudah membaca<br />

instruksi-instruksi dari register antrian dalam<br />

BIU.<br />

• Jadi, ketika EU sedang melaksanakan suatu<br />

instruksi, bus dapat digunakan oleh BIU untuk<br />

menulis dan membaca memori serta<br />

mengambi instruksi berikutnya.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 18


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit (BIU)<br />

Register Antrian<br />

• Teknologi yang memungkinkan pengambilan<br />

instruksi berikutnya sambil melaksanakan<br />

instruksi yang ada dinamakan pipelining.<br />

Berikut ini adalah contoh perbedaan prosesor<br />

8085 tanpa pipelining dan 8086 dengan<br />

pipelining dalam melakukan pengambilan<br />

instruksi, pelaksanaan instruksi, operasi read<br />

dan operasi write. Nampak bahwa pipelining<br />

memberikan tingkat penggunaan bus yang<br />

lebih efektif.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 19


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit (BIU)<br />

Register Antrian<br />

8085<br />

8086<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 20


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit (BIU)<br />

Register Segmen<br />

• 8086 mampu mengalamati 2 20 lokasi memori,<br />

sedangkan panjang register IP yang dimilikinya<br />

hanya 16-bit.<br />

• Untuk memperoleh 20-bit sinyal alamat, 8086<br />

menggunakan bantuan register segmen.<br />

Gabungan antara register segmen 16-bit dan<br />

IP 16-bit akan menghasilkan 20-bit sinyal<br />

alamat.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 21


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit (BIU)<br />

Register Segmen<br />

• 8086 memilki 4 buah register segmen yakni CS<br />

(code segment), SS (stack segment), ES (extra<br />

segment), dan DS (data segment).<br />

• Jika suatu register segmen berisi kode<br />

misalnya CS berisi 348A, maka CS dianggap<br />

memiliki alamat awal 348A0. BIU secara<br />

otomatis akan menambahkan angka 0 di<br />

belakang isi segmen. Setiap segmen<br />

menempati 64K byte memori, dan dapat<br />

ditempatkan di mana saja di dalam ruang<br />

alamat 1-M byte.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 22


<strong>Arsitektur</strong><br />

<strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit<br />

(BIU)<br />

Register Segmen<br />

• Contoh<br />

penempatan<br />

alamat segmen<br />

pada memori 8086.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 23


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit<br />

(BIU)<br />

Instrustion Pointer<br />

(IP)<br />

• IP berisi instruksi<br />

berikutnya yang akan<br />

diambil. Alamat fisik<br />

yang dihasilkan BIU<br />

diperoleh dengan<br />

cara seperti di<br />

samping.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 24


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Bus Interface Unit (BIU)<br />

Register Segmen<br />

• Bagian alamat awal segmen yang tersimpan di<br />

dalam register segmen dinamakan segment<br />

base, dalam contoh 348A adalah segment<br />

base yang tersimpan dalam CS.<br />

• Isi IP merupakan offset atau jarak<br />

(displacement) antara alamat awal segmen<br />

dengan alamat fisik yang dihasilkan. Pada<br />

contoh, IP=4214 berarti merupakan jarak<br />

antara348A0 (alamat awal segmen) s.d.<br />

38AB4 (alamat fisik).<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 25


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

• Format penulisan alamat fisik:<br />

Contoh:<br />

segment base : offset form<br />

Jika CS berisi 348A dan IP=4214, akan<br />

menghasilkan alamat fisik 38AB4. Alamat fisik<br />

tersebut dapat direpresentasikan/disajikan atau<br />

ditulis dalam bentuk:<br />

CS:IP atau 348A:4214 atau CS:IP=38AB4<br />

Berapa alamat fisik yang direpresentasikan oleh<br />

4370:561E, dan 7A32:0028<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 26


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Register Stack Pointer(SP)<br />

• Stack adalah bagian memori yang digunakan<br />

untuk menyimpan alamat dan data selama<br />

subprogram dilaksanakan. Jika sub program<br />

selesai dilaksanakan, isi stack dikembalikan ke<br />

lokasi semula, yakni IP dan akumulator.<br />

• SP merupakan register yang berisi offset 16-bit<br />

yang menghasilkan alamat fisik teratas dari<br />

memori stack. Untuk membangkitkan alamat<br />

fisik 20-bit, SP memerlukan bantuan register<br />

SS (stack segment).<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 27


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Register Stack Pointer(SP)<br />

• Contoh: jika isi SS=5000 dan isi SP=FFE0, maka<br />

akan menghasilkan alamat fisik:<br />

SS 5 0 0 0 0 ← hardwired zero<br />

SP + F F E 0<br />

Alamat ------> 5 F F E 0<br />

fisik<br />

• Alamat fisik tersebut dapat direpresentasikan<br />

dalam 5FFE0 (single number) atau dalam bentuk<br />

SS:SP yakni 5000:FFE0.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 28


<strong>Arsitektur</strong> <strong>Mikroprosesor</strong><br />

INTEL 8086<br />

Register Index dan Pointer<br />

• Kecuali SP, EU pada 8086 juga memiliki register<br />

base pointer (BP) 16-bit, dan juga register index<br />

SI (source index) 16-bit, dan DI (destination index)<br />

16-bit.<br />

• Walaupun BP, SI, dan DI dapat digunakan sebagai<br />

penyimpan sementara dari data seperti halnya<br />

pada register serbaguna, namun penggunaan<br />

utama mereka adalah menyediakan offset 16-bit<br />

dari data untuk suatu segmen base. Contoh:<br />

Alamat fisik data pada memori akan dibangkitkan<br />

dengan menambah isi SI dengan alamat segmen<br />

base yang direpresentasikan oleh bilangan 16-bit<br />

dalam register DS.<br />

<strong>Arsitektur</strong> <strong>Mikroprosesor</strong> 29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!