Untuk menghubungkan I/O pada suatu Personal Computer (PC)
diperlukan interface (antarmuka). Interface pada PC ada yang
sudah tersedia, seperti Port paralel,
Port Serial, dan USB dan ada yang
berupa card yang dihubungkan lewat
Slot ISA maupun PCI. Dimana pada port tersebut berfungsi untuk dihubungkan dengan program.
1. Perangkat Lunak
Bahasa
program yang dipakai pada interface,
umumnya bisa semua bahasa pemograman, seperti: bahasa Assembler, Basic/VB, Pascal/Delphi, C++/VC, dan Matlab. Tetapi
bahasa Assembler dipakai pada interface dan sistem
minimum serta mikrokontroller, karena dalam bentuk COM akan membuat program di memory yang jauh
lebih kecil dari bahasa program tingkat tinggi.
Contoh
instruksi I/O (input-output) dengan
menggunakan bahasa pemrograman:
a.
Assembler
- Output: mov dx,300h
Mov
al ,45h
Out dx,al
- Input: mov dx,301h
In
al,dx (membaca data yg berada di almat 301h = port b)
b.
Pascal atau Delphi
- Output: Port[$301]:=$50; {kirim data 50h ke port B}
- Input: C:=Port[$302]; {baca data dari port C}
c.
C++ atau VC
- Output: outportb (0x0300, 25);
- Input: A:=inportb (0x0302);
d.
Basic atau VB
- Output: out 0x0378,D
- Input: B=inp (0x0379)
2. Bahasa Tingkat Rendah (Assembler)
Salah satu
produk bahasa assembler adalah software TASMB, emu8086. Program ini telah memiliki editor sendiri sehingga memudahkan dalam membuat
program. Dalam bahasa tingkat rendah tidak dibutuhkan struktur program karena semuanya diserahkan kepada pemakai.
Emulator emu86
Untuk membantu dalam memahami atau penyesuaikan alur kerja program yang diinginkan maka dapat dilakukan dengan bantuan emulator emu86. Pada emulator ini ada menu emulate untuk menjalankan program dengan dua pilihan yaitu single step untuk eksekusi per baris instruksi atau Run untuk eksekusi keseluruhan instruksi sampai akhir program. Tampilan Menu Utama Emu86, seperti gambar
Gambar 1: Menu Utama emu86
Register
Register adalah
sebagian kecil memori komputer
yang dipakai untuk tempat penampungan data. Sebagian besar register yang terdapat pada mikroprosesor 8088 adalah
16 bit.
Ada 5
kelompok Register, yaitu :
1.
General Purpose Register
General purpose register dapat dibagi menjadi register low dan high bits
yang masing-masing berkemampuan 8 bit.
Seperti register AX, register low-nya adalah
AL dan register high-nya
adalah AH.
Ada empat macam General
purpose register yaitu:
a.
Register AX (AH + AL) atau Accumulator
Register adalah register aritmatik untuk dipakai dalam operasi pertambahan, pengurangan, perkalian
dan pembagian. Register AH dapat
juga digunakan untuk tempat nilai service number untuk beberapa
interrupt
tertentu.
b.
Register BX (BH + BL) atau Base register adalah salah satu dari dua register base Addressing mode, yang
dapat mengambil atau menulis langsung dari/ke memory.
c.
Register CX (CH + CL) atau Counter Register adalah suatu
counter untuk meletakkan jumlah lompatan pada loop yang dilakukan.
d.
Register DX (DH + DL) atau Data Register mempunyai tiga tugas, yaitu:
1. Membantu AX
dalam
proses perkalian dan pembagian, terutama perkalian dan
pembagian 16 bit.
2. DX merupakan register offset dari DS
3. DX bertugas menunjukkan nomor port pada operasi port
2. Segment Register
a.
CS (Code Segment) Register adalah
berfungsi menunjukkan segment program
berada dengan pasangan register ini adalah register
IP.
b.
DS (Data Segment) Register adalah
berfungsi menunjukkan segment dari segment data. Pasangan dari DS adalah DX.
c. SS (Stack Segment) Register adalah
berfungsi menunjukkan segment dari segment stack. Pasangan dari SS adalah SP
d. ES (Extra Segment) Register adalah
berfungsi untuk pemograman pada saat melakukan operasi
ke segment lain.
3. Pointer Register berfungsi menyimpan offset dari relative address.
a.
IP (Instruction Pointer)
Register
adalah berfungsi untuk menunjukkan baris perintah program. Pada saat pertama program
dijalankan register ini akan langsung menunjuk pada awal
program.
b.
SP (Stack Pointer) Register adalah merupakan pasangan
SS yang digunakan untuk operasi stack. Pada saat pertama program dijalankan register ini
akan menunjuk pada byte terakhir stack.
c. BP (Base Pointer) Register adalah mempunyai fungsi sama dengan register BX, tetapi BX menulis dan membaca dengan segment DS (Data Segment) sedang BP menulis dan membaca dengan segment SS (Stack Segment).
4. Index Register yaitu SI (Source Index) dan DI (Destination Index) adalah berfungsi melakukan operasi STRING.
Namun demikian, kedua register ini sering
digunakan untuk menulis dan membaca ke atau dari memori seperti halnya BX dan BP.
1. Flag Register adalah berfungsi mengecek apakah sesuatu
berfungsi atau tidak.
Contohnya:
- Interrupt Flag mengecek apakah pada saat operasi Interrupt sedang aktif atau tidak, bila tidak aktif, Interrupt tidak akan dijalankan.
- Carry Flag mengecek apakah pada saat operasi terjadi kesalahan atau tidak,
- Sign Flag menunjukkan apakah suatu bilangan bertanda atau tidak dan sebagainya.
Gambar 23 di bawah ini adalah bit-bit
register Flag
X
|
X
|
X
|
X
|
O
|
D
|
I
|
T
|
S
|
Z
|
X
|
A
|
X
|
P
|
X
|
C
|
Gambar 2. Flag Register
O = Overflow Flag
D = Direction Flag
I = Interrupt Flag
T = Trap Flag
S = Sign Flag
|
Z = Zero Flag
A = Auxiliary Carry Flag
P = Parity Flag
C = Carry Flag
X = Reserved
(kosong)
|
Pengalamatan
Memori dan Segment Register
Komputer dengan mikroprosesor 8088 memiliki ruang memori
sebesar 1 megabyte, seperti
gambar 24.
Pengalamatan ruang memori tersebut merupakan
pengalamatan mutlak dengan kemampuan
20 bit.
Dengan register uP 8088 berkemampuan 16 bit, berarti
masih kekurangan 4 bit untuk menampung
suatu alamat memori. Maka dilakukan penomoran dengan dua register. Sebuah register berisi 16 bit
dihitung dari kiri disebut register Segment dan sebuah register lain lagi berisi
16 bit
dihitung dari kanan adalah Register Offset. Isi register segment biasa disebut segment dan
isi register
offset disebut offset. Cara pengalamatan memori yang
dilakukan komputer sering disebut
relative address.
Contoh
relative address dan alamat
mutlak dalam
komposisi bit
adalah :
- A131:077A
Komposisi Bit Segment 1010
0001 0011 0001 0000
Komposisi
Bit Offset ___ 0000 0111 0111 1010 +
Alamat Mutlak
1010 0001 1010 1000 1010
(
A1A8A Hexa)
-
5678:A007
Komposisi Bit Segment 0101
0110 0111 1000 0000
Komposisi
Bit Offset ___ 1010 0000
0000 0111 +
Alamat Mutlak 0110
0000 0111
1000 0111
(60787 Hexa)
Gambar 3. Ruang Memori 1 Megabyte
PERINTAH
DASAR ASSEMBLER
1. MOV
Perintah untuk
mengisi, memindahkan, memperbaharui isi
suatu register, variabel ataupun suatu
lokasi memori.
|
a.
Operand1 berupa register,
variabel, lokasi memory dan
b.
Operand2
berupa: register, variabel, lokasi
memory ataupun bilangan.
Contoh :
MOV AH,AL ; mengkopi isi register
AL ke register AH.
MOV AH, 02 ; mengisi register AH dengan
02
2. Int (Interrupt)
Subrotine yang akan dipanggil sudah tersedia pada
memori komputer.
Ada dua jenis yaitu :
a. Bios Interrupt yaitu Int 0H hingga 1FH yang disediakan oleh BIOS
(Basic Input Output
System).
Contoh: Int 16H service 01H berfungsi untuk mencek
apakah ada tombol keyboard yang
ditekan.
b. DOS
Interrupt yaitu Int 1FH keatas
yang disediakan oleh DOS (Disk Operating
System).
Contoh: Int 20H berfungsi menghentikan kerja suatu program.
3. Int
20h dan Int 21h service 02h
a.
Int 20h
Bertugas memberhentikan proses komputer terhadap suatu program COM. Bila pada setiap
program COM yang dibuat tidak terdapat
Int 20h, maka akan terjadi hanging pada komputer. Hal ini terjadi karena komputer tidak
menemukan perintah pemberhentian proses.
b. Int 21h Service 02
Seperti Int 20h, Int 21h adalah salah satu Int yang termasuk DOS Interrupt,
karena Int 21h mempunyai banyak sekali tugas, maka tugasnya dibagi-bagi menjadi
beberapa bagian. Untuk memanggil bagian-bagian itu, perlu menyertakan nomor bagiannya yang disebut juga dengan service
number. Contoh Int 21h yang bertugas mencetak
sebuah huruf ke layar yaitu fungsi kedua dari
Int 21h.
Untuk menjalankan fungsi Int 21h service
02 harus dipenuhi beberapa syarat yaitu :
a)
Register AH,
harus berisi service
number dari
Int 21h yang
akan dijalankan (02h).
b)
Register DL, harus berisi bilangan hexa dari
karakter ASCII (American Standard Code for
Information Interchange) yang akan dicetak.
OPERASI ARITMATIK
1. Operasi Pertambahan
Ada dua macam perintah pertambahan, yaitu :
a. Pertambahan dengan 1
Dengan perintah seperti: A = A + 1, yang bermaksud pertambahan
dengan 1,
contoh dalam program ditunjukkan pada gambar 25.
Tata penulisan:
INC [Register/Variabel]
b. Pertambahan selain Satu
Dengan
'ADD' dapat menambahkan
berapa saja pada suatu register ataupun suatu variabel.
Tata penulisan:
ADD [operand1],[operand2]
dimana isi operand1 adalah
register atau variabel dan operand2 berupa register,
variabel atau bilangan.
Hasil pertambahan disimpan di operand1 , seperti contoh berikut ini.
Contoh:
ADD AH,AL dengan
isi AH adalah 12 dan
AL adalah 3, maka komputer melaksanakan perintah tersebut sebagai berikut :
AH............... 12
AL................ 3_ +
AH............... 15
Untuk perintah ADD kedua operand harus mempunyai besar kemampuan
yang sama seperti AH dan AL yang
sama-sama 8 bit.
Gambar 4. Program
Aplikasi INC untuk Tampilkan Angka 0
s/d 9
Penjelasan per baris program adalah :
a) MOV CX,0Ah ; Pada baris program ini,
mengisikan jumlah loop yang ingin dilakukan dengan perincian 0 - 9 terdiri dari 10 angka. Bila
10 dikonversikan ke bilangan hexa, maka akan didapat angka A hexa.
b) MOV DL,30h ; Bilangan ASCII yang
sama dengan 30 hexa adalah '0' yang akan dicetak dahulu dan
dimasukkan dalam DL sesuai dengan Int 21 hexa
service 02 hexa.
c)
MOV
AH, 02h ; AH diisi
dengan service
number dari Interrupt.
d)
INT 21h ; Menjalankan Interrupt 21 hexa.
e)
INC DL ; Menambahkan DL dengan 1 menjadi 31 hexa yang berarti '1'.
f) LOOP ulangi ; Lompat ke arah MOV AH,02h dan dilakukan sebanyak 10 kali, setiap
kali isi CX dikurangi satu hingga
akhirnya mencapai nol (0).
g) INT 20h ; Perintah INT 20h untuk mengakhiri program
Gambar 5: Hasil Program
sederhananya untuk menggunakan emu 86:
- ketikkan program didalam editor emu 86,
- lalu, compile program untuk mengecek jika ada kesalahan pada program
- lalu, emulate program, maka program hasilnya akan ditampilkan dalam bentuk cmd.
Untuk memudahkan teman-teman dalam mencoba emu86 ini bisa mendownload beberapa program di link ini: download
Sumber:
Sumber:
Mikroprosessor
8088
oleh Rachmad Setiawan
dan The Intel Microprosessor 6th. Barry B Brey 2015
No comments:
Post a Comment