Sejarah dan Pengertian Mikroprosesor
Mikroprosesor adalah sebuah IC (Integrated Circuit) yang digunakan sebagai otak/pengolah utama dalam sebuah sistem komputer.
Mikroprosesor merupakan hasil dari pertumbuhan semikonduktor. Prosesor
adalah chip yang sering disebut “Microprosessor” yang sekarang ukurannya
sudah mencapai gigahertz. Ukuran tersebut adalah hitungan kecepatan
prosesor dalam mengolah data atau informasi. Merk prosesor yang banyak
beredar dipasatan adalah AMD, Apple, Cyrix VIA, IBM, IDT, dan Intel.
Pertama kali
Mikroprosesor
dikenalkan pada tahun 1971 oleh Intel Corp, yaitu Mikroprosesor Intel
4004 yang mempunyai arsitektur 4 bit. Dengan penambahan beberapa
peripheral (memori, piranti I/O, dsb) Mikroprosesor 4004 di ubah menjadi
komputer kecil oleh intel. Kemudian mikroprosesor ini di kembangkan
lagi menjadi 8080 (berasitektur 8bit), 8085, dan kemudian 8086
(berasitektur 16bit).
Microprocessor 4004
Intel meluncurkan mikroprosesor pertama di dunia, 4-bit 4004, yang
didesain oleh Federico Faggin. Microprocessor 4004.Processor di awali
pada tahun 1971 dimana intel mengeluarkan processor pertamanya yang di
pakai pada mesin penghitung buscom. Ini adalah penemuan yang memulai
memasukan system cerdas kedalam mesin.
Mikroprosesor 4004 mempunyai 2.250 transistor PMOS, menangani data 4
bit, dan dapat mengeksekusi 60 ribu operasi per detik. Mikroprosesor
4004 ini adalah salah satu dari seri IC untuk komponen kalkulator
tersebut: 4001: memori ROM 2.048 bit; 4002: memori RAM
MIKROPROSESOR 8008
Pada tahun 1972 intel mengeluarkan microprocessor 8008 yang berkecepatan
hitung 2 kali lipat dari MP sebelumnya. MP ini adalah Mikroprosesor 8
bit pertama. Mp ini juga di desain untuk mengerjakan satu pekerjaan
saja. Bill Gates muda dan Paul Allen coba mengembangkan bahasa
pemograman untuk chip tersebut, namun saat itu masih kurang kuat.
MIKROPROSESOR 8080
Pada tahun 1974 intel kembali mengeluarkan Mikroprosesor terbaru dengan
seri 8080, dengan 4.500 transistor yang memiliki kinerja 10 kali
pendahulunya. Pada seri ini intel melakukan perubahan dari Mikroprosesor
multivoltage menjadi triple voltage, teknologi yang di pakai NMOS,
lebih cepat dari seri sebelumnya yang memakai teknologi PMOS.
Mikroprosesor ini adalah otak pertama bagi komputer yang bernama altair.
Pada saat ini pengalamatan memory sudah sampai 64 kilobyte. Kecepatanya
sampai 10X mp sebelumnya.
Gambar Pinnya:
Fungsi PIN pada Microprosessor 8080/8086
1. AD0-AD7
Pin
ini (Pin 9-16) digunakan untuk transmisi memori dan alamat I/O pada
tiap siklus bus. Pin-pin ini dimultipleks, dimana di awal siklus bus,
pin-pin ini berfungsi sebagai bita alamat A0-A7, dan pada siklus
berikutnya digunakan oleh prosesor sebagai bus data D0-D7, dan informasi
alamat A0-A7 dilatch.
2. AD8-AD15
Pin
ini (pin 2-8, 39) digunakan untuk memori output dan bit alamat A8-A15.
Pin ini tidak dimultipleks dan tetap stabil di siklus bus. Dalam desain
PC, pin ini dilatch dan direpower menjadi bit alamat A8-A15 dalam siklus
bus.
3. A16/S3-A19/S6
Pada
permulaan tiap siklus memori, pin ini (pin 35-38) memberikan bit alamat
A16-A19, Pada siklus sisanya, menyediakan bit status internal 8088.
Jika S6 diset low, S5 memberikan status flag interrupt enable. S3 dan S4
dikodekan untuk memberikan segmen register yang digunakan untuk siklus
bus.
S4
|
S3
|
Segmen
|
0
0
1
1
|
0
1
0
1
|
Segmen Alternatif
Segmen Stack
Segmen Kode
Segmen Data
|
Desain PC tidak menggunakan informasi status ini. Jika pin ini dilatch dan direpower , mak akan menjadi bit alamat A16-A19
4. CLK
Pin
(Pin 19) ini merupakan jalur masukan yang menyediakan informasi timing
(pewkatuan) untuk mikroprosesor 8088. Dalam desainnya, masukan pin ini
diambilkan IC clok 8284A dengan frekuensi 4.77 MHz dengan siklus kerja
½.
5. RQ/GT0
Pin
ini merupakan jalur bidirectional yang digunakan oleh lokal bus untuk
penggunaan bus lokal. Soket ini kompatibel dengan prosesor numerik 8087
produksi Intel. Sinyal ini akan mengijinkan prosesor untuk masuk ke
dalam sistem untuk membentuk fungsinya.
6. RQ/GT1
Pin ini (pin 30) sama fungsinya dengan RQ//GT0, tetapi dengan prioritas rendah. Dalam desain PC jalur ini tidak digunakan.
7. LOCK
Pin
ini (pin 29) diaktifkan oleh instruksi lock dan tetap aktif sampai
akhir dari instruksi berikutnya. Jika desain PC bukan merupakan desain
dengan bus multi- master, maka pin ini tidak digunakan.
8. NMI
Pin
ini (pin 17) digunakan untuk memberikan nonmaskable interrupt
(Interrupt yang tidak bisa dihalangi) mikroprosesor 8088. Dalam desain
PC, NMI ini dihalangi keluar dari prosesor dengan suatu bit programamble
port. Dalam aplikasi desain PC permintaan NMI digunakan untuk menandai
paritas error dalam memori sistem, menerima permintaan interrupt dari
soket prosesor dan menerima permintaan interrupt dari piranti pada
sistem bus.
9. INTR
Sinyal
masukan (pin 18) adalah masukan interrupt yang dapat dihalangi
(maskable interrupt) prosesor 8088. Dalam desain PC, pin ini dihubungkan
dengan IC kontroler interrupt 8259A yang memperluas masukan interrupt
menjadi 8 masukan interrupt.
1 0. READY
Pin
22 ini digunakan untuk memasukkan kondisi “wait” dalam siklus bus
prosesor 8088, sehingga siklus memperpanjang siklus.sinyal ini digunakan
untuk memperlambat prosesor 8088 saat mengakses portI/O atau memori
yang jauh lebih lambat dari siklus bus 8088. Dalam desain PC, jalur ini
diambilkan dari IC clock 8284A yang menyinkronkan dengan clock sistem.PC
menggunakan fungsi Ready untuk memasukkan 1 kondisi wait dalam semua
akses port, memasukkan 1 kondisi wait dalam siklus DMA, dan memberikan
kondisi wait sistem bus.
1 1. RESET
Sinyal
pin 21 ini digunakan untuk menahan. Dalam desain PC sinyal ini
diambilkan dari IC clock 8284A yang menerima masukan dari sistem catu
daya.
1 2. QS0 dan QS1
Jalur 2 keluaran ini (pin 24 dan 25) memberikan status queue instruksi internal 8088.
1 3. TEST
Pin
masukan (pin 23) dites oleh instruksi “wait for test”. Jika tes low,
eksekusi dilanjutkan, jika tes high, 8088 menunggu dalam kondisi idle
sampai kondisi pin menjadi low. Dalam desain PC masukan tes dihubungkan
dengan pin busy 8087.
1 4. S0, S1, dan S2
Pin
keluaran (pin 26-28) memberikan informasi status untuk siklus bus.
Status ini valid pada tiap awal siklus bus. Dalam desain PC, pin ini
dihubungkan dengan bus kontroler 8288 yang dikodekan. Keluaran dekode
8088 menjadi pengontrol jalur dalam sistem bus. Berikut sinyal yang
dihasilkan dari status jalur oleh 8288 dan diberikan pada sistem bus :
IOR, IOW, MEMR, MEMW, dan ALE.
Karakteristik Input
Karakteristik input mikroprosesor-mikroprosesor ini kompatibel dengan
semua komponen logika standar yang tersedia saat ini. Berikut ini
merupakan table level tegangan input dan persyaratan arus input untuk
semua pin input pada kedua mikroprosesor. Level arus input sangat kecil
karena input merupakan koneksi gerbang MOSFET dan hanya mempresentasikan
arus bocor.
Level Logika
|
Tegangan
|
Arus
|
0
|
0.8V maksimum
|
±10 μA maksimum
|
1
|
2.0V maksimum
|
±10 μA maksimum
|
Tabel 1. Karakteristik Input Mikroprosesor 8086 dan 8088
b. Karakterisrik output
Level tegangan logika 1 pada 8086/8088 kompatibel dengan sebagian
besar keluarga logika standar tetapi logika 0 tidak. Rangkaian standar
logika memiliki tegangan maksimum logika 0 sebesar 0.4V dan 8086/8088
memiliki maksimum 0.45V. dengan demikian ada perbedaan 0.05V.
Perbedaan ini memperkecil kekebalan terhadap noise dari level standar
sebesar 400mV (0.V-0.45V) menjadi 350 mV. Kekebalan terhadap noise
adalah perbedaaan antara level tegangan output logika 0 dan level
tegangan output logika 1.
Level Logika
|
Tegangan
|
Arus
|
0
|
0.45V maksimum
|
2.0 μA maksimum
|
1
|
2.4V mksimum
|
-400 μA maksimum
|
Tabel 2. Karakteristik Output Mikroprosesor 8086 dan 8088
- 6. Register dan instruksi
The 8086 memiliki delapan (lebih atau kurang umum) 16-bit register termasuk stack pointer ,
tetapi tidak termasuk pointer instruksi, mendaftar bendera dan register
segmen. Empat dari mereka, AX, BX, CX, DX, juga dapat diakses sebagai
dua kali lebih banyak 8-bit register (lihat gambar) sementara empat
lainnya, BP, SI, DI, SP, adalah 16-bit saja.
Karena pengkodean kompak terinspirasi oleh 8-bit prosesor, instruksi
sebagian besar satu-alamat atau dua-address operasi yang berarti bahwa
hasil itu disimpan di salah satu operan. Paling banyak satu dari operan
bisa berada di memori, tetapi ini operan memori juga bisa menjadi
tujuan, sedangkan operan lain,
sumber, bisa berupa
register atau
langsung. Sebuah lokasi memori tunggal juga bisa sering digunakan baik sebagai
sumberdan
tujuan yang, antara faktor-faktor lainnya, lanjut berkontribusi pada kepadatan kode sebanding dengan (dan sering lebih baik daripada) mesin bit yang paling delapan.
Meskipun tingkat umum dari register sebagian besar jauh lebih besar
daripada di 8080 atau 8085, itu masih cukup rendah dibandingkan dengan
kontemporer khas komputer mini ,
dan register juga kadang-kadang digunakan secara implisit oleh
petunjuk. Sementara sempurna masuk akal bagi programmer assembly, ini
alokasi yang rumit untuk compiler dibandingkan dengan lebih teratur 16 –
dan 32-bit prosesor seperti PDP-11 , VAX , 68000 , dll, di sisi lain, dibandingkan dengan semi-kontemporer sederhana (tapi populer dan di mana-mana) 8-bit mikroprosesor seperti6502 , 6809 , atau 8085 , itu secara signifikan lebih mudah untuk menghasilkan kode untuk desain 8086.
The 8086 juga menampilkan 64 KB dari 8-bit (atau alternatif 32 K-kata 16-bit)
I / O space. A 64 KB (satu segmen) tumpukan berkembang menuju alamat yang lebih rendah didukung dalam hardware , 2-byte kata didorong ke stack dan bagian atas stack ditunjuk oleh SS: SP. Ada 256 potong , yang dapat dipanggil oleh kedua hardware dan software. Menyela dapat kaskade, menggunakan stack untuk menyimpan alamat kembali .
Prosesor memiliki beberapa instruksi baru (tidak hadir di 8080 dan
8085) ke tumpukan dukungan yang lebih baik berdasarkan bahasa
pemrograman tingkat tinggi seperti Pascal dan PL / M , beberapa yang lebih berguna yang mendorong
mem-op, dan
ukuran ret,mendukung “pascal konvensi pemanggilan ”secara langsung. (Beberapa orang lain, seperti mendorong
immed dan masukkan, akan
ditambahkan dalam 80.186 berikutnya, 80286, dan 80386 desain.) Ini juga
memiliki mekanisme tumpukan-penanda. Ada tiga bendera kontrol IF
(Interrupt Flag) TF (Trap Flag) DF (flag Arah).
- 7. Fungsi Pin Out IC Mikroprosesor 8086
AD15-AD8 Jalur bus alamat/data 8086 terdiri dari bus alamat/data
bagian atas 8086. Jalur-jalur ini berisi bit-bit alamat A15-A8 jika ALE
pada logika 1, dan hubungan bus data D15-D8. Pin-pin ini memasuki
impedansi tinggi jika terjadi hold acknowledge.
A19/S6-A16/S3 Bit-bit bus alamat/status dimultipleks untuk memberikan
sinyal alamat A19-A16 dan juga bit status S6-S3. Pin-pin ini juga
mempertahankan status impedansi tinggi selama hold acknowledge. Bit
status S6 selalu merupakan logika 0, bit S5 menunjukkan kondisi bit-bit
flag 1F. S4 dan S3 menunjukkan segmen mana yang diakses selama siklus
bus pada saat itu. Berikut ini fungsi status bit S3 dan S4 :
S4
|
S3
|
Fungsi
|
0
|
0
|
Segmen ekstra
|
0
|
1
|
Segmen stack
|
1
|
0
|
Kode atau tanpa segmen
|
1
|
1
|
Segmen data
|
Tabel 3.Fungsi Status Bit S3 dan S4
RD Jika sinyal baca berupa logika 0. Bus data bisa menerima data dari
memori atau alat I/O yang dihubungkan ke system. Pin ini naik ke status
impedansi tinggi selama acknowledge hold.
READY Input ini dikendalikan untuk menyisipkan status tunggu ke
timing mikroprosesor. Jika pin ready diletakkan pada level logika 0
mikroprosesor memasuki status tunggu dan tidak bekerja. Jika pin ready
diletakkan pada level logika 1 tidak memiliki efek pada operasi
mikroprosesor.
INTR Intrrupt request digunakan untuk meminta interrupt perangkat
keras. Jika INTR dijaga tetap high ketika IF=1. Mikroprosesor memasuki
siklus interrupt acknowledge setelah instruksi pada saat itu dijalankan
sepenuhnya.
TEST Pin test merupakan input yang dites oleh instruksi wait. Jika
berlogika 0 maka instruksi wait berfungsi sebagai NOP. Jika berlogika 1
maka instruksi wait menunggu sampai TEST berlogika 0.
NMI Input non-maskable interrupt sama dengan INTR kecuali interrupt
NMI tidak memeriksa apakah bit flah 1F merupakan logika 1. Jika NMI
diaktifkan, input interrupt ini menggunakan vector interrupt 2.
RESET Input reset menyebabkan mikroprosesor mereset dirinya sendiri jika pin ini tetap high selama minimum empat periode clock.
CLK Pin clock menyediakan sinyal waktu/timming dasar ke
mikroprosesor. Sinyal clock harus memiliki siklus kerja 33% untuk
memberikan timing internal yang sesuai.
Vcc Input catu daya.
GND Hubungan ground merupakan jalur kembali catu daya.
MN/MX Pin mode minimum/maksimum memilih operasi mode minimum atau
maksimum untuk mikroprosesor. Jika dipilih mode minimum pin ini harus
dihubungkan langsung ke +5.0V.
BHE/S7 Pin bus high enable digunakan untuk enable bus data yang
paling signifikan (D15-D8) selama operasi baca atau tulis. Status S7
selalu merupakan logika 1.S2, S1, dan S0 Bit-bit status ini menunjukkan
fungsi siklus bus saat itu. Sinyal-sinyal ini biasanya didekode oleh bus
controller 8288.RO/GT1 dan Pin-pin request/grant ini meminta direct
memory access (DMA). RO/GT0 selama operasi mode maksimum. Jalur-jalur
ini bidireksional, digunakan untuk meminta dan member hak operasi DMA.
LOCK Output lock digunakan untuk mengunci peripheral dari system. Pin
ini diaktifkan dengan menggunakan awalan LOCK untuk semua instruksi..
QS1 dan QS0 Bit queue status menunjukkan status antrian instruksi
internal. Pin-pin ini disediakan untuk akses oleh koprosesor numeric
(8087). Berikut ini able status bit antrian :
QS1
|
QS0
|
Fungsi
|
0
|
0
|
Antrian tidak aktif
|
0
|
1
|
Byte pertama opcode
|
1
|
0
|
Antrian kosong
|
1
|
1
|
Byte opcode berurutan
|
Tabel 4. Status Bit Antrian
- 8. Persamaan dan Perbedaan Mikroprosesor 8086 dengan Mikroprosesor 8088
a. Persamaan
Mikroprosesor 8086 dan 8088 sama-sama terkemas dalam dual in-line
package (DIP) 40-pin.Mikroprosesor 8086 dan 8088 sama-sama membutuhkan
tegangan catu sebesar +5.0V dengan toleransi tegangan catu ± 10%.
Mikroprosesor 8086 dan 8088 beroperasi pada temperature lingkungan
antara 32
o F dan sekitar 180
o F.
Mikroprosesor 8086 dan 8088 mempunyai karakteristik input dan karakteristik output yang sama.
b. Perbedaan
Perbedaan
|
8086
|
8088
|
Lebar bus data 16-bit
|
Lebar bus data 8-bit
|
Panjang antrian instruksi 6-byte
|
Panjang antrian instruksi 4-byte
|
Mempunyai pin M/IŌ
|
Mempunyai pin IO/M
|
Pin 34 BHE/S7
|
Pin 34 SSO
|
Arus catu maksimum 360 mA
|
Arus catu maksimum 340 mA
|
Tabel 5. Perbedaan Antara Mikroprosesor 8086 dan 8088
8086 merupakan mikroprosesor 16-bit, artinya bagian ALU,
register internalnya, dan sebagian besar instruksi-instruksinya
dirancang untuk bekerja pada data 16-bit.
8086 memiliki bus data 16-bit, jadi ia dapat membaca
data dari atau menyimpan data ke memori dan port-port yang ada dalam
format 16-bit atau 8-bit .
8086 memiliki bus alamat 20-bit, sehingga ia dapat
mengalamati 220 atau 1.048.576 lokasi memori atau 1 MB memori, sedangkan
register PC atau IP (instruction pointer) yang dimilikinya panjangnya
16-bit. Hal inilahyang merupakan keunggulan dari 8086.
Prosesor lain yang sejenis dengan 8086 adalah 8088. 8088
memiliki ALU, register, dan set instruksi yang sama dengan 8086. 8088
juga memiliki bus alamat 20-bit, jadi ia juga bisa mengalamati memori 1
MB.
Perbedaan 8088 dan 8086, 8088 memiliki bus data 8-bit,
sedangkan 8086 lebar bus datanya 16-bit. 8088 hanya dapat membaca dari
atau menulisi data ke memori dan port-port dengan panjang 8-bit. Untuk
membaca word 16-bit dari dua lokasi memori, 8088 selalu mengerjakan
dengan dua operasi baca. 8088 pada awalnya digunakan sebagai CPU pada
The Original IBM Personal Computer.
Prosesor 8086 terbagi menjadi 2 bagian fungsional yang independen, yakni BIU (bus interface unit) dan EU (execution unit).
BIU bertugas mengirim kode-kode alamat keluar, mengambil
instruksi dari memori, dan membaca data dari port dan memori. BIU
menangani semua trnasfer data dan alamat pada bus untuk membantu EU.
EU meminta BIU untuk mengambilkan instruksi dan data dari memori, mendekode dan melaksanakan instruksi
Arsitektur pada uP 8086,8088, dan beberapa versi diatasnya hingga
pentium pro sangat mirip. Pemahaman tentang arsitektur ini penting untuk
mengetahui cara programming processor. Dalam pemprograman uP tidak
terpisahkan dari register, yakni sebuah memori sementara milik uP.
Terdapat register yang memang visible, yakni dapat dialamati oleh uP.
Namun terdapat juga yang unvisible, terutama pada versi 80286 dan
setelahnya, untuk melakukan operasi pada protected mode. Adapun susunan
dari register yang dapat dialamati adalah:
Seperti terlihat pada gambar, model pemprograman yang ada adala 8, 16,
32 bit. Pada model 8 bit, terdapat register AH, AL, BH, BL, CH, CL, DH,
DL. Kemudian pada model 16 bit terdapat AX, BX, CX, DX, SP, BP, DI, SI,
IP, FLAGS, CS, DS, ES, SS, FS, dan GS. Untuk 32 bit, EAX, EBX, ECX, EDX,
hingga EFLAGS. Model tersebut dibagi menjadi dua type, general purpose
register dan special purpose register.
General Purpose Register
EAX, jika dalam model 32 bit adalah EAX, dalam mode 16 bit adalah
AX, dan 8 bit untuk AL atau AH. Digunakan untuk menyimpan hasil
aritmatika, dan lokasi alamat offset dan memory.
EBX, menyimpan lokasi alamat offset memory sistem dan memory data.
ECX, digunakan untuk melakukan penghitungan.mengalamati memory data.
EDX, menyimpan bagian dari hasil pembagian atau perkalian, mengalamati memory data.
EBP, base pointer, menunjuk lokasi memory pada saat transfer data memory.
EDI, mengalamati data string tujuan untuk instruksi yang berhubungan dengan string.
ESI, mengalamati data string sumber untuk instruksi yang berhubungan dengan string.
Special Purpose Register
EIP, menunjuk pada instruksi selanjutnya pada memory yang telah dialokasikan menjadi code segment.
ESP, mengalamati bagian memory yang digunakan sebagai stack.
EFLAGS, mengindikasikan kondisi uP dan hasil berbagai operasi.
Struktur dari FLAGS register sama untuk versi 8086 hingga pentium Pro. Adapun masing-masing fungsi dari FLAG adalah:
CF, carry flag, untuk menyimpan hasil simpanan atau pinjaman pada operasi tambah dan kurang.
Parity, mengindikasikan 0 atau 1. Pengecekan parity sekarang lebih banyak digunakan pada komunikasi data.
ACF, mengindikasikan parity namun hanya pada bit 3 dan 4.
ZF, mengindikasikan hasil aritmatika apakah 0 atau tidak. jika nilainuya 0, maka ZF=1 dan sebaliknya.
SF, sebagai tanda apakah sebuah integer bertanda atau tidak. jika signed, SF=1; dan sebaliknya.
TrapF, enable/disable fitur debugging.
IF, enable/disable pin input INTR.
DF, setting direction dari register. dapat increment atau decrement. disetting dengan bantuan instruksi STD, dan CLD.
Overflow, mengindikasikan telah terjadi overflow pada operasi
tambah atau kurang. para operasi unsigned number, biasanya overfloaw
tidak diperhatikan.
I/OPL, set level I/O privilege. paling tinggi adalah 00 dan
terenda 11.privilege paling tinggi tidak akan halangan dalam eksekusi
dan sebaliknya.
NT, diset ketika software melakukan perintah nested, yakni mengerjakan perintah lain dalam suatu perintah.
RS,control resume dari perintah setelah perintah berikutnya dikerjakan.
VM, set virtual mode yang memungkian bekerjanya beberapa DOS.
Alignment Check, tersetting apabila word atau double word tidak teralamati dengan benar.
SEGMENT REGISTER
Jika segment ini dihubungkan pada memory, maka dapat menghasilkan alamat
memory tertentu. Fungsi yang sebenarnya dari sebuah segment register,
berbeda pada real atau protected mode. Adapun secara general fungsi dari
segment register adalah sebagai berikut:
Code Segment, code segment menyimpan program yang digunakan uP.
dalam real mode alokasinya 64Kb namun pada protected mode lebih luas
lagi, dan merujuk pada descriptor awal dan akhir alamat yang dalam
register yang dapat digunakan.
Data Segment, letak sebagian besar data. pada 8086-80286 adalah 64K sedangkan pada 80386 sebesar4Gbytes.
Extra Segment, segment data tambahan untuk menyimpan tujuan pada instruksi string.
Stack Segment, mendefinisikan area pada memory yang dapat digunakan pada stack.
FS dan GS, adalah segment register yang hanya ada mulai 80386,
80486, pentium dan pentium pro. dapat diakses oleh program sebagai
register tambahan.
REAL MODE ADDRESSING
Real mode hanya menggunakan 1Mbyte memory internal. Ini ada pada sistem
8086 dan 88. PCDOS dan MSDOS selalu bekerja pada real mode.
SEGMENT dan OFFSET
Segment + Offet digunakan untuk mengalamati memory pada RAM. Segment,
mendefinisikan alamat awal dari memory. Offset address, alamat offset
yang memilih antara range 64Kbytes memory segment. segment address
otomatis akan ditambahkan 0h pada belakannya, kmudian ditambahkan offset
address. Alamat ini menunjuk data pada RAM.
Sistem pengalamatan memory didapat dari gambar diatas. Pada 80286 alamat
offset menjadi lebih panjang dengan tambahan 64K minus 16K. Biasanya
digunakan sebagai pengalamatan memory tambahan.
SEGMENT DEFAULT dan OFFSET REGISTER
segment dapat dikombinasikan dengan berbagai register lain untuk
melakukan suatu fungsi. Misal code segment + instruction pointer
digunakan untuk merujuk pada instruksi yang selanjutnyadikerjakan.
beberapa kombinasi dari segment:
Contoh kombinasi CS:IP, misal CS dimulai dengan alamat 4000H, dengan IP:
0001H. Maka kombinasinya adalah 40001H. kombinasi lain, adlah SS dan
SP/BP. Alamat yang ditentukan dari kombinasi ini akan merujuk pada
bagian memory yang digunakan sebagai stack.
8086-80286 memiliki 4 segment. sementara pada 80386 memiliki 6 segment. sebuah program dapat memiliki 4 segment atau lebih.
Sementara itu, stack segment disimpan dalam dalam TPA,tepatnya diatas semua driver dan program.
Insterupsi Dos & Bios pada Mikroprosesor 8088
1. Sistem DOS
DOS (Disk Operating System) adalah sistem
operasi dasar untuk komputer pribadi berbasiskan prosesor Intel. DOS
dirancang berkisar pada mikroprosesor 8088. Beberapa fungsi dasar yang
disediakan adalah fungsi-fungsi file (hard disk, disket),
perangkat/devices (printer, keyboard), dan pengaturan memori.
Kebanyakan keterbatasan sistem DOS berasal dari prosesor awal yang
digunakannya. Meskipun DOS dijalankan pada prosesor 80286 atau 80386,
DOS tetap dijalankan pada mode 8088.
1.1 Pengaturan Memori
Sebagaimana pengalamatan memori pada 8088, DOS hanya mampu menjangkau 1
MB memori (pengalamatan 20 bit) di mana 360 KB dicadangkan untuk rutin
perangkat keras dan BIOS. Secara efektif DOS hanya mampu menggunakan 640
KB memori untuk penggunaan aplikasi.
Pengalamatan pada 8088 menggunakan bentuk Segment:Offset (16:16), dengan
alamat fisik yang dituju = Segment*10h + offset. Dengan bentuk
pengalamatan ini maka terjadi overlapping alamat, yaitu suatu lokasi
memori dapat ditempuh dengan banyak cara. Misal alamat fisik 01000h bisa
dianggap beralamat 1000h:0, 0FFFh:10h, atau 0FFEh:20h.
Pengaturan memori pada DOS bersifat
statik dan fisik. 8088 adalah prosesor sederhana dan tidak menyediakan
unit pengatur memori. Semua akses memori oleh program berupa
pengalamatan langsung. Alokasi memori juga bersifat tetap, sehingga
suatu program akan menempati alamat memori secara fisik hingga program
tersebut berakhir.
Pada 8088 tidak dikenal pembatasan memori, seluruh daerah alokasi memori
diwujudkan dalam bentuk satu daerah sebesar 1 Mb. Tidak ada pemisahan
nyata antara berbagai komponen sistem, seperti BIOS, sistem operasi
maupun aplikasi. Kesalahan akses memori tidak dapat dideteksi, dan
kesalahan ini hanya bisa diatasi dengan memuat ulang sistem.
Gambar 1. Struktur Sistem DOS
1.2. Pengaturan I/O dan Perangkat
Dalam mengelola input/output (I/O) sistem, DOS bertindak lebih sebagai
konsultan dibanding pengontrol. Hal ini bukan seluruhnya kesalahan DOS.
Pada mode 8088 sistem memberikan hak akses penuh I/O kepada seluruh
program. Setiap aplikasi dapat secara langsung mengubah status dari
perangkat keras tanpa harus melalui kendali sistem. Suatu program juga
dapat mematikan sistem interrupt secara sepihak. Ketika interrupt sistem
mati maka event-event eksternal (seperti pewaktu dan komunikasi data)
akan hilang.
Ketiadaan kontrol terhadap I/O ini dapat
memberikan dua pandangan yang berbeda. Keterbukaan dan fleksibilitas
sistem dapat memberikan banyak kemungkinan kerja bagi suatu program.
Tanpa adanya pembatasan maka suatu program dapat memaksimalkan
penggunaan perangkat-perangkat yang ada pada komputer, yakni dengan
melakukan akses langsung. Namun kebebasan ini juga memberikan pengaruh
buruk untuk sistem dengan multi program, karena tiap-tiap program dapat
menggunakan sumber daya sistem tanpa adanya koordinasi.
Dalam kerjanya DOS mendukung dua jenis
perangkat, block devices, seperti hard disk dan disket, dan character
devices, seperti keyboard, printer dan perangkat serial. DOS memelihara
struktur data bernama device chain yang memetakan nama logika perangkat
menurut driver perangkat yang bersangkutan. Perangkat blok ditentukan
menurut huruf alfabet diikuti oleh titik dua, A:, B:, hingga Z:.
Perangkat karakter ditentukan oleh nama (hingga 8 huruf) seperti PRN,
LPT: dan COM1.
Device DOS dapat diperluas dengan menambah device driver suatu perangkat
kepada sistem. Device driver ini akan diinstalasi oleh DOS ketika
sistem dimulai. Device driver mengelola perangkat yang bersangkutan
dengan menggunakan rutin ROM BIOS atau mengakses langsung perangkat
keras. Rutin ROM BIOS diakses menggunakan mekanisme interupsi software.
1.3. Pemrograman DOS
Pemrograman pada DOS didasarkan pada interupsi software. Interupsi
software adalah transfer kontrol antara dua program yang dibimbing oleh
CPU. Sekumpulan fungsi (API, Application Programming Interface) dibuat
untuk mengakses DOS. API DOS berisi fungsi-fungsi untuk pengaturan
memori, file, operasi input/output, dan akses untuk tiap-tiap device.
Yang tak kurang pentingnya fasilitas untuk memuat dan mengakhiri program.
Tidak semua fungsi-fungsi disediakan DOS sehingga program DOS biasanya
menggunakan kombinasi dari rutin ROM BIOS dan akses langsung perangkat
keras.
Daftar interrupt BIOS dan DOS dari 10h hingga 2Fh:
10 BIOS video
11 BIOS equipment determination
12 BIOS memory size
13 BIOS disk I/O service
14 BIOS serial communications
15 BIOS system services, cassette
16 BIOS keyboard services
17 BIOS parallel printer
18 BIOS ROM BASIC loader
19 BIOS bootstrap loader
1A BIOS time of day
1B BIOS user defined ctrl-break handler
1C BIOS user defined clock tick handler
1D BIOS 6845 video parameter pointer
1E BIOS diskette parameter pointer
1F BIOS graphics character table
20 DOS general program termination
21 DOS function request services
22 DOS terminate address
23 DOS control break termination address
24 DOS critical error handler
25 DOS absolute disk read
26 DOS absolute disk write
27 DOS terminate and stay resident
28 DOS idle loop, issued by DOS when idle
29 DOS fast TTY console I/O
2A DOS critical section and NETBIOS
2B DOS internal, simple IRET in DOS 2.0-7.0
2C DOS internal, simple IRET in DOS 2.0-7.0
2D DOS internal, simple IRET in DOS 2.0-7.0
2E DOS exec command from base level command interpreter
2F DOS multiplexer
Aturan pemanggilan (calling convention) untuk fungsi-fungsi DOS
membutuhkan masukan parameter melalui register-register, termasuk
parameter khusus berupa nomor fungsi
yang menentukan fungsi yang diinginkan.
Program lalu melakukan interupsi software yang menyebabkan eksekusi
program beralih ke kernel DOS. Kernel DOS menyalurkan panggilan tersebut
dengan melihat nomor fungsi pada parameter dan memanggil rutin fungsi
yang bersangkutan. Setelah fungsi selesai kontrol dikembalikan pada
program pemanggil dengan parameter hasil pada register.
Gambar 2. Pemanggilan fungsi pada DOS
Gambar 3. Contoh umum program DOS
Karena antar muka DOS dan BIOS bekerja
dengan mekanisme interrupt, maka untuk perluasan sistem suatu program
dapat menggantikan interrupt DOS atau BIOS dengan rutinnya sendiri.
Untuk hal ini biasa dikenal istilah program TSR (Terminate and Stay
Resident) yang merupakan suatu program menetap di memori yang fungsinya
terutama untuk mencegat/memodifikasi pemanggilan sistem DOS/BIOS untuk
pemrosesan lebih lanjut.
1.4. Program-program DOS
Sebuah program DOS adalah kumpulan dari segment kode dan data yang
diletakkan dalam sebuah file eksekusi (EXE) pada media penyimpan
sekunder2. Ketika program dijalankan, kode-kode dan obyek data dimuat
dalam memori oleh bagian pemuat (loader) dari sistem operasi, dan alamat
dari rutin awal program diset dan dijalankan. Kebanyakan program
termasuk dengan stack, yaitu sebuah last-in-first-out (LIFO) obyek data
yang digunakan untuk memori penyimpan sementara. Karena arsitektur dari
prosesor 8088, obyek memori DOS adalah segment.
Dalam fisiknya, program-program DOS terdiri dari 2 jenis, yakni
berformat COM atau EXE. Program COM hanya berupa image kode-kode mesin
dengan besar maksimal 1 segment (64K), sedangkan program EXE berupa
image kode-kode mesin dengan besar dapat melebihi 1 segment. Karena
melebihi 1 segment, maka program EXE mempunyai header yang mengatur
tabel relokasi alamat, besar memori yang dibutuhkan, besar stack, dan
inisial pointer stack & instruksi.
Bersambung...