Masukan satu karakter
Memasukan data/input data 1 karakter dapat kita buat dengan pelayanan interupsi 21H nomor service 01H dalam register AH. Instruksi yang umum dipakai adalah:
MOV AH, 01H
INT 21H
Data yang dimasukkan melalui penekanan tombol keyboard ini akan ditampung di register AL berupa kode ASCII.
Contoh:
;Program input 1 karakter dari keyboard
.model small
.code
org 100h
MULAI: JMP START
Tanya db ‘Jawablah pertanyaan di bawah ini ! ‘,13,10
db ‘Apakah anda seorang laki-laki? (Y/T)’,13,10
db ‘Jawaban anda : $’
Jawab1 db 13,10,’Anda adalah seorang laki-laki’,13,10,’$’
Jawab2 db 13,10,’Anda adalah seorang wanita’,13,10,’$’
START: MOV AH, 09H
LEA DX, Tanya
INT 21h
ULANG:
MOV AH, 01H ;input dari keyboard 1 huruf
INT 21h
CMP AL, ‘Y’
JE LAKI
CMP AL, ‘y’
JE LAKI
CMP AL, ‘T’
JE WANITA
CMP AL, ‘T’
JE WANITA
JMP ULANG
WANITA:
MOV AH,09H
LEA DX,Jawab2
INT 21H
JMP SELESAI
LAKI:
MOV AH,09H
LEA DX,Jawab1
INT 21H
SELESAI:
INT 20h
END MULAI
Mendeteksi penekanan tombol
Untuk mendeteksi adanya penekanan tombol tertentu dari keyboard digunakan input huruf without echo. Ada tiga jenis input per huruf without echo yaitu:
q Input without echo yang mengecek Ctrl Break/Ctrl C.
Untuk melakukan input yang mendeteksi Ctrl Break memakai INT 21H service 08H. Adapun persyaratannya adalah:
Ø Nilai AH berisi 08H INT 21H
Ø Nilai AH ini dapat dihentikan dengan Ctrl Break atau Ctrl C selama proses input
Ø Data yang diinput ditaruh di register AL.
q Input without echo yang tidak mengecek Ctrl Break/Ctrl C.
Untuk melakukan input yang tidak mendeteksi Ctrl Break atau Ctrl C, memakai INT 21H service 07H di register AH. Cara pemakaiannya sama dengan AH=08H, perbedaannya hanya pada saat komputer sedang berjalan misalnya penekanan tombol ctrl break akan dibiarkan dan dianggap sebagai input.
q Input without echo tanpa menunggu
Maksudnya adalah komputer tidak akan menunggu anda untuk menekan keyboard tetapi input ini akan diambil dari keyboard buffer, dimana keyboard buffer akan diisi ketika komputer sedang mengerjakan tugas lain. Jika ternyata keyboard buffer kosong, maka input without echo tanpa menunggu tidak mengerjakan apa-apa. Adapun persyaratannya adalah sebagai berikut:
Ø Register AH diisi dengan service 06H INT 21H
Ø Register DL harus berisi nilai FFH.
Ø Hasil input akan diletakkan pada register AL.
Contoh:
;Program input 1 karakter without echo tanpa menunggu
.model small
.code
org 100h
MULAI: JMP START
KATA db ‘Kalimat ini akan dicetak terus $’
START: MOV AH, 09H
LEA DX, KATA
INT 21H
MOV AH, 06H
MOV DL,0FFH
XOR AL, AL
INT 21H
CMP AL, ‘0’
JE AKHIR
CMP AL, ‘q’
JNE MULAI
AKHIR: INT 20H
END MULAI
Masukan kalimat dari keyboard
Memasukan data/input data 1 kalimat dapat kita buat dengan pelayanan interupsi 21H nomor service 0AH dalam register AH. Instruksi yang umum dipakai adalah:
MOV AH, 0AH
MOV DX, OFFSET variabel
INT 21H
Instruksi ini berfungsi untuk mengambil data ke dalam variable, data dalam kalimat dibaca satu persatu oleh register AL dan disalurkan ke alamat/lokasi memori yang ditunjuk oleh register BX. Hasilnya disimpan dalam register DX melalui sebuah variabel.
Panjang maksimal kalimat yang diinput harus mengikuti aturan pembuatan variable sebagai batas karakter yang diinput dari keyboard yaitu:
Nama_variable db XX , ? , YY dup (?)
XX= Jumlah karakter yang akan diinput ditambah 1 untuk tombol enter
YY= Jumlah karakter yang dibaca berikut enternya
YY dup(?) berguna untuk menyatakan berapa tempat yang harus disediakan yaitu YY*1 tempat kosong yang dapat mewakili tanda tanya (?).
DS:DX merupakan lokasi memori yang berisi segment dan offset awal suatu nama variable yang akan diisi oleh data.
Contoh:
;Program input 1 kalimat
.model small
.code
org 100h
MULAI: JMP START
KATA db ‘Ketik data maksimum 14 karakter :$’
DATA_MASUK db 15,?,15 dup(?)
START: MOV AH, 09H
LEA DX, KATA
INT 21H
MOV AH, 0AH
MOV DX,0FFSET DATA_MASUK
INT 21H
MOV BX,0FFSET DATA_MASUK
INC BX
MOV AL,[BX]
INC BX
XOR AH, AH
ADD BX, AX
MOV AL, 0
MOV [BX], AL
MOV DX, OFFSET DATA_MASUK
INC DX
INC DX
AKHIR: INT 20H
END MULAI
Isi data yang dimasukkan ke dalam register AL (1 karakter) dan register DX (1 word) dapat ditampilkan ke layar monitor setelah dipindahkan ke register DL yang dibaca satu persatu dari lokasi memori yang ditunjuk oleh register BX. Pada saat dipindahkan ke DL maka harus dilengkapi dengan nomor pelayanan INT 21H service 02H.
Contoh:
MOVSB ;isi lokasi memori berisi byte ke lokasi memori lain
MOVSW ;isi lokasi memori berisi word ke lokasi memori lain
MOVSD ;isi lokasi memori berisi double word ke lokasi lain
MOVS DAT1, VAR1 ;isi label DAT1 ke VAR1
· Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH, POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS).
· Setiap ada perpindahan data harus mengikuti ketentuan aturan penulisannya (syntax).
· Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakan alternatif yang dapat dipilih untuk mencetak kalimat.
·
· Properti target mendefinisikan bagaimana halaman target dari sebuah link.