“INPUTAN KEYBOARD”
DISUSUN
OLEH
KELAS : TI - 1B
NIM : 2021573010002
AJARAN 2022-2023
1
LEMBARAN PENGESAHAN
MENGETAHUI,
DOSEN PMBIMBING MAHASISWA
2
DAFTAR ISI
LEMBAR PENGESAHAN........................................................................................................i
DAFTAR ISI..............................................................................................................................ii
DAFTAR GAMBAR................................................................................................................iii
PRAKTIKUM IV.......................................................................................................................4
1.1 Tujuan Praktikum........................................................................................................4
1.2 Dasar Teori..................................................................................................................4
1.3 Percobaan....................................................................................................................8
1.3.1 Input keyboard untuk 1 karakter..........................................................................8
1.3.2 Input Sembarang Dari Keyboard.......................................................................10
1.3.3 Input Kalimat Dari Keyboard.............................................................................12
3
DAFTAR GAMBAR
Gambar 1 Hasil output dari input keyboard satu kalimat....................................................................10
Gambar 2 Hasil output dari Input Sembarang Dari Keyboard..............................................................12
Gambar 3 Hasil output dari Input Kalimat Dari Keyboard...................................................................14
4
PRAKTIKUM IV
MENGOLAH INPUT DARI KEYBOARD
Keyboard merupakan salah satu dari sekian banyak macam piranti masukkan yang
dapat dikenali oleh komputer. Secara hardware, maka keyboard merupakan kumpulan saklar
yang memiliki kode dan sinyal yang berbeda-beda. Kode ini biasanya disebut sebagai scan
code. Scan code secara default merupakan kode sinyal mentah yang masih harus
ditranslasikan ke kode ASCII yang dapat dimengerti oleh pengguna. Selain itu terdapat juga
extended code. Kode ASCII yang dipergunakan untuk menyatakan penekanan tombol
normal, seperti tombol A, b, x, 1, 3, # dapat diakses melalui keyboard dengan kode non
extended. Sedangkan extended code merupakan kode yang mana dipergunakan keyboard
untuk menyatakan fungsi-fungsi khusus seperti F1-F12, Home, Page Up, Page Down, dan
sebagainya. Untuk tabel kode keyboard baik yang non extended maupun extended dapat
dilihat pada tabel berikut :
5
Tabel 1. Tabel Scan Code Normal
6
Tabel 2. Tabel Scan Code Extended
7
Jika kita hanya akan mengetahui apakah ada tombol yang ditekan atau tidak maka
dipergunakan nomor servis 1 dari INT 16h dengan langkah sebagai berikut :
1. Isi register AH dengan 1
2. Jalankan INT 16h
3. Cek flag zero ZF :
• ZF = 1 maka tidak ada tombol yang ditekan
• ZF = 0 maka ada tombol yang ditekan dengan AL berisi kode ASCII
tombolnya dan AH berisi scan codenya
Untuk mengambil sebuah kalimat dari keyboard maka langkahnya lebih kompleks karena
kita harus menyiapkan sebuah buffer yang nantinya akan diisi oleh karakter yang kita
masukkan via keyboard. Untuk ini maka dipergunakan nomor servis 0Ah dari INT 21h
dengan langkah sebagai berikut :
1. Isi register AH dengan 0Ah
2. Isi register DS:DX dengan alamat dari buffer yang sudah disiapkan
3. Run INT 21h
Lalu untuk membuat sebuah label yang berisi buffer untuk karakternya, maka dipergunakan
sintaks :
X, Y, Z DUP(?)
• X untuk menunjukkan banyaknya karakter yang ingin dibaca ditambah 1 untuk
karakter 0Dh sebagai penanda akhir kalimatnya
• Y untuk menunjukkan banyak karakter yang telah diketikkan. Karena nantinya
dinamis, maka diset ke ?
• Z untuk awal kalimatnya dan harus diisi sama dengan nilai X
8
1.3 Percobaan
Program Assembly
;========================================;
; Program : kbd00.ASM ;
; Fungsi : Input satu karakter ;
; dari keyboard. ;
;==========================================;
; INTERUPSI 16h ;
;==========================================;
; Input: OutPut: ;
; AH = 0 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
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
9
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:
INT 20h ; Kembali ke DOS !
End TData
10
Hasil Output
Analisa :
Jika dilihat dari output diatas, ada dua output yang akan keluar tergantung dari apa
yang di inputkan. Jika yang dimasukan adalah tombol ASCII maka outputnya akan
menampilkan komentar “ini adalah tombol ASCII : (lalu disertai dengan tampilan
tombol yang di input)”, namun jika yang di inputkan adalah tombol extended makan
outputnya akan menampilkan “ini adalah tombol extended”. Dan program akan
berhenti jika tombol “q” atau “Q” ditekan.
11
1.3.2 Input Sembarang Dari Keyboard
Program Assembly
;=============================================;
; Program : kbd01.ASM ;
; Fungsi : Mengecek apakah ada tombol yang ditekan ;
;===============================================; ; INTERUPSI
16h ;
;===============================================;
; Input: OutPut: ;
; AH = 1 Jika Ada tombol yang ditekan ;
; ZF = 0 dan ;
; AL = kode ASCII ;
; AH = Scan Code ;
; Jika Tidak ada penekanan Tombol ZF = 1 ;
;=============================================;
.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
12
Hasil Output
Analisa :
Jika dilihat dari output di atas perulangan akan terus menerus dilakukan. Perulangan
akan berhenti jika sembarang tombol di tekan, namun jika tidak ada satupun tombol
yang di tekan maka perulangan tidak akan pernah berhenti sampai komputer mati.
13
1.3.3 Input Kalimat Dari Keyboard
Program Assembly
;=========================================================;
; Program : kbd02.ASM ; ; Fungsi : Input Kalimat dari ;
; keyboard. ;
;===========================================================;
; INTERUPSI 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 : $'
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
14
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
Hasil Output
15
Analisa :
Setelah ada masukan dari keyboard, masukan pada output disini adalah “temanku
wibu” maka masukan tersebut akan tercetak setelah tombol enter di tekan. Namun
memiliki batasan untuk mencetak kalimat disini yaitu sebanyak 22 karakter, jika
karakter yang dimasukan lebih dari 22 karakter kalimat tersebut tidak bisa di
eksekusi atau di cetak.
Kesimpulan
keyboard merupakan kumpulan saklar yang memiliki kode dan sinyal yang
berbeda-beda. Kode ini biasanya disebut sebagai scan code. Scan code secara
default merupakan kode sinyal mentah yang masih harus ditranslasikan ke
kode ASCII yang dapat dimengerti oleh pengguna.
terdapat juga extended code yang berguna untuk menjangkau sinyal yang tidak
bisa dimengerti oleh kode ASCII biasa.
16