Gambar 38. Program Int 21h Service 01h
Tujuan diadakannya pemaparan bahan presentasi melalui blog yakni sebagai
berikut:
- Menyelesaikan tugas mata kuliah Mikroprosesor dan Mikrokontroler
yang diberikan oleh Bapak Dr. Darwison, S. T., M. T. selaku dosen
pengampu
- Mendesain dan mensimulasikan rangkaian dengan perangkat lunak Emu8086 dan
Proteus
- Mempelajari dan memahami definisi dan spesifikasi teknik interface (perangkat lunak)
Untuk mendesain rangkaian ini, maka dibutuhkan perangkat lunak
simulasi dan beberapa komponen penyusun, di antaranya:
- emu8086
Register adalah sebagain kecil emmori CPU yang dipakai untuk tempat
penampungan data. Data yang disimpan dalam register akan diproses dalam
berbagai operasi. Besarnya data disesuaikan dengan daya tampung
register. Secara umum register dapat dibagi dalam lima golongan
yaitu:
1. General Purpose Register
Register yang digunakan untuk keperluan umum pemrograman, keperluan
umum yang dimaksud yaitu melakukan perhitungan aritmatika dan
perpindahan data. Register ini terdiri atas:
a. Register AX (Accumulator Register), di mana merupakan register 16
bit yang selalu dipakai dalam operasi penjumlahan, pengurangan,
perkalian dan pembagian. Register AX terdiri dari buah register 8 bit
yaitu AH dan AL.
b. Register BX (Base Address Register), di mana merupakan register 16 bit sebagai register yang selalu
dipakai untuk mengambil atau menulis data langsung dari/ke
memori. Register BX terdiri dari buah register 8 bit yaitu BH dan BL.
c. Register CX (Count Register), di mana merupakan register 16 bit sebagai register yang selalu
dipakai untuk meletakkan jumlah lompatan pada loop-loop yang anda
lakukan. Register CX terdiri dari buah register 8 bit yaitu CH dan CL.
d. Register DX (Data Register), di mana merupakan register 16 bit sebagai register yang selalu
dipakai untuk membantu AX dalam operasi perkalian dan pembagian dan
menunjukkan nomor port pada operasi port. Register DX terdiri dari buah register 8 bit yaitu DH dan
DL. Selain itu DX merupakan register offset dari DS.
2. Segment Register
Segment Register membentuk alamat memori bagi suatu data, terdapat 2
operasi yakni Real Mode dan Protected Real. Register ini terdiri atas:
a. Register CS: Code Segment Register
b. Register DS: Data Segment Register
c. Register SS: Stack Segment Register
d. Register ES: Extra Segment Register
3. Point Register
Point Register adalah register yang digunakan untuk menunjukkan alamt
sebuah data di lokasi memori. Penunjukan pada saat operasi perpindahan
data, operasi stack (PUSH dan POP), akan dieksekusi pada saat program
dijalankan. Register terdiri atas:
a. Instruction Point (IP) Register
b. Stack Point (SP) Register
c. Base Point (BP) Register
4. Index Register digunakan untuk menunjukkan alamat sebuah data di lokasi
memori pada operasi-operasi string. Register ini juga digunakan untuk
menunjukkan data berindek (Data tipe larik) di dalam memori.
Register ini terdiri atas:
a. Source Index (SI) Register
b. Destination Index (DI) Register
5. Flag Register
Flag Register berfungsi untuk menunjukkan status (keadaan) sesaat dari
mikroprosesor. Register ini terdiri atas:
A: Merakit instruksi simbolik (kode mesin)
D: Menampilkan isi suatu daerah memori
E: Memasukan data ke memori yang dimulai pada lokasi tertentu
G: Run executable program ke memori
N: Memberikan nama progran
P: Eksekusi sekumpulan instruksi yang terkait
Q: Keluar
R: Menampilkan isi satu atau lebih register
T: Trace isi sebuah instruksi
U: Unassembled kode mesin ke kode simbolik
W: Menulis program ke disk
1. MOV
Perintah MOV adalah perintah untuk mengisi, memindahkan, memperbarui isi
suatu register, variable ataupun lokasi memori. Adapaun tata penulisan
perintah MOV adalah MOV [operand A], [operand B].
Contohnya: MOV AH, 02, di mana operand A dari perintah di atas adalah
register AH dan operand B dari perintah di atas adalah bilangan 02. Hal
yang dilakukan oleh komputer untuk perintah di atas adalah memasukkan 02
ke register AH.
2. INT
Perintah INT memanggil subroutine (sub program kecil) yang telah
disediakan oleh memori komputer. INT ada dua jenis yaitu:
a. Interrupt 00h-1fh(0-31) merupakan interrupt BIOS dan standar di semua
komputer baik yang menggunakan sistem operasi DOS maupun bukan ynag
menggunakan sistem operasi DOS. Lokasi interrupt vector table-nya ada di
alamat absoluter 0000h-007Fh.
b. Interrupt 20h-FFH(32-255) merupakan interrupt DOS. Interrupt ini
hanya ada pada komputer yang menggunakan sistem operasi DOS dan interrupt
handler-nya dip roses ke memori oleh DOS pada saat DOS digunakan. Lokasi
interrupt vector table-nya ada di alamat absolute 07h-3FFH,
Contohnya: INT 20h dan INT 21h service 02h INT, di mana
- INT 20h
Seperti yang telah diuraikan di atas, Int 20h merupakan salah satu dari
DOS Interrupt. Adapun tugas Int 20h adalah memberhentikan proses
komputer terhadap suatu program COM. Bila pada setiap program COM yang
Anda buat tidak terdapat Int 20h, maka sudah bisa dipastikan bahwa bila
program tersebut diproses, akan terjadi hanging pada komputer. Hal ini
terjadi karena komputer tidak menemukan perintah pemberhentian proses.
- 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,
Anda perlu menyertakan nomor bagiannya yang disebut juga dengan service
number. Pada kesempatan ini akan dibahas salah satu bagian dari 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:
> Register AH, harus berisi service number dari INT 21h yang akan
dijalankan (02h).
> Register DL, harus berisi bilangan hexa dari karakter ASCII (American Standard Code for Information Interchange) yang akan dicetak
Gambar 2. Tampilan Pemrograman yang Telah Diketik
Gambar 3. Tampilan Ketika Pemrograman di-Compile
Gambar 4. Tampilan Ketika Pemrograman di-Emulate
Gambar 5. Tampilan Terminal Ketika di-Run
Gambar 6. Tampilan Akhir Program
Percobaan materi dilaksanakan dengan tahapan berikut:
1. Instal terlebih dahulu software emu8086. Setelah itu, buka software
emu8086. Jika muncul jendela pop-up, klik tombol x,
2. Ketikkan pemrograman di bawah ini,
;Inisialisasi Pertanyaan
START: JMP MULAI
Tanya db 'Jawablah pertanyaan di bawah ini',13,10
db 'Apakah anda seorang mahasiswa?',13,10
db 'Jawaban anda:$'
Jawab1 db 13,10,'Anda adalah seorang mahasiswa.',13,10,'$'
Jawab2 db 13,10,'Anda adalah seorang mahasiswi.',13,10,'$'
;Memulai Program
MULAI: MOV AH, 09H
MOV DX,
INT 21H
;Memberikan Input
ULANG: MOV AH, 01H
INT 21H
CMP AL, 'Y'
JE Mahasiswa
CMP AL, 'y'
JE Mahasiswa
CMP AL, 'T'
JE Mahasiswi
CMP AL, 't'
JNE ULANG
;Mencetak Jawaban
Mahasiswi: MOV AH, 09H
MOV DX,OFFSET Jawab2
INT 21H
JMP SELESAI
Mahasiswa: MOV AH,09H
MOV DX,OFFSET Jawab1
INT 21H
;Mengakhiri Program
SELESAI: MOV AH,4CH
INT 21H
3. Tekan tombol Compile dan simpan kode tersebut dengan format file .asm,
lalu tekan tombol Close,
4. Tekan tombol Emulate, dan
5. Tekan tombol Run, dan terminal akan muncul.
Program dimulai dengan label `START`, yang langsung melakukan loncatan
ke label `MULAI`. Di bagian inisialisasi pertanyaan, kita memiliki
beberapa string yang didefinisikan menggunakan direktif `db` (define
byte). Angka 13 dan 10 yang muncul di antara string-string tersebut
adalah representasi karakter carriage return (CR) dan line feed (LF),
yang digunakan untuk pemformatan tampilan.
Proses dimulai dengan perintah `MOV AH, 09H`, yang mengatur nilai
register AH dengan 09H, suatu fungsi layanan DOS untuk mencetak string.
Register DX diatur dengan alamat memori string pertanyaan, dan fungsi
layanan DOS (INT 21H) dipanggil untuk mencetak pertanyaan tersebut. Pada
titik ini, program memberikan tanda loncatan ke alamat memori
0100:009E.
Setelah loncatan, terjadi perpindahan ke alamat memori 0100:009E, di
mana pengguna diminta untuk memberikan input. Setelah input diberikan,
perintah-perintah pembanding seperti `CMP`, `JE` (Jump if Equal), dan
`JNE` (Jump if Not Equal) digunakan untuk menentukan tindakan
selanjutnya berdasarkan input yang diberikan.
Jika input adalah 'Y' atau 'y', program akan meloncat ke label
`Mahasiswa` atau `Mahasiswi`, masing-masing sesuai dengan kondisi. Pada
label `Mahasiswa` dan `Mahasiswi`, string jawaban yang sesuai disiapkan
dengan mengatur register-registernya, dan fungsi layanan DOS kembali
dipanggil untuk mencetak jawaban tersebut. Program kemudian meloncat ke
label `SELESAI` untuk mengakhiri eksekusi.
Tautan untuk mengunduh dapat dilihat pada bawah ini dengan cara menekan
tulisan berwarna biru:
Utama
Berkas pemrograman dapat diunduh di sini
Berkas video dapat diunduh di sini
Datasheet
-
Library
-
Komentar
Posting Komentar