KONSEP
MIKROPROGRAMMING
1. Struktur Register Mikroprosessor
Model programming 8086 sampai
Pentium Pro menggunakan program visible karena registerregisternya digunakan
langsung dalam programming dan dispesifikasikan dalam instruksi. Register
lainnya dipertimbangkan menggunakan program invisible karena tidak dialamati
secara langsung dalam program aplikasi tapi tetap dapat digunakan secara tidak
langsung pada programming system.
1.1.Code Segment (CS)
Berfungsi untuk menunjukkan alamat instruksi berikutnya.
Berfungsi untuk menunjukkan alamat instruksi berikutnya.
1.2.Data Segment (DS)
Berfungsi untuk menunjukkan alamat data operasi pemindahan data.
Berfungsi untuk menunjukkan alamat data operasi pemindahan data.
1.3.Stack Segment (SS)
a. Menunjukan alamat stack memori pada operasi push dan pop
b. Menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur dan mengarahkan kembali eksekusi ke program utama.
a. Menunjukan alamat stack memori pada operasi push dan pop
b. Menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur dan mengarahkan kembali eksekusi ke program utama.
1.4.Extra Segment (ES)
Merupakan register segment tambahan yang digunakan pada operasi-operasi string.
Merupakan register segment tambahan yang digunakan pada operasi-operasi string.
1.5.Flag Register
Flag Register berfungsi untuk menunjukkan status sesaat dari mikroprosesor. Bit-bit pada flag register akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Bit-bit tersebut adalah sebagai berikut:
Flag Register berfungsi untuk menunjukkan status sesaat dari mikroprosesor. Bit-bit pada flag register akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Bit-bit tersebut adalah sebagai berikut:
- C (carry): mengindikasikan ada/tidaknya bawaan (carry) setelah operasi pengurangan. C = 1 berarti ada bawaan, C = 0 berarti tidak ada bawaan. Bit C berfungsi mengidentifikasi kesalahan (error) pada beberapa program dan prosedur (procedure).
- P (parity): mengindikasikan jumlah bit dalam suatu data. P = 0 berarti paritasnya ganjil, P = 1 berarti paritasnya genap. Paritas dapat digunakan untuk pengecekan kesalahan pengiriman data.
- A (auxiliary carry): mengindikasikan ada/tidaknya bawaan (carry) pada bit ke-3 dan ke-4 setelah operasi pengurangan. A=1 berarti ada bawaan, A=0 berarti tidak ada bawaan. Bit A ini relatif jarang digunakan dalam pemrograman.
2.
Mode Pengalamatan
2.1.Mode pengalamatan
Merupakan metode penentuan alamat operand pada
instruksi. Operand instruksi diletakan pada memori utama dan register
CPU. Tujuan yang mempengaruhi arsitektur komputer ketika memilih mode
pengalamatan:
- Mengurangi panjang instruksi dengan mempunyai medan yang pendek untuk alamat.
- Menyediakan bantuan yang tangguh kepada pemrogram untuk penanganan data kompleks seperti pengindeksan sebuah array, control loop, relokasi program dan sebagainya.
2.1.1. Register addressing (Pengalamatan Register)
Penjelasan :
·
Metode pengalamatan register mirip
dengan mode pengalamatan langsung
· Perbedaanya terletak pada field
alamat yang mengacu pada register, bukan pada memori utama
· Field yang mereferensi register
memiliki panjang 3 atau 4 bit, sehingga dapat mereferensi 8 atau 16 register
general purpose
Keuntungan :
· Diperlukan field alamat berukuran
kecil dalam instruksi dan tidak diperlukan referensi memori
· Akses ke register lebih cepat
daripada akses ke memori, sehingga proses eksekusi akan lebih cepat
Kerugian :
·
Ruang alamat menjadi terbatas
2.1.2. Immediate Addressing (Pengalamatan
Segera)
Adalah bentuk pengalamatan yang
paling sederhana.
Penjelasan :
·
Operand benar-benar ada dalam
instruksi atau bagian dari intsruksi
·
Operand sama dengan field alamat
·
Umumnya bilangan akan disimpan dalam
bentuk complement dua
·
Bit paling kiri sebagai bit tanda
·
Ketika operand dimuatkan ke dalam
register data, bit tanda digeser ke kiri hingga maksimum word data
Keuntungan :
· Tidak adanya referensi memori selain
dari instruksi yang diperlukan untuk memperoleh operand
·
Menghemat siklus instruksi sehingga
proses keseluruhanakan akan cepat
Kekurangan :
·
Ukuran bilangan dibatasi oleh ukuran
field
Contoh :
ADD 7
; tambahkan 7 pada akumulator
2.1.3. Register indirect addressing
(Pengalamatan tak-langsung register)
Penjelasan :
· Metode pengalamatan register tidak
langsung mirip dengan mode pengalamatan tidak langsung
· Perbedaannya adalah field alamat
mengacu pada alamat register
· Letak operand berada pada memori
yang dituju oleh isi register
· Keuntungan dan keterbatasan
pengalamatan register tidak langsung pada dasarnya sam dengan pengalamatan
tidak langsung
· Keterbatasan field alamat diatasi
dengan pengaksesan memori yang tidak langsung sehingga alamat yang dapat
direferensi makin banyak
· Dalam satu siklus pengambilan dan
penyimpanan, mode pengalamatan register tidak langsung hanya menggunakan satu
referensi memori utama sehingga lebih cepat daripada mode pengalamatan tidak
langsung
Contoh :
2.1.4. Base Plus Indeks Addressing
Yaitu mode pengalamatan yang
digunakan untuk transfer byte/word antar register dan memori yang alamatnya
ditunjukkan oleh jumlah register base dan index.
Bentuk1 : MOV [BX + SI],AX
Bentuk2 : MOV AX, [BX + SI]
2.1.5. Relatif Register Addressing
Yaitu mode pengalamatan untuk
transfer byte/word antar register dan memori yang alamatnya ditunjukkan oleh
isi suatu register jaraknya (displacement).
Bentuk : MOV [BX+4],AX
2.1.6.
Relatif Plus Indeks Addressing
Merupakan mode pengalamatan
yang digunakan untuk mentransfer byte/word antar register dan memori yang
alamatnya ditunjukkan oleh suatu register base dan register index ditambah
displacementnya.
Bentuk : MOV AX,[BX + DI + 4]
2.2.
Mode Memori –Addressing
2.2.1.
Addressing Langsung
Teknik pengalamatan langsung dilakukan dengan memberikan nilai ke suatu register secara langsung. Untuk melaksankan teknik pengalamatan langsung digunakan tanda #. Sebagai contoh instruksi :
MOV A,#01H ;Mengisi akumulator dengan 01H
Pengalamatan data langsung dari 0 sampai 127 akan mengakses RAM internal, sedangkan pengalamatan data dari 128 sampai 255 akan mengakses register perangkat keras. Sebagai contoh instruksi
Mov A,#010H ;isi akumulatur dengan 10H
MOV P3,A ;memindahkan isi akumulator ke Port 3
Teknik pengalamatan langsung dilakukan dengan memberikan nilai ke suatu register secara langsung. Untuk melaksankan teknik pengalamatan langsung digunakan tanda #. Sebagai contoh instruksi :
MOV A,#01H ;Mengisi akumulator dengan 01H
Pengalamatan data langsung dari 0 sampai 127 akan mengakses RAM internal, sedangkan pengalamatan data dari 128 sampai 255 akan mengakses register perangkat keras. Sebagai contoh instruksi
Mov A,#010H ;isi akumulatur dengan 10H
MOV P3,A ;memindahkan isi akumulator ke Port 3
2.2.2. Addresing Tidak Langsung
Teknik pengalamatan tidak
langsung menunjuk ke sebuah register yang berisi lokasi alamat memori yang akan digunakan dalam operasi.
Lokasi yang sebenarnya tergantung pada isi register saat instruksi dijalankan.
Untuk melaksanakan pengalamatan tidak langsung digunakan simbol @. Sebagai
contoh instruksi:
MOV R0,#030H ;isi register R0 dengan 30H
Mov @R0,#0FFh ;isi alamat yang ditunjuk R0 dengan FFH
MOV R0,#030H ;isi register R0 dengan 30H
Mov @R0,#0FFh ;isi alamat yang ditunjuk R0 dengan FFH
2.2.3. Relative
addressing
Adalah pengalamatan secara
relatife terhadap alamat yang ada di program counter.
Contoh : SJMP DEKAT
3. Intruksi Pemindahan Data
3.1.
MOV
MOV (MOVE)
Perintah untuk mengisi, meindahkan,
memperbaharui isi suatu register, variabel
ataupun suatu lokasi memory
MOV [operand1], [operand2]
Contoh
: MOV AX,TABLE
MOV ES:[BX],AX
MOV DS,AX
MOV BL,AL
MOV CL,-30
MOV DEST,25h
3.2.
PUSH
Intruksi PUSH selalu mentransfer 2 byte data
ke dalam stack.Sumber datanya bias
register flag,setiap register internal 16-bit,semua register segmen,atau
semua 2 bytes memori data.
3.3. POP
Instruksi POP melakukan operasi inversi dari instruktur PUSH.POP
memindahkan data dari stack dan menempatkannya ke dalam register sadaran,flag atau
lokasi memori kita.
3.4. XCGH
Untuk mempertukarkan isi source
operand dengan destination operand dalam ukuran byte atau word Dapat mempertukarkan isi 2 memori
dan isi suatu register dan lokasi memori
Isi segmen register tdk dapat
dipertukarkan (dengan instruksi XCHG)
XCHG AX,BX ;pertukaran 2 word
register
XCHG AL,BH ;pertukaran 2 byte
register
XCHG WORD_LOC,DX ;pertukaran dengan
lokasi memory
XCHG DL,BYTE_LOC ;pertukaran dengan
register
3.5. XLAT
Untuk
membaca/memeriksa nilai-nilai (byte) yang terdapat dalam suatu TABEL dan
kemudian megkopi (load) ke dalam register AL (ukuran max TABEL=256 byte)
XLAT source_table.Sebelum eksekusi
XLAT starting address daripada tabelnya
harus
Di simpan (load) ke BX dan index
dari byte yg dimaksud ke dalam AL XLAT cocok untuk konversi yang membutuhkan waktu
perhitungan yang lama misal konversi ASCII display code dari hexadesimal digit.
Contoh : Urutan instruksi utk
memeriksa byte ke-10 dari tabel S_TAB :
MOV AL,10 ;load harga index AL
MOV BX,OFFSETS_TAB ;load starting
add S_TAB ke BX
XLAT S_TAB ;ambil harga dalam tabel
ke AL
3.6. IN
Mentransfer data dari suatu
perangakat I/O ke dalam register AL atau AX
IN AL,pp : 8-bit data from port pp are input to AL
IN
AX,pp : 16-bit data from port pp
are input to AX
IN
AL,DX : 8-bit data from port DX are
input to AL
IN
AX,DX : 16-bit data from port DX are
input to AX
3.7. OUT
Mentransfer
data dari AL atau AX ke perangkat I/O.
OUT
pp,AL : 8-bit data from AL are sent to
port pp.
OUT
pp,AX : 16-bit data from AX are sent to port pp.
OUT
DX,AL : 8-bit data from AL are sent to port
DX
OUT
DX,AX : 16-bit data from AX are sent to
port DX
3.8. LEA(Load Effective Address)
Misal
DI=5
LEA BX,TABLE[DI]
;load offset address dari TABLE+5 ke BX
3.9. LDS(Load Pointer using DS)
Membaca 32 bit
dari memori kemudian load 16 bit pertama ke register tertentu dan 16 bit ke dua ke DSLDS register16,memory32.
3.10. LES(Load Pointer using ES)
Mengisi ES dan operand dengan alamat
32-bit
3.11. LAHF
Mentransfer delapan bit paling
kanan register flag ke dalam register AH
3.12. SHAF
Mentransfer register AH ke dalam delapan bit
paling kanan register flag
3.13. LODS
Intruksi LODS memasukkan AL dengan
byte data dari lokasi memori yang ditangani oleh SI atau AX dengan kata data
yang ditangani oleh SI.
LODSB AL=[SI],byte transfer
LODSW AX=[SI],word transfer
LODS
BYTE AL=[SI],if BYTE is defined
as a byte
LODS
WORD AZ=[SI],if WORD is defined as
aword
3.14. STOS
Instruksi
STOS menyimpan AL atau AX pada lokasi memori yang ditangani oleh DI pada segmen
tambahan
3.15. MOVS
Sumber: