Kamis, 07 Juli 2011

Modul assemler

PENGGUNAAN INPUT KEYBOARD

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, akan menunjukkan kode ASCII dari tombol tersebut dan byte tnggi dari AX akan berisi kode Scan dari tombol tersebut.

.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.

WELOCOME TO BLOG


Click here for Myspace Layouts