PROGRAM INT21H SERVICE A0H



1. Tujuan[kembali]

  1. Mengetahui penggunaan bahasa assembly dengan emu8086
  2. Mengetahui penggunaan int21H dalam program assembly
  3. Mampu menjalankan program dengan bahasa assembly

2. Alat dan Bahan[kembali]

a. Alat

        a) Aplikasi Emu8086



3. Dasar Teori[kembali]


1. JMP (Jump):  
Instruksi JMP MULAI digunakan untuk melompat langsung ke bagian program yang diberi label MULAI, melewati semua instruksi di antaranya. Ini biasanya digunakan untuk mengatur alur eksekusi program, seperti melewati bagian inisialisasi atau kode yang tidak perlu dijalankan pada awal program. Dengan menggunakan instruksi ini, program dapat memulai eksekusinya dari titik yang diinginkan, menghindari bagian kode yang mungkin hanya berfungsi sebagai deklarasi data.

2. DB (Define Byte):
Instruksi DB berfungsi untuk mendefinisikan data yang disimpan di memori dalam bentuk byte.  Ini memungkinkan program untuk menyimpan pesan yang nantinya akan dicetak atau diproses.

3. MOV (Move): 
Instruksi MOV digunakan untuk memindahkan data antar register atau dari memori ke register (dan sebaliknya). Sebagai contoh, `MOV AH, 09H` memindahkan nilai `09H` ke register `AH`, yang mengatur fungsi interrupt untuk mencetak string di layar. Instruksi `MOV` adalah salah satu instruksi paling dasar dalam assembly untuk memanipulasi data dan mengarahkan eksekusi berdasarkan nilai tertentu.

4. INT (Interrupt):
Instruksi `INT 21H` digunakan untuk memanggil layanan dari sistem operasi DOS, di mana nilai `21H` menunjukkan bahwa layanan DOS akan dipanggil. Nilai di dalam register `AH` menentukan fungsi spesifik yang akan dieksekusi, seperti mencetak string ke layar (`AH=09H`) atau menerima input dari keyboard. Dengan menggunakan interrupt ini, program dapat berinteraksi dengan perangkat keras melalui sistem operasi tanpa perlu menulis kode pengendali perangkat keras yang kompleks, sehingga mempermudah operasi I/O (Input/Output).

5. PUSH dan POP:
Instruksi `PUSH` dan `POP` digunakan untuk menyimpan dan mengambil data dari stack, sebuah area memori yang digunakan untuk menyimpan data sementara. Ini berguna untuk menjaga nilai register agar tidak hilang saat register tersebut perlu digunakan untuk operasi lain, dan kemudian mengembalikan nilai aslinya untuk melanjutkan eksekusi dengan data yang benar.

6. INC (Increment):
Instruksi `INC` digunakan untuk menambahkan 1 ke nilai yang tersimpan dalam register tertentu. Misalnya, `INC DX` menambahkan 1 ke nilai dalam register `DX`, yang bisa digunakan untuk mengarahkan pointer ke elemen berikutnya dalam array atau string. Dalam konteks program ini, instruksi `INC` digunakan untuk menggerakkan pointer dalam memori agar menunjuk ke karakter atau byte berikutnya yang akan diproses, seperti memproses karakter dalam input yang dimasukkan oleh pengguna.

7. XOR (Exclusive OR):
Instruksi `XOR DH, DH` digunakan untuk mengosongkan register `DH` dengan meng-xor nilai dalam register tersebut dengan dirinya sendiri. Operasi XOR akan menghasilkan 0 jika kedua operandnya sama, sehingga ini adalah cara yang cepat dan efisien untuk mengatur ulang register ke nilai 0. Ini sering digunakan dalam assembly untuk membersihkan register sebelum digunakan kembali dalam perhitungan atau operasi lainnya untuk memastikan tidak ada sisa nilai dari operasi sebelumnya.

8. ADD (Add):  
Instruksi `ADD BX, DX` menambahkan nilai dalam register `DX` ke register `BX`. Ini digunakan untuk mengubah alamat yang ditunjukkan oleh `BX` berdasarkan nilai offset yang ada di `DX`. Dalam program ini, instruksi ini membantu mengatur pointer untuk menunjuk ke lokasi yang benar dalam memori, terutama saat memanipulasi data yang dimasukkan oleh pengguna. Dengan menambahkan offset, program dapat mengakses dan memodifikasi bagian memori yang sesuai, seperti menambahkan karakter `$` ke akhir string input.

9. MOV [BX], DL:
Instruksi ini menyalin nilai dalam register `DL` ke alamat memori yang ditunjuk oleh register `BX`. Ini digunakan untuk menulis data langsung ke memori pada posisi yang ditentukan oleh `BX`, yang biasanya adalah bagian dari array atau string. Dalam konteks program ini, instruksi ini menambahkan karakter `$` ke akhir input pengguna untuk menandai akhir dari string, sehingga string tersebut dapat diproses atau ditampilkan dengan benar oleh fungsi-fungsi yang menggunakan tanda `$` sebagai penanda akhir string.

10. MOV AH, 4CH:
Instruksi ini, dikombinasikan dengan `INT 21H`, digunakan untuk mengakhiri program dan kembali ke DOS. Nilai `4CH` di register `AH` memberi tahu DOS bahwa program ingin keluar, dan sistem operasi akan membersihkan memori yang digunakan oleh program serta mengembalikan kontrol ke pengguna atau sistem. Ini adalah cara standar dalam assembly DOS untuk mengakhiri program secara bersih dan memastikan tidak ada sumber daya yang tertinggal terbuka atau tidak digunakan.

11. OFFSET:
Penggunaan `OFFSET` digunakan untuk mendapatkan alamat awal dari suatu label atau variabel di memori. Ini memungkinkan program untuk mengarahkan register ke lokasi memori tertentu di mana data atau string disimpan. Dalam program ini, OFFSET digunakan untuk mengarahkan register `DX` ke string yang akan ditampilkan atau diolah, sehingga fungsi-fungsi interrupt DOS dapat mengakses data yang benar.

12. Label:
Label seperti `MULAI:` digunakan untuk menandai bagian-bagian tertentu dalam program, sehingga instruksi seperti `JMP` dapat melompat ke bagian tersebut. Label membantu dalam mengatur alur eksekusi program dengan memberikan titik acuan di mana program dapat mulai atau melanjutkan eksekusinya. Dalam assembly, penggunaan label sangat penting untuk menciptakan struktur program yang logis dan mudah diikuti, terutama dalam program yang lebih kompleks dengan banyak cabang eksekusi.

13. Komentar:
Komentar dalam program assembly ditandai dengan tanda `;`, dan digunakan untuk memberikan penjelasan tentang kode yang mengikuti tanda tersebut. Komentar tidak dieksekusi oleh assembler dan hanya berfungsi sebagai dokumentasi untuk programmer. Ini sangat penting dalam assembly karena instruksi assembly sering kali sangat singkat dan tidak selalu mudah dipahami hanya dari kodenya saja. Komentar membantu menjelaskan apa yang dilakukan oleh bagian tertentu dari kode, sehingga memudahkan pemeliharaan dan pembacaan kode di masa depan.

4. Percobaan[kembali]

a.Prosedur percobaan
- Persiapkan emu8086
- Pelajari penggunaan bahasa assembly 
- susun kodingan berdasarkan contoh
- jalankan kodingan dab buktikan hasilnya sudah sesuai

b.Prinsip Kerja

Program dimulai dengan melompat ke bagian utama kode, yaitu label MULAI, yang melewatkan pendefinisian data. Pada awal eksekusi, program menggunakan interrupt INT 21H dengan fungsi 09H untuk mencetak string. Pertama, string yang berisi teks "NIM Anda?" disimpan dalam variabel TANYA, ditampilkan pada layar untuk meminta input NIM dari pengguna. Namun, input pengguna tidak diproses dalam program ini, melainkan NIM sudah didefinisikan secara statis dalam variabel NIM dengan nilai "2210951004".

Setelah menampilkan pertanyaan, program menampilkan NIM yang tersimpan di memori menggunakan metode yang sama, yaitu memindahkan alamat variabel NIM ke register DX dan menampilkan string tersebut di layar dengan INT 21H.

Langkah selanjutnya, program menampilkan teks "NIM:" yang tersimpan dalam variabel JAWAB di layar, kembali menggunakan interrupt INT 21H. Setelah itu, program mencetak ulang NIM yang sudah tersimpan di variabel NIM, kembali dengan memanfaatkan interrupt yang sama.

Terakhir, program mengakhiri eksekusinya dengan memanggil interrupt INT 21H menggunakan fungsi 4CH, yang menginstruksikan sistem untuk keluar dari program dan mengembalikan kontrol ke DOS. Prinsip utama dari program ini adalah penggunaan DOS interrupt untuk menampilkan teks yang sudah disimpan di memori.

c.Kodingan

; PROGRAM MENULIS DAN MEMBACA KE MEMORI
; Program isikan Nomor Induk Mahasiswa (NIM)
Start: JMP MULAI
TANYA    DB 'NIM Anda?:',13,10,'$'
NIM      DB '2210951004',13,10,'$'
JAWAB    DB 13,10,'NIM: $'

MULAI:
    MOV AH,09H
    MOV DX, OFFSET TANYA
    INT 21H          ; MENCETAK TANYA

    MOV DX, OFFSET NIM
    MOV AH,09H
    INT 21H          ; MENAMPILKAN NIM

    MOV DX, OFFSET JAWAB
    MOV AH,09H
    INT 21H          ; CETAK JAWAB

    MOV DX, OFFSET NIM
    MOV AH,09H
    INT 21H          ; CETAK NIM YANG TELAH DIMASUKKAN

    MOV AH,4CH
    INT 21H          ; KELUAR DARI PROGRAM

d. Video[kembali]


5. Download File[kembali]

  • Download 

 

Komentar

Postingan populer dari blog ini

KOMITMEN TERHADAP KESELAMATAN DAN RESIKO DALAM PEKERJAAN

KELEBIHAN DAN KEKURANGAN MENJADI SEORANG PEMIMPIN