MODEL SMALL
Tanda directive ini
digunakan untuk memberitahukan kepada assembler bentuk memory yang digunakan
oleh program kita. Supaya lebih jelas model-model yang bisa digunakan adalah :
- TINY
Jika program anda hanya
menggunakan 1 segment seperti program COM. Model ini disediakan khusus untuk
program COM.
- SMALL
Jika data dan code yang
digunakan oleh program kurang dari ukuran 1 segment atau 64 KB.
- MEDIUM
Jika data yang digunakan
oleh program kurang dari 64 KB tetapi code yang digunakan bisa lebih dari 64
KB.
- COMPACT
Jika data yang digunakan bisa lebih
besar dari 64 KB tetapi codenya kurang dari 64 KB.
- LARGE
Jika data dan code yang dipakai oleh
program bisa lebih dari 64 KB.
- HUGE
Jika data, code maupun array yang
digunakan bisa lebih dari 64 KB.
Mungkin ada yang bertanya-tanya
mengapa pada program COM yang dibuat digunakan model SMALL dan bukannya TINY
?Hal ini disebabkan karena banyak dari compiler bahasa tingkat tinggi yang
tidak bisa berkomunikasi dengan model TINY, sehingga kita menggunakan model
SMALL sebagai pemecahannya.
.CODE
Tanda directive ini digunakan untuk
memberitahukan kepada assembler bahwa kita akan mulai menggunakan Code
Segment-nya disini. Code segment ini digunakan untuk menyimpan program yang
nantinya akan dijalankan.
.ORG 100h
Pada program COM perintah ini akan
selalu digunakan. Perintah ini digunakan untuk memberitahukan assembler supaya
program pada saat dijalankan(diload ke memory) ditaruh mulai pada offset ke
100h(256) byte. Dapat dikatakan juga bahwa kita menyediakan 100h byte kosong
pada saat program dijalankan. 100h byte kosong ini nantinya akan ditempati oleh
PSP(Program Segment Prefix) dari program tersebut. PSP ini digunakan oleh DOS
untuk mengontrol jalannya program tersebut.
JMP
Perintah JMP(JUMP) ini digunakan untuk
melompat menuju tempat yang ditunjukkan oleh perintah JUMP. Adapun syntaxnya
adalah:
JUMP Tujuan .
Dimana tujuannya dapat berupa label
seperti yang digunakan pada bagan diatas. Mengenai perintah JUMP ini akan kita
bahas lebih lanjut nantinya.
Perintah JUMP yang digunakan pada
bagan diatas dimaksudkan agar melewati tempat data program, karena jika tidak
ada perintah JUMP ini maka data program akan ikut dieksekusi sehingga
kemungkinan besar akan menyebabkan program anda menjadi Hang.
INT 20h
Perintah INT adalah suatu
perintah untuk menghasilkan suatu interupsi dengan syntax:
INT NoInt
Interupsi 20h berfungsi untuk mengakhiri program dan menyerahkan
kendali sepenuhnya kepada Dos. Pada program COM cara ini bukanlah satu-satunya
tetapi cara inilah yang paling efektif untuk digunakan. Bila anda lupa untuk
mengakhiri sebuah program maka program anda tidak akan tahu kapan harus
selesai, hal ini akan menyebabkan komputer menjadi hang.
PROGRAM 1 = MENCETAK HURUF
; PROGRAM : A0.ASM ;
; FUNGSI : MENCETAK
KARATER ;
; 'A' DENGAN INT 21 ;
.MODEL SMALL
.CODE
ORG 100h
Proses :
MOV AH02h ; Nilai servis ntuk mencetak
karakter
MOV DL,'A' ; DL = Karakter ASCII yang
akan dicetak
INT 21h ; Cetak karakter !!
INT 20 h ; Selesai ! kembali ke DOS
END Proses
PROGRAM 2 :MENCETAK
KARAKTER BESERTA ATRIBUT
AH = 09h
AL = Kode ASCII dari
karakter yang akan dicetak
BH = Nomor halaman(0 untuk
halaman 1)
BL = Atribut atau warna
dari karakter yang akan dicetak
CX = Banyaknya karakter
tersebut akan dicetak
; PROGRAM :
A1.ASM ;
; FUNGSI :
MENCETAK KARATER 'A';
; BESERTA
ATRIBUTNYA ;
; DENGAN INT
10h ;
Proses :
MOV AH,09h ;
Nilai servis untuk mencetak karakter
MOV AL,'A' ;
AL = Karakter yang akan dicetak
MOV BH,00h ;
Nomor Halaman layar
MOV BL,93h ;
Warna atau atribut dari karakter
MOV CX,03h ;
Banyaknya karakter yang ingin dicetak
INT 10h ;
Laksanakan !!!
INT 20h ;
Selesai ! kembali ke DOS
END Proses
PENGULANGAN DENGAN LOOP
MOV CX,3 ; Banyaknya
pengulangan yang dilakukan
Ulang : INT 10h ; Tempat
terjadinya pengulangan
LOOP Ulang ; Lompat ke
label 'Ulang'
TRICK:
Bila anda menetapkan nilai CX menjadi
nol pada saat pertama kali sebelum dilakukan loop, maka anda akan mendapatkan
proses looping yang terbanyak. Hal ini dikarenakan proses pengurangan 0 dengan
1 akan menghasilkan nilai FFFFh(-1),
Contoh :
MOV CX,00
Ulang: LOOP Ulang
PROGRAM 3 : MENCETAK BEBERAPA KARAKTER
; PROGRAM : ABC0.ASM ;
; FUNGSI : MENCETAK 16 BUAH ;
; KARAKTER DENGAN ;
; INT 21h SERVIS 02 ;
Proses
:
MOV AH,02h ; Nilai servis
MOV DL,'A' ; DL=karakter 'A' atau
DL=41h
MOV CX,10h ; Banyaknya pengulangan
yang akan
Ulang
:
INT 21h ; Cetak karakter !!
INC DL ; Tambah DL dengan 1
LOOP Ulang ; Lompat ke Ulang
INT 20 h
END Proses
OPERASI PERNAMBAHAN
1. ADD
Sebagai contohnya :
MOV AH,15h ; AH:=15h
MOV AL,4 ; AL:=4
ADD AH,AL ; AH:=AH+AL,
jadi AH=19h
Perlu anda perhatikan
bahwa pada perintah ADD ini antara Tujuan dan Asal harus mempunyai daya tampung
yang sama, misalnya register AH(8 bit) dan AL(8 bit), AX(16 bit) dan BX(16
bit).
Mungkin ada yang
bertanya-tanya, apa yang akan terjadi bila Tujuan tempat hasil penjumlahan
disimpan tidak mencukupi seperti pertambahan 1234h dengan F221h.
1234 h Biner --> 0001
0010 0011 0100
F221 h Biner --> 1111
0010 0010 0001
---------- +
--------------------- +
10455 h 1 0000 0100 0101 0101
Contoh :
MOV AX,1234h ; NIlai
AX:=1234h dan carry=0
MOV BX,0F221h ; Nilai
BX:=F221h dan carry=0
ADD AX,BX ; Nilai AX
menjadi 0455h dan carry=1
2. ADC
Perintah ADC digunakan
dengan cara yang sama pada perintah ADD, yaitu :
ADC Tujuan,Asal
MOV AX,1234h ; AX = 1234h
CF = 0
MOV BX,9ABCh ; BX = 9ABCh
CF = 0
MOV CX,5678h ; BX=5678h CF=0
MOV DX,0DEF0h ;DX=DEF0h CF=0
ADD CX,DX ; CX=3568h CF=1
ADD AX,BX ;AX=AX+BX+CF =ACF1
0 Response to "Perintah Dasar Bahasa Assembly Menggunakan Emulator 8086"
Catat Ulasan
good