Anda di halaman 1dari 22

LAPORAN PRAKTIKUM

MIKROPROSESOR DAN BAHASA RAKITAN

“Inputan Keyboard”

Oleh:

Nama :Isnani

NIM :1957301025

Kelas :TI.1C

Pembimbing : Azhar, S.T, M.T

JURUSAN TEKNOLOGI INFORMASI DAN KOMPUTER

PROGRAM STUDI TEKNIK INFORMATIKA

KEMENTRIAN RISET TEKNOLOGI DAN KEMENTRIAN TINGGI

POLITEKNIK NEGERI LHOKSEUMAWE

2020
LEMBAR PENGESAHAN

Nomor Praktikum : 08/TIK/TI/Kb/1C/2020

Judul Praktikum : Inputan Keyboard

Nama : Isnani

Nim : 1957301025

Kelas : TI 1.C

Jurusan : Teknologi Informasi dan Komputer

Progran Studi : Teknik Informatika

Tanggal Praktikum : 03 Juni 2020

Tanggal Penyerahan : 10 Juni 2020

Nilai :

Buket Rata, 10 Juni 2020

Azhar, S.T, M.T

2
PRAKTIKUM 8
MENGOLAH INPUT DARI KEYBOARD

TUJUAN
1. Mahasiswa mampu melakukan pemrograman assembly untuk mengolah
masukkan dari keyboard, baik berupa karakter maupun kalimat

DASAR TEORI
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 :

3
Tabel 1. Tabel Scan Code Normal

4
Tabel 2. Tabel Scan Code Extended

Untuk mengakses penekanan 1 karakter pada keyboard maka mikroprosesor


akan melakukan langkah-langkah sebagai berikut :
1. Isi register AH dengan 0 sebagai nomor servis interupsinya
2. Jalankan INT 16
3. Cek register AL untuk melihat tipe key yang dihasilkan :
 AL = 0 maka keyscan extended dengan AH berisi kode extended
 AL <> 0 maka keyscan biasa dengan AL berisi kode ASCII keyboard
sedang AH berisi kode keyscannya
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

5
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

DAFTAR ALAT DAN BAHAN


1. Komputer Pribadi
2. Perangkat Lunak Turbo Assembler dan DEBUG

KESELAMATAN KERJA
1. Praktikum hanya dapat dilakukan atas petunjuk dosen pengasuh atau
instruktur.
2. Pastikan semua peralatan dalam keadaan baik sebelum dan sesudah
melakukan praktikum serta menjaga semua peralatan yang digunakan.
Perlu mematuhi semua peraturan yang berlaku dalam laboratorium yang
digunakan

6
PROSEDUR PERCOBAAN
1. Input keyboard untuk 1 karakter
Tuliskan program berikut ini pada text editor dan simpan sebagai file kbd00.asm
pada folder yang sama dengan tasm.exe.

;=============================================;
; Program : kbd00.ASM ;
; Fungsi : Input satu karakter dari keyboard. ;
;=============================================;

.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
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
a. Buka command prompt dos.
b. Compile program menggunakan tasm dengan perintah berikut :

7
tasm kbd00
c. Lingking file kbd00.obj menggunakan tlink dengan mengetikkan perintah
berikut :
tlink/t kbd00
d. Jalankan file kbd00.com dan amati yang terjadi pada layar Anda.

2. Input Sembarang Dari Keyboard


a. Tulis source code program berikut ini pada text editor lalu compile ,linking,
dan jalankan hasilnya serta amati hasilnya dengan seksama.
;===============================================;
; Program : kbd01.ASM ;
; Fungsi : Mengecek tombol ditekan ;
;===============================================;
.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

3. Input Kalimat Dari Keyboard


a. Tulis source code program berikut ini pada text editor lalu compile ,linking,
dan jalankan hasilnya serta amati hasilnya dengan seksama.
;===========================================================;
; Program : kbd02.ASM ;
; Fungsi : Input Kalimat dari keyboard. ;
;===========================================================;
.Model Small
.Code
ORG 100h
TData :

8
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

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

TUGAS DAN PERTANYAAN


1. Analisa hasil dari eksekusi program diatas, berikan maksud dari setiap
baris program yang diberikan, tinjau perubahan dari register-register yang
diakibatkan oleh instruksi program, demikian juga isi memori jika dipakai
untuk menyimpan data.

2. Dari hasil percobaan yang dilakukan, buat kesimpulan dari masing-masing


program yang dibuat

9
BAB 2 HASIL PERCOBAAN
1. Input keyboard untuk 1 karakter
Coding:

Output:

10
Analisis:

 T_ASCII menyimpan kalimat “ini adalah tombol ASCII : ”


 T_Extended menyimpan kalimat “ini adalah tombol Extended”

 MOV AH,0 sebagai service untuk input satu karakter


 Int 16h laksanakan(menerima inputan)
 Push AX untuk menyipan hasil pembacaac input ke dalam stack
 Cmp al,00 untuk mengecek apakah inputan merupakan tombol
extended?
 Je extended , untuk melompat ke label extended apabila inputan
merupakan tombol extended
 Kalau inputan bukan tombol extended maka lanjut ke label ASCII

11
 Lea dx,T_ASCII untuk mengambil alamat efektif T_ASCII
 MOV AH,09 sebagai servis untuk mencetak kalimat pada alamat
T_ASCII
 Int 21h sebagai perintah untuk cetak kalimat
 Pop AX untuk mengambil kembali nilai AX pada stack
 MOV DL,AL untuk mengambil kode ASCII yang ditekan dan
disimpan kedalam register DL
 MOV AH,2 sebagai service untuk mencetak karakter
 Int 21h sebagai perintah untuk cetal karakter
 Cmp AL,’Q’ untuk mengecek apakah yang ditekan adalah huruf Q
 Je exit jika iya maka lompat ke exit
 Jmp proses untuk lompat ke proses

 LEA DX,T_Extended untuk mengambil alamat efektif dari


T_Extended
 MOV AH,09 sebagai service untuk mencetak kalimat
 Int 21 sebagai perintah untuk mencetak kalimat
 Jmp proses untuk lompat ke proses

 Int 20h untuk kembali ke dos

Isi Memory :

12
Register :

13
14
2. Input Sembarang Dari keyboard
Coding:

Output:

Analisis:

15
l
 Jmp proses untuk lompat ke proses
 Kal1 menyimpan kalimat ‘tekan sembarang tombol untuk berhenti!’

 MOV AH,1 untuk menggecek buffer pada keyboard


 Int 16h sebagai perintah untuk melaksanakan mengecek
 Jnz exit untuk melompat ke exit apabila ada tombol yang ditekan
 MOV AH,09 sebagai service untuk mencetak kalimat
 LEA DX,kal0 untuk mengambil alamat efektif dari kal0
 Int 21 sebagai perintah untuk mencetak kalimat
 Jmp proses untuk melompat ke proses

 Int 21h untuk kembali ke dos

Isi Memory :

Register :

16
17
3. Input Kalimat Dari Keyboard
Coding:

Output:

Analisis:

18
 Jmp proses untuk melompat ke proses

 MOV AH,09 sebagai service untuk mencetak kalimat


 LEA DX,Kal0 untuk mengambi alamat efektif dari kal0
 INT 21h untuk mencetak kalimat di Kal0
 MOV AH,0AH sebagai servis untuk Input kalimat
 LEA DX,Buffer untuk alamat DX menunjuk pada alamat offset
Buffer
 INT 21h sebagai perintah untuk menerima Input kalimat !
 MOV AH,09 sebagai nilai service untuk mencetak kalimat
 LEA DX,Kal1 untuk mengambil alamat efektif dari kal1 yaitu alamat
buffer
 INT 21h sebagai perintah untuk mencetak kalimat Kal1
 LEA BX, Buffer+2 menyimpan di BX dimana menunjuk byte ke 3
Buffer

 CMP BYTE PTR [BX],T_Enter untuk mengecek Apakah yang


dinnput merupakan karakter Enter?
 JE EXIT untuk melompat ke Exit jika iya enter
 MOV DL,[BX] untuk memasukkan karakter pada DL
 MOV AH,02 sebagai servis untuk cetak karakter
 INT 21h sebagai perintah untuk Cetak karakter
 INC BX untuk mengincremen BX, BX := BX+1
 JMP Ulang untuk Lompat ke Ulang

19
Proses yang dilakukan pada program tersebut adalah:
 LEA DX,Buffer
 INT 21h
 Pada bagian inilah kita diminta 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 menunjuk pada karakter pertama hasil masukan, maka:
 CMP BYTE PTR [BX],T_Enter
 JE EXIT
 Periksalah, apakah karakter yang ditunjukkan BX adalah 0D(Enter)? Bila ya,
berarti akhir dari masukan. Perlu diperhatikan disini, bahwa kita
menggunakan 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
 Bila bukan karakter enter, maka ambil karakter tersebut dan masukkan 82
pada register DL untuk dicetak.
 INC BX
 JMP Ulang

20
 Tambahlah BX denga satu sehingga BX akan menunjuk pada karakter
selanjutnya. Proses dilanjutkan sampai ketemu tanda 0D atau karakter Enter.

Isi memory:

Register :

21
22

Anda mungkin juga menyukai