Anda di halaman 1dari 20

Interrupt , Register Dan

Penulisan Assembler

AJI NURROHMAN MMSI


Untuk mempelajarai bahasa rakitan / assembler diperlukan :

• Sistem bilangan antara lain Biner, Oktal, Desimal dan


Hexadesimal
• Pengenalan Microprocessor
• Sistem Memori dan Pengalamatan Memori
• Interupt / Interupsi
• Register
• Instruksi Assembly atau Mnemonic
• Mode pengalamatan data
• Operasi-operasi pada assembler
• Pembuatan program
Bilangan Biner
Bilangan ini hanya mengenal angka 0 dan 1 sehingga bilangan ini berdasar 2.
Cara mengkonversi ke bilangan desimal adalah dengan mengalikan dua
dengan pangkat N (suku ke-N) seperti bilangan desimal mengalikan 10 dengan
pangkat N.

Example :
• 1110 (biner) dikonversi ke desimal menjadi :
(1 * 23) + (1 * 22) + (1 * 21) + (0 * 20) =
8 + 4 + 2 + 0 = 14 (desimal)
Bilangan Oktal
• Bilangan Oktal merupkan bilangan berdasar 8. Jadi bilangan ini hanya terdiri dari
angka 0 hingga 7. Konversi bilangan octal ke desimal mempunyai cara yang sama
dengan bilangan biner, hanya memakai bilangan dasar 8.

355 bilangan octal ke desimal


355 oktal = (3 * 82) + (5 * 81) + (5 * 80)
= 192 + 40 + 5
= 237 desimal
Bilangan Desimal
• Bilangan ini sudah tidak asing lagi, karena
digunakan dalam kehidupan sehari-hari
Sistem bilangan ini terdiri dari angka 0 sampai
9 dengan menggunakan dasar 10.
Example :
0 1 2 3 4 5 6 7 8 9
Bilangan Hexadesimal
• Bilangan ini mutlak harus dikuasai, karena dalam bahasa rakitan kita
sering menemukan bilangan ini. Kode ASCII ditulis dalam bilangan
hexadesimal yang mewakili huruf, angka, tanda baca dan karakter unik
lainnya sebanyak 255 buah. Bilangan hexadesimal merupakan bilangan
dasar 16 terdiri dari : 0123456789ABCDEF
Cara mengkonversi ke bilangan desimal sama dengan biner dan octal.
Example :
• 3A hexa = (3 * 161) + (10 * 160)
= 48 + 10
= 58 desimal
Interrupt
Interrupt adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler
berhenti sejenak untuk interrupt tersebut. Program yang dijalankan pada saat
interrupt disebut Interrupt Service Routine.

Analoginya adalah sebagai berikut, seseorang sedang mengetik laporan, mendadak


telephone berdering dan menginterrupsi orang tersebut sehingga menghentikan
pekerjaan mengetik dan mengangkat telephone. Setelah pembicaraan telephone yang
dalam hal ini adalah merupakan analogi dari Interrupt Service Routine selesai maka
orang tersebut kembali meneruskan pekerjaanya mengetik.
Sketsa Interrupt
Interrupt
Proses yang dilakukan oleh mikrokontroler saat melayani interrupt adalah sebagai berikut:
- Instruksi terakhir yang sedang dijalankan diselesaikan terlebih dahulu
- Program Counter (alamat dari instruksi yang sedang berjalan) disimpan ke stack
- Interrupt Status disimpan secara internal
- Interrupt dilayani sesuai peringkat dari interrupt (lihat Interrupt Priority)
- Program Counter terisi dengan alamat dari vector interrupt (lihat Interrupt Vector) sehingga
mikrocontroler langsung menjalankan program yang terletak pada vector interrupt

Program pada vector interrupt biasanya diakhiri dengan instruksi RETI di mana pada saat ini
proses yang terjadi pada mikrokontroler adalah sebagai berikut:
- Program Counter diisi dengan alamat yang tersimpan dalam stack pada saat
interrupt terjadi sehingga mikrokontroler kembali meneruskan program di lokasi saat
interrupt terjadi
- Interrupt Status dikembalikan ke kondisi terakhir sebelum terjadi interrupt
Register
Register yang terdapat pada mikroprosessor
Intel terdiri dari :
1. General purpose register (register serbaguna)
2. Pointer register (register pointer)
3. Index register (register indeks)
4. Segment register (register segment)
5. Flag register (register status).
General Purpose Register
General Purpose Register
Register BX (Base Register)
Base register adalah register untuk menyimpan alamat offset data yang terletak di
memori (BL, BH, BX dan EBX).

Register CX (Counter Register)


Counter register adalah register serbaguna yang berfungsi sebagai :

Pencacah untuk operasi loop (CX dan ECX)


Pencacah untuk operasi shift dan rotate (CL)
Pencacah (counter) untuk operasi string (CX)

Register DX (Data register)


Data register adalah register serbaguna yang berfungsi sebagai :
Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX).
Penyimpan hasil pembagian (DX-AX dan EDX-EAX)
Penyimpan data hexadesimal (kode ASCII) di reg DL untuk dicetak
di layar monitor.
Pointer Register

Register ini untuk menunjukkan alamat sebuah data di lokasi


memori, dipakai saat operasi perpindahan data operasi stack
(PUSH/POP) dan penunjukkan alamat suatu instruksi. Berikut
adalah macam-macam pointer register :

SP (Stack Pointer)
BP (Base Pointer)
IP (Instruction Pointer).
Index Register

Sama dengan pointer register, sering digunakan


untuk menunjukkan alamat sebuah data di
lokasi memori pada operasi string.
Macam-macam register Index adalah :
SI (Source Index)
DI (Destination Index).
Segment Register

• Code segment -> untuk menunjukkan alamt instruksi


berikutnya.
• Data segment -> untuk menunjukkan alamat data pada
transfer register
• Extra segment -> register tambahan untuk operasi
string
• Stack segment -> dengan SP ( Stack Poninter) untuk
menunjukkan stack dan memanggil suatu prosedur
(CALL) dan mengarah ke program utama (RET).
• FS dan GS register -> register tambahan u/ segmen
memori yang besar.

Flag Register

Berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosessor.


Bit-bit pada flag akan mengalami perubahan, tergantung proses yang
baru saja berlangsung. Adapun kode bit yaitu sebagai berikut :
• C (carry) -> 1=ada carry out 0= tdk ada carry out
• P (Parity) -> 1=paritas genap 0= paritas ganjil
• A (auxxiliary carry) -> 1=ada carry 0=tdk ada carry
• Z (zero) -> 1=hasilnya nol 0=hasilnya bukan nol
• S (sign) -> 1=hasilnya negatif 0=hasilnya positif
• T (trap) -> bila diset 1 dimungkinkan melakukan debugging.
• I (interrupt) -> 1= pin INTR enable 0=pin INTR disable
• D (direction) -> 1=cacahan turun 0=cacahan naik
• (Overflow) -> menunjukkan adanya kelebihan kapasitas atau tidak
• IOPL (input-output privalege level) -> untuk protected mode
• NT (nested task) -> indikasi dari penggabungan dengan operasi lain.
• RF (resume) -> untuk debugging
• VF (Virtual mode) -> untuk operasi virtual pada protected mode
• AC (alignment check) -> untuk data word dialamati ke memori
Penulisan Program
Bentuk Umum
.model small
.code
org 100h ;program dimulai pada alamat 100h
 
MULAI:
• --------- ;(label mulai)
• --------- ; isi program
• ---------
INT 20h ; berhenti dan kembali ke DOS
END MULAI ;akhir program
Perintah MOV
Bentuk Umum
Mov lokasi tujuan, lokasi asal
Contoh:

• MOV CX, 05 ; angka 5 disimpan di register CX


• MOV AX, 005AH ; angka 005AH disimpan di AX
• MOV BX, AX ; isi AX disimpan ke BX
• MOV [200], BX ; isi BX disimpan di lokasi memori 200
• MOV [BX], [200] ; isi data di lokasi memori 200 disim pan di alamat BX.
Program Cetak
Cara 1 Cara 2

Output KEDUA Program Diatas adalah mencetak kalimat “ AJI “


Sekarang buatlah program untuk mencetak :
Nama : … NPM :… Kampus : …

Note: Gunakan variabel.


END

Anda mungkin juga menyukai