Gambar 38. Program Int 21h Service 01h

  



A. Tujuan
 [Daftar Isi]
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
Gambar 1. Tampilan Lembar Baru dalam Software 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

Postingan populer dari blog ini

Modul 4

Modul 1

Modul 2