Daftar Isi. Daftar Isi Pertemuan 6: Perintah Masukkan dari Keyboard P6.1. Teori Masukkan dari Keyboard... 3

dokumen-dokumen yang mirip
MODUL III FLOW CONTROL INSTRUTIONS

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY PROGRAM OPERASI ARITMATIKA. Kelas : INF 2B Praktikum 1 Nama : Fernalia NIM : J3C212210

Modul Kuliah Bahasa Rakitan. Harry Witriyono, M.Kom. I. Bahasa Rakitan, Microprocessor dan Bilangan

MODUL I PENGENALAN ASSEMBLY

Bab 1. Pemrograman dan Bahasa Rakitan. 1.1 Pendahuluan

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY PROGRAM POINTER OPERASI ARITMATIKA

Daftar Isi. Daftar Isi Pertemuan 4: Operator Aritmatika, Logika dan Instruksi Banding dan Lompatan P4.1. Teori... 3

Kuis : Bahasa Rakitan (UAS)

MODUL PRAKTIKUM ORGANISASI SISTEM KOMPUTER

MODUL V STACK dan PENGENALAN PROCEDURE

INTERRUPT. Cara penggunaan int [no int]

Daftar Isi. Daftar Isi Pertemuan 2: Pengenalan Debug dan Interrupt P2.1. Teori Pengenalan DEBUG... 3

Daftar Isi. Daftar Isi Pertemuan 5: Subroutine, Macro, Stack dan Pointer P5.1. Teori Subroutine (Procedure) Macro...

KALKULATOR ASSEMBLY Lutfi Budi Ilmawan

a b a AND b a OR b a XOR b a NOT a

BAB V MEMULAI DENGAN ASSEMBLY

Daftar Isi. Daftar Isi Pertemuan 3: Pengenalan TASM P3.1. Teori Pengenalan Turbo Assembler Struktur Program...

BAB 3 MODE AKSES MEMORI, PENGGUNAAN VARIABEL DAN STACK

TUGAS KELOMPOK BAHASA RAKITAN PUSTAKA MAKRO

PERTEMUAN : 4 EKSPLORASI DEBUG

R E G I S T E R. = Code Segment Register = Data Segment Register = Stack Segment Register = Extra Segment Register. 3.

REGISTER Register-register yang terdapat pada mikroprosesor, antara lain :

PROGRAM STUDI TEKNIK KOMPUTER JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG TK Praktikum Bahasa Rakitan Hand On Lab 4

PENGGUNAAN KEYPAD 4X3 DAN PC KEYBOARD PADA MODUL DST-52 DENGAN TAMPILAN M1632 LCD

OPERATION SYSTEM. Jenis - Jenis Register Berdasarkan Mikroprosesor 8086/8088

PEMROGRAMAN BAHASA RAKITAN

BAB XXVII TURBO DEBUGGER

Mata Kuliah : Bahasa Rakitan Materi ke-3

Operasi Transfer Data

Bahasa Rakitan PENGERTIAN REGISTER

BAB IV IMPLEMENTASI DAN PENGUJIAN IMPLEMENTASI DAN PENGUJIAN

BAB III ALGORITMA DAN PERANCANGAN ALGORITMA DAN PERANCANGAN

Mata Kuliah : Bahasa Rakitan

de KITS Application Note AN51 How 2 Use de KITS SPC Character LCD w/ PC

Antarmuka PC Keyboard dengan DST-AVR

Sistem Bilangan & Dasar Assembler Dadang Mulyana

intruksi kepada CPU untuk mengakses sistem operasi. BIOS tersimpan pada Read Only

Mikroprosesor. Pertemuan 8. By: Augury

MIKROPROSESOR REGISTER-REGISTER MIKROPROSESOR INTEL

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM IX I/O INTERRUPT

KETERAMPILAN MENGETIK 1O JARI

PETA MEMORI MIKROPROSESOR 8088

PERINTAH-PERINTAH DASAR (UMUM)

Materi 3. Komponen Mikrokomputer SYSTEM HARDWARE DAN SOFTWARE DADANG MULYANA

RUNNING TEXT. Gambar 1. Susunan Running Text

BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

BAB VIII OPERASI ARITMATIKA

ORGANISASI DAN ARSITEKTUR KOMPUTER. rsp oak informatika

Mikroprosesor. Bab 3: Arsitektur Mikroprosesor. INTEL 8086 Generasi Awal Prosesor PENTIUM. Arsitektur Mikroprosesor 1

Simple As Possible (SAP) - 2. Abdul Syukur

SATUAN ACARA PERKULIAHAN Mata Kuliah: BAHASA RAKITAN Jurusan / Jenjang / Kode / SKS : SI / D3 / KK /2

Eksplorasi Prosesor 8086 Dengan Program DEBUG

DCH1B3 Konfigurasi Perangkat Keras Komputer SAP-2

UNIVERSITI SAINS MALAYSIA. Peperiksaan Kursus Semasa Cuti Panjang Sidang Akademik 1998/99. April 1999

Menggunakan Bahasa Pemrograman Assembly

BAB IV IMPLEMENTASI DAN PENGUJIAN

Diktat Kuliah Organisasi dan Interaksi

2.2. Perangkat Keras dan Fungsinya

7/16/2012. Komputer berasal dari bahasa latin yaitu Computare yang berarti menghitung.

Sesi/Perkuliahan ke: II

de KITS Application Note AN20 - How 2 Use de KITS SPC Alphanumeric Display with StarTech PPI Card

10. Konsep Operasional Prosessor dan Memori

Diktat Kuliah Instruksi dan Segmentasi

BAHASA PEMROGRAMAN MIKROKOMPUTER

7.Lokasi hasil pemrosesan

BAB III PERENCANAAN DAN REALISASI

Pengenalan Pascal/DevPascal

Tahun Akademik 2015/2016 Semester I DIG1B3 Konfigurasi Perangkat Keras Komputer

INTRUKSI-INTRUKSI BAHASA PEMROGRAMAN ASSEMBLY

ORGANISASI SISTEM KOMPUTER & ORGANISASI CPU Oleh: Priyanto

APLIKASI MODUL DST -52 SEBAGAI JAM DIGITAL DENGAN INPUT DARI PC KEYBOARD DAN M1632 LCD SEBAGAI PENAMPIL

KONFIGURASI PIN-PIN MIKROPROSESOR Z 80. Yoyo somantri Dosen Jurusan Pendidikan Teknik Elektro FPTK Universitas Pendidikan Indonesia

Tahun Akademik 2015/2016 Semester I DIG1B3 Konfigurasi Perangkat Keras Komputer

MESIN KETIK ELEKTRONIK DENGAN TAMPILAN M1632 LCD OLEH MODUL DST-52

DASAR INPUT/OUTPUT (1) (PORT PPI DAN PORT 1 SEBAGAI OUTPUT)

OPERASI ARITMATIKA. Untuk menambah dalam bahas Assembler digunakan perintah ADD, ADC serta INC Sintaks : ADD Tujuan,Asal


PENGERTIAN REGISTER. Arsitektur Mikroprosesor INTEL 8086 Tinjauan Umum

4. Port Input/Output Mikrokontroler MCS-51

Mikroprosesor dan Antarmuka JNT - ITTELKOM. Interrupt. Oleh: Junartho Halomoan LOGO

Pemrograman Assembler dengan Debug

Microcontroller: Bahasa Pemrograman Assembly 8051

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1

BAB VII KOMPUTER SEDERHANA SAP-3 (SIMPLE AS POSSIBLE-3)

JUN - ITTELKOM. Interrupt. Definisi Interrupt [1]

SILABUS PERKULIAHAN JENJANG DIPLOMA III (D.III) AMIK BSI

Memori Semikonduktor

Instruksi-Instruksi Pemindahan Data. Sistem Komputer Universitas Gunadarma

DT-BASIC Application Note

User s Manual MAESTRO MOVING SIGN

DIKTAT BAHASA RAKITAN

Mengenal bahasa assembly

Pertemuan 2. Editor vi

Sistem Komputer. Komputer terdiri dari CPU, Memory dan I/O (Arsitektur Von-Neumann) Ada tiga bus dalam sistem komputer

Diktat Kuliah intel 8088

BAB I PENDAHULUAN 1 BAB I PENDAHULUAN

FUNGSI TOMBOL-TOMBOL KEYBOARD PADA KOMPUTER

A. Pengertian Assembly

Mengelola Data Excel dengan Sort dan Filter

OF DF IF TF SF ZF AF PF CF

Transkripsi:

Daftar Isi Daftar Isi... 1 Pertemuan 6: Perintah Masukkan dari Keyboard... 2 P6.1. Teori... 3 Masukkan dari Keyboard... 3 Masukkan Satu Karakter... 4 Masukkan Lebih Dari Satu Karakter... 7 Interrupt... 11 P6.2. Studi Kasus... 14 P6.3. Latihan... Error! Bookmark not defined. P6.4. Daftar Pustaka... 17 [Type text] Page 1

Pertemuan 6 Perintah Masukkan dari Keyboard Objektif: 1. Mahasiswa mengenal cara-cara peng-inputan dengan keyboard dalam Assembler 2. Mahasiswa mengetahui perintah-perintah masukkan dari keyboard. 3. Mahasiswa mengenal lebih jelas karakteristik service-service pada Interrupt yang berhubungan dengan input keyboard. 4. Mahasiswa dapat membuat program sederhana untuk input karakter dan input kalimat. [Type text] Page 2

P6.1 Teori MASUKKAN DARI KEYBOARD Keyboard merupakan sarana bagi user untuk berkomunikasi dengan program. Pada bagian ini akan kita lihat bagaimana caranya untuk menanggapi masukan dari keyboard. Kode Scan dan ASCII Prosesor pada keyboard mendeteksi setiap penekanan maupun pelepasan tombol pada keyboard. Prosesor ini menterjemahkan setiap sinyal yang terjadi berdasarkan posisi tertentu menjadi apa yang dinamakan kode Scan. Dengan demikian tombol A dan B akan mempunyai kode Scan yang berbeda karena posisinya memang berbeda. Lain halnya untuk tombol A <A besar> dan a <a kecil> yang terdapat pada posisi yang sama, akan mempunyai kode Scan yang sama. Kode ASCII adalah kode yang melambangkan suatu karakter baik berupa huruf,angka, maupun simbol-simbol grafik, misalkan angka 1 akan dilambangkan dengan kode ASCII 49. Kode Extended Kode ASCII telah menyediakan sebanyak 256 karakter dengan beberapa karakter kontrol, misalnya #10 untuk pindah baris dan #13 untuk Enter yang akan menggerakkan kursor ke samping kiri. Tetapi fungsi yang telah disediakan ini tidak mampu untuk menampilkan ataupun mendeteksi tombol fungsi misalnya F1, F2, F3 dan Home. Tombol kombinasi juga tidak dapat dideteksi oleh karakter ASCII, misalnya penekan tombol shif disertai tombol F1, penekanan Ctrl disertai tombol Home, dan lain-lain. Penekanan terhadap tombol-tombol fungsi dan tombol kombinasi akan menghasilkan kode ASCII 0 <nol>. Pertimbangan tersebut di atas maka diciptakan suatu kode yang dinamakan sebagai kode EXTENDED. Kode Extended ini dapat mendeteksi penekanan terhadap tombol-tombol fungsi maupun tombol kombinasi. [Type text] Page 3

MASUKKAN SATU KARAKTER Interupsi dari BIOS, yaitu interupsi 16h servis 0 dapat digunakan untuk mendapatkan masukan satu karakter dari keyboard. Hasil dari pembacaan karakter fungsi ini akan diletakkan pada register AX. Bila terjadi penekanan pada tombol biasa maka byte rendah dari AX yaitu AL, akan menunjukkan kode ASCII dari tombol tersebut dan byte tnggi dari AX yaitu AH, akan berisi kode Scan dari tombol tersebut. Bila yang ditekan adalah tombol khusus (extended) yang akan menghasilkan kode ASCII 0 maka byte rendah dari register AX (AL) akan menghasilkan kode ASCII 0 dan byte tinggi dari AX (AH) akan akan berisi kode extended dari tombol tersebut. Lihat contoh berikut ini: Nomor Interrupt: 16h Service Number: 0h Input: AH = 0 OutPut: Jika tombol biasa, maka: AL = ASCII AH = SCAN Jika Tombol khusus, maka AL = 00 AH = Extended.MODEL SMALL.CODE ORG 100h TData : JMP Proses T_ASCII DB 13,10,'Ini adalah tombol ASCII : $' T_Extended DB 13,10,'Ini adalah tombol Extended $' Proses : MOV AH,0 ; Servis Input satu karakter INT 16h ; Laksanakan [Type text] Page 4

PUSH AX ; Simpan hasil pembacaan pada stack CMP AL,00 ; Apakah ini karakter extended? JE Extended ; Ya!, Lompat ke Extended ASCII: LEA DX,T_ASCII ; Ambil alamat efektif T_ASCII MOV AH,09 ; Servis cetak kalimat INT 21h ; Cetak kalimat POP AX ; Ambil kembali nilai AX pada stack MOV DL,AL ; Ambil kode ASCII yang ditekan MOV AH,2 ; Servis cetak karakter INT 21h ; Cetak karakter! CMP AL,'Q' ; Apakah yang ditekan huruf 'Q'? JE exit ; Ya!, lompat ke Exit CMP AL,'q' ; Apakah yang ditekan huruf 'q'? JE exit ; Ya!, lompat ke Exit JMP Proses ; Lompat ke Proses Extended: LEA DX,T_Extended ; Ambil alamat efektif T_Extended MOV AH,09 ; Servis cetak kalimat INT 21h ; Cetak kalimat! JMP Proses ; Lompat ke Proses exit: END INT 20h ; Kembali ke DOS! TData Bila tombol extended ditekan, seperti penekanan tombol anak panah, F1, F2 dan sebagainya maka pada layar akan ditampilkan : Ini adalah tombol Extended [Type text] Page 5

Bila ingin mengetahui lebih lanjut mengenai tombol apa yang ditekan maka kode extendednya dapat dilihat pada register AH, sedangkan bila yang ditekan adalah tombol biasa, sepert huruf S maka pada layar akan ditampilkan: Ini adalah tombol ASCII : S Program akan selesai jika menekan tombol "q" atau "Q". Mendeteksi Penekanan Sembarang Tombol Penekanan sembarang tombol dapat terdeteksi dengan menggunakan service number 11h dari interupsi 16h. Sama halnya seperti yang dilakukan oleh fungsi keypressed pada bahasa pemrograman Pascal. Fungsi ini akan mendeteksi keyboard buffer, bila pada keyboard buffer terdapat suatu tombol maka ia akan membuat zerro flags menjadi nol<0> dan register AL berisi kode ASCII dari karakter tersebut sedangkan register AH akan berisi kode Scan dari tombol tersebut. Sebaliknya jika pada keyboard buffer tidak ada karakter maka zerro flags akan bernilai satu <1>. Keyboard buffer adalah suatu penampung yang digunakan untuk menampung setiap penekanan tombol pada keybaord. Daya tamping normal dari keyboard buffer adalah 15 karakter. Jika keyboard buffer telah penuh, maka komputer akan mengeluarkan tanda berupa suara beep. Di bawah ini adalah program mengecek apakah ada tombol yang ditekan: Nomor Interrupt: 16h Service Number: 0h Input: AH = 1 OutPut: Jika ada tombol yang ditekan, maka: ZF = 0 dan, AL = Kode ASCII AH = Scan Code Jika Tidak ada tombol yang ditekan, maka: ZF = 1 [Type text] Page 6

.MODEL SMALL.CODE ORG 100h TData : JMP Proses Kal0 DB 'Tekan sembarang tombol untuk berhenti! ' DB 13,10,'$' Proses : MOV AH,1 ; Servis untuk mengecek buffer keyboard INT 16h ; Laksanakan! JNZ EXIT ; Jika ada tombol yang ditekan, lompat ke EXIT MOV AH,09 ; Servis untuk cetak kalimat LEA DX,Kal0 ; Ambil alamat efektif Kal0 INT 21h ; Cetak kalimat! JMP Proses ; Lompat ke Proses exit : INT 20h ; Kembali ke DOS! END TData Bila program dijalankan, maka pada layar akan ditampilkan tulisan: Tekan sembarang tombol untuk berhenti! Tulisan ini akan ditampilkan terus sampai ada sembarang tombol di klik. MASUKKAN LEBIH DARI SATU KARAKTER Interupsi 21h servis ke 0Ah, digunakan untuk mendapatkan masukan dari keyboard lebih dari satu karakter. Adapun aturan pemakainya adalah: INPUT OUTPUT AH = 0Ah Buffer yang berisi string DS:DX= Buffer Hasil masukan dari keyboard - Register AH harus berisikan service number dari Interrupt 21h - Harus mendefinisikan sebuah variabel tempat menampung masukkan dengan aturan penulisan variabelnya sebagai berikut: [label] db nm, mm, nn, dup (?) [Type text] Page 7

Dengan aturan tata penulisan sebagai berikut: o Untuk byte pertama yaitu nm adalah jumlah terbanyak karakter yang dapat dimasukkan ditambah 1. Seperti memberikan nilai 23, maka karakter maksimum yang dapat dimasukkan adalah 22 karakter, karena satu karakter lagi digunakan khusus oleh tombol Enter(0Dh). o Byte kedua yaitu mm adalah indicator dari berapa banyak karakter yang dimasukkan (tombol ENTER atau 0Dh, tidak akan dihitung). Untuk byte kedua (mm) diisi secara otomatis oleh komputer setiap kali melakukan input, sehingga pada saat variabel didefinisikan maka tempat menampung mm ini dapat dikosongkan dengan menggunakan tanda tanya (?) yang artinya satu byte memory yang tidak diisi. Jumlah maksimum mm adalah nn-1. o Pada byte ketiga yaitu nn dup (?) inilah yang nantinya merupakan awal dari masukan string yang akan ditampung dan berguna untuk menyatakan berapa tempat yang harus disediakan atau dibutuhkan sesuai dengan byte pertama yaitu nn * 1 tempat kosong, yang diwakilkan dengan tanda Tanya (?). - DS:DX harus berisi segment dan offset awal variabel di atas. Interrupt Number: 21h Input: AH = 0Ah DS:DX = Penampung dengan spesifikasi: Byte 1 = Maksimum karakter yang dapat dimasukkan Byte 2 = Akan dijadikan Indikator banyaknya karakter yang dimasukkan Byte 3 keatas = Tempat hasil masukan ditampung.model SMALL.CODE ORG 100h TData : JMP Proses T_Enter EQU 0Dh Kal0 DB 'Ketikkan satu Kalimat : $' [Type text] Page 8

Kal1 DB 13,10,'Kalimat pada buffer : $' Buffer DB 23,?,23 DUP(?) Proses : MOV AH,09 LEA DX,Kal0 INT 21h ; Cetak kalimat Kal0 MOV AH,0Ah ; Servis Input kalimat LEA DX,Buffer ; DX menunjuk pada offset Buffer INT 21h ; Input kalimat! MOV AH,09 LEA DX,Kal1 INT 21h ; Cetak kalimat Kal1 LEA BX,Buffer+2 ; BX menunjuk byte ke 3 Buffer Ulang: CMP BYTE PTR [BX],T_Enter ; Apakah karakter Enter? JE EXIT ; Ya! Lompat ke Exit MOV DL,[BX] ; Masukkan karakter pada DL MOV AH,02 ; Servis cetak karakter INT 21h ; Cetak karakter INC BX ; BX := BX+1 JMP Ulang ; Lompat ke Ulang EXIT: INT 20h ; Kembali ke DOS! END TData Contoh program di atas adalah menerima masukan string dari keyboard yang hasil eksekusinya adalah: Ketikkan satu Kalimat : Equasoft Kalimat pada buffer : Equasoft [Type text] Page 9

Penjelasan proses yang dilakukan pada program tersebut adalah: MOV AH,09 LEA DX,Kal0 INT 21h Pertama-tama cetak kalimat Kal0 dengan servis 9 interupsi 21h, setelah itu: MOV AH,0Ah LEA DX,Buffer INT 21h Bagian ini, meminta masukan dari keyboard dengan DX menunjuk pada buffer yang digunakan sebagai penampung. MOV AH,09 LEA DX,Kal1 INT 21h Setelah itu cetaklah kalimat pada Kal1 LEA BX,Buffer+2 Dengan perintah ini maka BX akan menunjuk pada byte ke 3, atau awal masukan string dari keyboard. Supaya lebih jelas, nilai pada buffer setelah mendapat masukan adalah: Offset BX=Offset+2 9 8 E q u a s o f t 0D Setelah BX mnunjuk pada karakter pertama hasil masukan, maka: CMP BYTE PTR [BX],T_Enter JE EXIT Periksalah, apakah karakter yang ditunjukkan BX adalah 0Dh (Enter)? Bila ya, berarti akhir dari masukan. Yang perlu diperhatikan disini, bahwa yang digunakan adalah BYTE PTR. Bila tidak digunakan, assembler akan bingung apakah kita ingin membandingkan isi alamat BX sebanyak 1 byte atau lebih dengan T_Enter. MOV DL,[BX] MOV AH,02 INT 21h [Type text] Page 10

Bila bukan karakter enter, maka ambil karakter tersebut dan masukkan pada register DL untuk dicetak. INC BX JMP Ulang Tambahkan BX dengan satu sehingga BX akan menunjuk pada karakter selanjutnya. Proses dilanjutkan sampai ketemu tanda 0D atau karakter Enter. INTERRUPT Interupsi yang digunakan untuk masukkan dari keyboard ada dua macam yaitu BIOS Interrupt dan DOS Interrupt. BIOS Interrupt Yang menyediakan fasilitas keyboard adalah interrupt 09h dan interrupt 16h. Interrupt 09h sebenarnya hanya sebuah generator keyboard yang berfungsi mengambil input dari chip pengontrol keyboard dan memberikan input ke interrupt 16h. Interrupt ini tidak biasa digunakan dalam pembuatan program, namun Interrupt ini lebih sering dihubungkan dalam pembuatan program resident. Interrupt 16h Interrupt 16h terdiri dari 3 fungsi yaitu fungsi 0, 1 dan 2. Kegunaannya dapat dilihat penjelasan di bawah ini: Service number: 0 hexa Input : AH 00 Output : AH = Scan Code AL = ASCII Code Hasil input dari BIOS terdiri dari 2 macam keterangan yaitu Scan Code yang merupakan nomor ketetapan keyboard dan ASCII Code. Untuk input tambahan seperti F1-F10 dan tombol panah, maka AH akan berisi scan code dari tombol dan AL akan berisi angka 00. [Type text] Page 11

Service number: 01 hexa Input : 01h Output : Zero Flag = 1 maka buffer kosong Zero Flag = 0 maka AH Scan Code dan AL ASCII Code Fungsi : digunakan untuk mengambil masukan dari keyboard (Read Keyboard Character) Service 01h mengambil input dari buffer keyboard sehingga bila buffer kosong maka interrupt akan memberikan kode kesalahan yang berupa zero flag ter-set menjadi 1, sedangkan bila ternyata di buffer terdapat masukan maka AH akan berisikan Scan Code dari hasil input dan AL akan berisikan kode ASCII nya. Service number: 02h Input : AH = 2 Output : AL = Keyboard Status byte Fungsi : untuk mengambil status keyboard yang terdiri dari (lihat table 6.1): Tabel 6.1 Shift Status Keyboard Bit 76543210 Hexa Desimal Arti 1 80 128 Insert On 1 40 64 Caps Lock On 1 20 32 Num Lock On 1 10 16 Scroll Lock On 1 8 8 Alt ditekan 1 4 4 Ctrl ditekan 1 2 2 Shift kiri ditekan 1 1 1 Shift kanan ditekan Hasil operasi ini akan berupa 1 byte data yang disimpan di register AL yang disebut juga status keyboard. Status keyboard merupakan suatu informasi tentang beberapa tombol dari keyboard seperti tombol CapsLock, NumLock dan lain-lain. [Type text] Page 12

DOS Interrupt Ada beberapa macam DOS Interrupt 21h yang digunakan untuk menerima masukkan dari keyboard, yaitu: 1. Input per huruf dengan ECHO (tercetak ke layar) Service number: 01h Input : AH = 01h Output : AL = kode ASCII Masukkan Fungsi : Berguna untuk mengambil input dari keyboard dan menampilkannya di layar. Fungsi ini dapat dilakukan Ctrl Break. 2. Input per huruf tanpa ECHO (tidak tercetak ke layar) Terdiri dari 3 jenis fungsi interrupt 21h, yaitu: - Interrupt 21h Service number 08h Input : AH = 08 Ouput: AL = kode ASCII yang ditekan Fungsi: berguna untuk mengambil input dari keyboard, tanpa dicetak di layar dan bisa melakukan perintah Ctrl Break. - Interrupt 21h Service number 07h Input : AH = 07 Output: AL = Kode ASCII yang ditekan Fungsi: berguna untuk mengambil input dari keyboard tanpa dicetak di layar dan tidak bisa dilakukan Ctrl Break. - Interrupt 21h Service number 06h Input : 06 Output: DL = FF AL membawa karakter yang dikirim DL < FF DL membawa karakter yang diterima Fungsi: Console I/O yang berguna untuk input atau output ke media I/O Standard atau disebut juga Input Without ECHO maksudnya adalah komputer tidak akan menunggu user untuk menekan keyboard. [Type text] Page 13

P6.2 Studi Kasus Program berikut ini akan memperjelas bagaimana menginput lebih dari satu karakter: Code_seg segment Assume CS:Code_seg Org 100h Start : JMP mulai Tanya db Masukkan tanggal lahir Anda:, 13, 10, $ Tamping db 11,?, 11, dup (?) Jawab db 13, 10, Anda Lahir pada tanggal: $ Mulai: MOV AH, 09H MOV DX, OFFSET TANYA INT 21H ; MENCETAK TANYA MOH AH, 0AH MOV DX, OFFSET TAMPUNG PUSH DX ; MENYIMPAN DX KE STACK INT 21H ; INPUT DARI KEYBOARD MOV BX, OFFSET TAMPUNG INC BX ; BX = BX + 1 MOV DL, [BX] ; MASUKKAN [BX] KE DX XOR DH, DH INC BX ; BX = BX + 1 ADD BX, DX ; BX = BX + DX MOV DL, $ MOV [BX], DL ; MASUKKAN DL KE [BX] MOV DX, OFFSET JAWAB MOV AH, 09H INT 21H ; CETAK JAWAB POP DX ; AMBIL DX DARI STACK INC DX ; DX = DX + 1 INC DX ; DX = DX + 1 MOV AH, 09H [Type text] Page 14

INT 21H INT 20H Code_seg ENDS ENDS Start ; CETAK TAMPUNG ; AKHIR PROGRAM Penjelasan program: Jika program di atas di compile maka akan menghasilkan output sebagai berikut: Masukkan tanggal lahir Anda: Jika diisi, maka paling banyak karakter yang ditampung 10 karakter, seperti: Masukkan tanggal lahir Anda: 01-01-90 [enter] Hasil setelah di Enter: Anda Lahir pada tanggal: 01-01-90 Logika program di atas adalah sebagai berikut: Pertama kali yang dilakukan adalah melakukan pencetakkan terhadap tanya. Mulai: MOV AH, 09H MOV DX, OFFSET TANYA INT 21H ; MENCETAK TANYA Kemudian melakukan input dan ditampung pada TAMPUNG, namun sebelum di input, amankan register DX ke stack supaya dapat dipakai. MOH AH, 0AH MOV DX, OFFSET TAMPUNG PUSH DX ; MENYIMPAN DX KE STACK INT 21H ; INPUT DARI KEYBOARD Setelah itu, tambahkan offset TAMPUNG dengan 1 supaya menunjuk kepada indicator berapa huruf yang telah dimasukkan. MOV BX, OFFSET TAMPUNG INC BX ; BX = BX + 1 [Type text] Page 15

Setelah mendapat isi dari indicator tersebut, letakkan di register DL dan kosongkan register DH. MOV DL, [BX] ; MASUKKAN [BX] KE DX XOR DH, DH Tambahkan satu supaya menunjuk kepada awal kata yang dimasukkan. INC BX ; BX = BX + 1 Tambahkan BX dengan DX sehingga menunjuk kepada huruf terakhir masukkan. ADD BX, DX ; BX = BX + DX Ganti 0D hexa dengan $ supaya dapat dicetak menggunakan int 21h service 09h. MOV DL, $ MOV [BX], DL ; MASUKKAN DL KE [BX] Cetak Jawab menggunakan perintah: MOV DX, OFFSET JAWAB MOV AH, 09H INT 21H ; CETAK JAWAB Kemudian DX diambil dari stack dan menambahnya dengan 2 sehingga menunjuk kepada awal masukkan dan mencetak huruf-huruf tersebut. POP DX ; AMBIL DX DARI STACK INC DX ; DX = DX + 1 INC DX ; DX = DX + 1 MOV AH, 09H INT 21H ; CETAK TAMPUNG Dan akhiri program dengan perintah berikut: INT 20H ; AKHIR PROGRAM Code_seg ENDS ENDS Start [Type text] Page 16

P6.3 Latihan Untuk Latihan di pertemuan ini, buatlah inputan dari keyboard untuk output: Masukkan Nama Anda:. [diisi user] Masukkan Kelas Anda:... [diisi user] Setelah di Enter, maka akan menghasilkan: Nama Anda adalah [nama yang diinput user] dan Anda di kelas [kelas yang diinput user] P6.4 Daftar Pustaka Lukito, Ediman. Dasar-dasar Pemrograman dengan Assembler 8088. PT. Elex Media Komputindo. Jakarta. 1990. Pemrograman Bahasa Assembly Edisi Online Versi 1.0. Agustus 2011. http://www.scribd.com/doc/46495287/sto-assembly [Type text] Page 17