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. Kode Scan ini biasanya tidak berguna bagi kita. Kita biasanya hanya menggunakan kode ASCII dan Extended yang merupakan hasil terjemahan dari kode scan oleh keyboard handler.
Masukan satu karakter
Hasil dari pembacaan karakter fungsi ini akan diletakkan pada register AX. Bila terjadi penekanan pada tombol biasa maka byte rendah dari AX
.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
int 16h
push ax
cmp al,00
je extended
ascii:
lea dx,t_ascii
mov ah,09h
int 21h
pop ax
mov dl,al
mov ah,02h
int 21h
cmp al,’q’
je exit
cmp al,’Q’
je exit
jmp proses
extended:
lea dx,t_extended
mov ah,09h
int 21h
jmp proses
exit: int 20h
end tdata
Memasukan kalimat dari keyboard
.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
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
———————————————————
PENGGUNAAN PROSEDUR
Prosedur merupakan sekumpulan perintah yang bisa diakses secara berulang -ulang. Prosedur sangat bermanfaat dalam pemrogarman modular. Dengan menggunakan prosedur maka pencarian kesalahan akan lebih mudah.
Sintaks dalam penulisan prosedur adalah sebagai berikut:
nama_prosedur PROC NEAR/FAR
RET
namaProsedur ENDP
Keterangan:
· nama_prosedur : nama prosedur yang kita definisikan
· Bentuk “NEAR” digunakan jika procedure tersebut nantinya dipanggil oleh program yang letaknya masih satu segment dari procedure tersebut.
· bentuk “FAR” ini digunakan bila procedure dapat dipanggil dari segment lain.
· Perintah “RET(Return)” digunakan untuk mengembalikan Kontrol program
· pada sipemanggil procedure.
· untuk memanggil prosedur dengan menggunakan perintah call nama_prosedur
PROGRAM MENGGUNAKAN PROSEDUR
;Program :P roc1.asm
;fungsi : untuk mencetak kalimat
;———————————————————————-
.model small
.code
org 100h
proses: call cetak_kar;
int 20h
cetak_kar proc near
mov ah,02h
mov dl,’S’
int 21h
ret
cetak_kar endp
end proses
;Program : Proc2.asm
;fungsi : untuk mencetak kalimat
sebanyak sepuluh kali
;——————————–
.model small
.code
org 100h
proses: jmp start
kata db ‘STMIK EL RAHMA’,13,10,’$’
start:
mov cx,10 ;
ulang:
call cetak_kal
loop ulang ;
int 20h
; ini prosedure
cetak_kal proc near
mov ah,09h
lea dx,kata
int 21h
ret
cetak_kal endp
;end prosedur
end proses
PENGGUNAAN MACRO
Kegunaan macro hampir sama dengan prosedur. hanya saja macro mempunyai kelebihan tersendiri dibandingkan dengan prosedur. Dengan menggunakan macro maka kita tidak perlu mengunakan perintah Call.
Adapun sintaksnya adalah sebagai berikut:
nama_macro MACRO [P1/P2]
ENDM
Keterangan:
“P1″ dan “P2″ adalah parameter yang bisa anda gunakan pada macro. Parameter ini berbentuk optional, artinya bisa digunakan ataupun tidak.
PROGRAM MENGGUNAKAN MACRO
;program :mac.asm
;fungsi :menggunakan macro untuk mencetak kalimat
;——————————————————
cetak_kal macro kal
mov ah,09h
LEA dx,kal
INT 21H
endm
.model small
.code
org 100h
proses:
JMP X
K DB ‘ONE THING I DON”T KNOW WHY$’
X:
cetak_kal K
INT 20H
END PROSES
;program :mac2.asm
;fungsi :menggunakan librari macro untuk mencetak angka
;——————————————————-
INCLUDE CETANGA.ASM
.MODEL SMALL
.CODE
ORG 100H
MULAI: JMP PROSES
X DW 7 PROSES:
CETAK_ANGKA X
INT 20H
END MULAI
;program :cetanga.mcr
;fungsi :sebagai librarinya
;——————————————————-
CETAK_ANGKA MACRO ANGKA
PROSES:
MOV AX,angka ;AX =1234
MOV BX,10 ;BX=10
XOR CX,CX ;CX=0
ULANG:
XOR DX,DX
DIV BX DX=AX/BX
PUSH DX ;PUSTH UNTUK MENYIMPAN DATA KE DALAM STECK
INC CX
CMP AX,0
JNE ULANG
CETAK:
POP DX ;POP UNTUK MENGAMBIL DATA DARI STACK
ADD DL,’0′ ;UBAH ANGKA MENJADI CODE ASCII
MOV AH,02H
INT 21H
LOOP CETAK
ENDM
KESIMPULAN:
- Jika fungsi tersebut jarang dipanggil, gunakanlah MACRO karena macro tidak
memperlambat proses
- Jika fungsi tersebut sering dipanggil, gunakanlah PROCEDURE karena
procedure tidak memperbesar program.
- Jika fungsi tersebut kecil, gunakanlah MACRO. Karena pengaruh terhadap
besarnya program hanya sedikit dan program akan lebih cepat.
- Jika fungsi tersebut besar, gunakanlah PROCEDURE. Karena procedure tidak
memperbesar program.
Tidak ada komentar:
Posting Komentar