Dosen : Indra Gunawan, ST.,
M.Kom., CEH., CHFI
MODUL ASSEMBLY LANJUT
SEKOLAH TINGGI TEKNIK IBNU SINA BATAM
2018
MODUL PRAKTIKUM ASSEMBLY
1
PRAKATA
Untuk mendapatkan buku yang membahas Bahasa pemrograman Assembly secara mudah
dengan disertai diagram alir, maka dapat membaca buku saya secara gratis di internet, silakan
dilihat pada halaman referensi (Gunawan, 2019).
I.
INPUT KEYBOARD
1.1 PROGRAM #1, INTERUPT 21 SERVICE 1H
.model small
.code
org 100h
proses:
mov ah,1h ; read input with echo
mov dl, al
int 21h
loop proses
int 20h
end proses
1.2 PROGRAM #2, INTERUPT 21 SERVICE 0H
.model small
.code
org 100h
proses:
mov ah,0h ;get keystroke without buffer, al : ascii
int 16h
cmp al,00
je extended
jne biasa
extended:
mov ah,02h
mov dl,al
int 21h
loop proses
biasa:
mov ah,02h
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
2
mov dl,al
int 21h
loop proses
end proses
1.3 PROGRAM #3, INTERUPT 21 SERVICE 0H
.model small
.code
org 100h
datadeh :jmp mulai
var db 9,?,9 DUP(?)
mulai:
mov ah, 0ah ; only running in dosbox
lea dx, var
int 21h
lea bx, var+2
print:
mov ah,02h
mov dl,[bx]
int 21h
int 20h
end datadeh
1.4 PROGRAM #4, TUGAS
Modifikasi Program #3, untuk mencetak nama masing-masing
dipisah enter
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
3
II.
INPUT KEYBOARD LANJUT
2.1 PROGRAM #5, INTERUPT 21 SERVICE 0H
.model small
.code
org 100h
data :jmp proses
var db 23,?,23 DUP(?)
proses:
mov ah, 0ah ; only running in dosbox
lea dx, var
int 21h
xor bx,bx
lea cx, var + 1
mov ah,02h
cetak :
mov dl,var + 2
int 21h
inc bx
loop cetak
int 20h
end data
2.2 PROGRAM #6, TUGAS
Modifikasi program #5, buat 3 variabel berisi 2 jurusan,
jika diinput xxx muncul jurusan pertama, jika diinput yyy
muncul jurusan kedua.
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
4
III.
PROCEDURE
3.1 PROGRAM #7, MENCETAK HURUF MENGGUNAKAN PROCEDURE
.model small
.code
org 100h
;################## PROCEDURE
cetak proc near
mov ah,02h
mov dl, 'z'
int 21h
ret
cetak endp
;################## PROCEDURE
proses :
call cetak
int 20h
end proses
3.2 Program #8, Mencetak huruf menggunakan procedure
.model small
.code
org 100h
;################## PROCEDURE
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
5
cetak1 proc near
mov ah,02h
mov dl, var[0]
int 21h
cetak1 endp
cetak2 proc near
mov ah,02h
mov dl, var[1]
int 21h
cetak2 endp
cetak3 proc near
mov ah,02h
mov dl, var[2]
int 21h
cetak3 endp
cetak4 proc near
mov ah,02h
mov dl, var[3]
int 21h
ret
cetak4 endp
;################## PROCEDURE
data: jmp proses
var db 'satu'
proses:
call cetak1
call cetak2
call cetak3
call cetak4
int 20h
end data
3.3 PROGRAM #9, TUGAS
MODIFIKASI PROGRAM #7 ATAU #8, BUAT PROGRAM ASSEMBLY UNTUK
MENCETAK KALIMAT MENGGUNAKAN PROCEDURE.
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
6
IV.
MACRO
4.1 PROGRAM #10, PENGGUNAAN MACRO UNTUK MENCETAK HURUF
;########### MACRO ############
cetak macro x
mov ah,02h
mov dl,x
int 21h
endm
;########### MACRO ############
.model small
.code
org 100h
proses :
cetak 'a'
cetak 'k'
cetak 'u'
int 20h
end proses
4.2 PROGRAM #11, PENGGUNAAN MACRO UNTUK OPERASI ARITMATIKA
;################## MACRO
hitung macro x, y, z
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
7
mov
mov
add
add
mul
ax,
bx,
ax,
bx,
bx
x
y
bx
z
endm
;################## MACRO
.model small
.code
org 100h
proses:
hitung 123h, 234h, 345h
int 20h
end proses
4.3 PROGRAM #12, PENGGUNAAN MACRO UNTUK MENCETAK HURUF
;################## MACRO
cetak macro x
mov ah,02h
mov dl, x
int 21h
endm
;################## MACRO
.model small
.code
org 100h
proses :
cetak 'z'
int 20h
end proses
4.4 PROGRAM #13, PENGGUNAAN MACRO MULTI VARIABLE
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
8
;################## MACRO
cetak macro x, y, z, a
mov dl, x
int 21h
mov dl, y
int 21h
mov dl, z
int 21h
mov dl, a
int 21h
endm
;################## MACRO
.model small
.code
org 100h
data:jmp proses
var db 'satu'
proses :
mov ah,02h
cetak var[0], var[1], var[2], var[3]
int 20h
end data
4.4 TUGAS
Buatlah program assembly menggunakan macro untuk mencetak 3 kalimat dipisah enter
Contoh : Yayasan Yapista
STT Ibnu Sina Batam
Teknik Informatika
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
9
V.
5.1 PROGRAM #14,
OPERASI LAYAR
MENCETAK 1 HURUF MENGGUNAKAN MEMORY LAYAR
cetak macro x,y,kal,atr
MOV AX,0B800h
MOV ES,AX ; ES Menunjuk pada segment layar
MOV
MOV
MUL
MOV
AH,Y
AL,160
AH ; Hitung offset baris
BX,AX ; Simpan hasilnya pada BX
MOV AH,X
MOV AL,2
MUL AH ; Hitung offset kolom
ADD BX,AX ; Tambahkan hasilnya pada BX
MOV AL,Kal ; AL=karakter yang akan ditampilkan
MOV AH,Atr ; AH=Atribut yang akan ditampilkan
MOV ES:BX, AL ; Tampilkan Karakter dan atributnya
MOV ES:BX+1,AH ; pada posisi kolom X dan baris Y
ENDM
;############### MACRO ###########
.MODEL SMALL
.CODE
ORG 100h
Proses :
cetak 40 23 'A' 95
INT 20h ;
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
10
END Proses
5.2 PROGRAM #15,
MENCETAK BANYAK HURUF MENGGUNAKAN MEMORY LAYAR
cetak macro x,y,kal,atr
MOV AX,0B800h
MOV ES,AX ; ES Menunjuk pada segment layar
MOV
MOV
MUL
MOV
AH,Y
AL,160
AH ; Hitung offset baris
BX,AX ; Simpan hasilnya pada BX
MOV AH,X
MOV AL,2
MUL AH ; Hitung offset kolom
ADD BX,AX ; Tambahkan hasilnya pada BX
MOV AL,Kal ; AL=karakter yang akan ditampilkan
MOV AH,Atr ; AH=Atribut yang akan ditampilkan
MOV ES:BX, AL ; Tampilkan Karakter dan atributnya
MOV ES:BX+1, AH ; pada posisi kolom X dan baris Y
ENDM
;############### MACRO ###########
.MODEL SMALL
.CODE
ORG 100h
Proses :
cetak 40
cetak 41
cetak 42
cetak 40
cetak 41
cetak 42
15
15
15
17
17
17
'S'
'T'
'T'
'I'
'B'
'N'
95
97
65
23
35
63
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
11
cetak 43 17
cetak 40 19
cetak 41 19
cetak 42 19
cetak 43 19
END Proses
INT 20h
5.3 PROGRAM #16,
'U'
'S'
'I'
'N'
'A'
58
14
37
33
48
MENCETAK ANIMASI MENGGUNAKAN MEMORY LAYAR
Delay MACRO x
LOCAL Ulang
mov dx, x
Ulang:
dec dx
cmp dx,0
jne ulang
ENDM
cetak macro x,y,kal,atr
MOV AX,0B800h
MOV ES,AX ; ES Menunjuk pada segment layar
MOV
MOV
MUL
MOV
AH,Y
AL,160
AH ; Hitung offset baris
BX,AX ; Simpan hasilnya pada BX
MOV AH,X
MOV AL,2
MUL AH ; Hitung offset kolom
ADD BX,AX ; Tambahkan hasilnya pada BX
MOV AL,Kal ; AL=karakter yang akan ditampilkan
MOV AH,Atr ; AH=Atribut yang akan ditampilkan
MOV ES:BX, AL ; Tampilkan Karakter dan atributnya
MOV ES:BX+1, AH ; pada posisi kolom X dan baris Y
ENDM
;############### MACRO ###########
.MODEL HUGE
.CODE
ORG 100h
Proses :
cetak 40 15 'S' 95
cetak 41 15 'T' 97
cetak 42 15 'T' 65
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
12
cetak 43 15 ' '
;delay 1111h
cetak 40 15 'I'
cetak 41 15 'B'
cetak 42 15 'N'
cetak 43 15 'U'
;delay 1111h
58
cetak 40 15 'S'
cetak 41 15 'I'
cetak 42 15 'N'
cetak 43 15 'A'
;delay 1111h
jmp proses
INT 20h
end Proses
14
37
33
48
5.4 PROGRAM #17,
23
35
63
58
TUGAS
5.5 MODIFIKASI PROGRAM #16, UBAH AGAR PROGRAM TERSEBUT DAPAT
MENGHITUNG BILANGAN PERTAMBAHAN, PENGURANGAN, DAN PERKALIAN
BANYAK BILANGAN SECARA SEKUENSIAL.
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
13
VI.
6.1 PROGRAM #18,
OPERASI LAYAR LANJUT
MENCETAK ANIMASI KALIMAT MENGGUNAKAN MEMORY
LAYAR
Delay MACRO x
LOCAL Ulang
mov dx,0h
Ulang:
inc dx
cmp dx,x
je ulang
ENDM
cetak macro x,y,kal,atr
MOV AX,0B800h
MOV ES,AX ; ES Menunjuk pada segment layar
MOV
MOV
MUL
MOV
AH,Y
AL,160
AH ; Hitung offset baris
BX,AX ; Simpan hasilnya pada BX
MOV AH,X
MOV AL,2
MUL AH ; Hitung offset kolom
ADD BX,AX ; Tambahkan hasilnya pada BX
MOV AL,kal ; AL=karakter yang akan ditampilkan
MOV AH,atr ; AH=Atribut yang akan ditampilkan
MOV ES:BX,AL ; Tampilkan Karakter dan atributnya
MOV ES:BX+1,AH ; pada posisi kolom X dan baris Y
ENDM
;############### MACRO ###########
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
14
.MODEL SMALL
.CODE
ORG 100h
data:
jmp proses
var db 'Yayasan Ibnu Sina Batam'
warna db 0fh
kolom db 017h
baris db 0fh
proses:
; Setiap selesai cetak kalimat, nol kan bx, set ulang
kolom ke 40d
xor bx,bx
mov ah,017h
mov kolom,ah
proses3:
push bx ; menyimpan nilai bx untuk dipakai lg
mov dl,var[bx]
cetak kolom baris dl warna
pop bx ; isi bx dari stack
; naikkan nilai warna
xor ah,ah
mov ah,warna
add ah,0Ah
mov warna,ah
; naikkan nilai kolom
xor ah,ah
mov ah,kolom
add ah,01h
mov kolom,ah
; sleep program dgn loop sebanyak 1111x
terlihat
delay 0fffh
agar animasi
;naikkan nilai bx
inc bx
cmp bx,017H
push bx
je proses
loop proses3
loop proses
INT 20h
end data
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
15
VII.
7.1 PROGRAM #19,
MANIPULASI STRING
PENGULANGAN PADA STRING
.MODEL SMALL
.CODE
ORG 100h
TData: JMP Proses
Kalimat DB 'Donald Duck$' ; 12 karakter
Buffer DB 12 DUP(?)
Proses:
LEA SI,Kalimat ; SI = sumber
LEA DI,Buffer ; DI = tujuan
CLD ; Arah proses menaik
MOV CX,18 ; Banyaknya pengulangan
REP MOVSB ; ES:Buffer,Kalimat
; Pindahkan data
; 'kalimat' ke 'Buffer'
MOV AH,09 ;
LEA DX,Buffer ;
INT 21h ; Cetak Data pada Buffer
INT 20h
END TData
7.2 PROGRAM #20,
PERBANDINGAN PADA STRING
Cetak_Klm MACRO Kal
MOV AH,09
LEA DX,Kal ; Macro untuk mencetak kalimat
INT 21h
ENDM
.MODEL SMALL
.CODE
ORG 100h
TData: JMP Proses
Kal1 DB 'akjsdfhakjvhdf'
Kal2 DB 'akjsdfhakPvhdf'
Pesan1 DB 'Kedua kalimat yang dibandingkan sama ! $'
Pesan2 DB 'Kedua kalimat yang dibandingkan tidak
sama !$'
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
16
Proses:
LEA SI,Kal1
LEA DI,Kal2
CLD ; Arah proses menaik
MOV CX,14 ; Banyaknya perbandingan dilakukan
Ulang:
REP CMPSB ; Bandingkan selama sama
JNE TdkSama ; Jika tidak sama, lompat ke TdkSama
Cetak_Klm Pesan1 ; Cetak pesan tidak sama
JMP EXIT ; Selesai
TdkSama:
Cetak_Klm Pesan2 ; Cetak pesan sama
EXIT:
INT 20h
END TData
7.3 PROGRAM #21,
OPERASI SCAN PADA STRING
Cetak_Klm MACRO Kal
MOV AH,09 ;
LEA DX,Kal ;
INT 21h ; Macro untuk mencetak kalimat
ENDM
.MODEL SMALL
.CODE
ORG 100h
TData: JMP Proses
Cari DB 'akddtiuerndfalDfhdadfbn' ; 24 buah karakter
Ketemu DB ' Karakter ''s''yang dicari ketemu ! $'
Tidak DB ' Karakter ''s'' yang dicari tidak ketemu ! $'
Proses:
LEA DI,Cari ; Lokasi dari string yang diScan
MOV AL,'s' ; Karakter yang dicari
MOV CX,24 ; Banyaknya proses Scan
REPNE SCASB ; Scan sebanyak CX atau sampai ZF=1
JNZ Tdk_Ada ; Jika tidak ketemu, maka lompat!
Cetak_Klm Ketemu ; Cetak ketemu
JMP Exit ; Habis
Tdk_Ada:
Cetak_Klm Tidak ; Cetak tidak ketemu
EXIT: INT 20h ; Selesai
END TData
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
17
VIII.
OPERASI BILANGAN
8.1 PROGRAM #20,
MENCETAK ANGKA DESIMAL
.MODEL SMALL
.CODE
ORG 100h
TData:
JMP Proses
Test_Angka DW 65535 ; Angka yang akan dicetak
Proses:
MOV AX,Test_Angka ; AX = angka yang akan dicetak
MOV BX,10 ; BX = penyebut
XOR CX,CX ; CX = 0
Ulang:
XOR DX,DX ; Cegah sisa bagi menjadi pembilang !
DIV BX ; Bagi angka yang akan dicetak dengan 10
PUSH DX ; Simpan sisa bagi dalam stack
INC CX ; CX ditambah 1
CMP AX,0 ; Apakah hasil bagi sudah habis ?
JNE Ulang ; Jika belum, ulangi lagi !
Cetak:
POP DX ; Ambil 1 angka yang disimpan
ADD DL,'0' ; Ubah angka tersebut dalam kode ASCII
MOV AH,02 ;
INT 21h ; Cetak angka tersebut
LOOP Cetak ; ulangi
INT 20h
END Tdata
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
18
8.2 PROGRAM #21,
MENCETAK ANGKA HEXADESIMAL
Cetak MACRO
MOV DL,Tabel_Hex[BX] ; MACRO untuk
MOV AH,02 ; mencetak
INT 21h ; huruf ke BX pada tabel_Hex
ENDM
.MODEL SMALL
.CODE
ORG 100h
TData:
JMP Proses
Tabel_Hex DB '0123456789ABCDEF'
Test_Angka DB 255 ; Angka yang akan dicetak 255=FFh
Proses:
SUB BH,BH ; Jadikan BH=0
MOV BL,Test_Angka ; BL = angka yang akan dicetak
PUSH BX ; Simpan angka tersebut
MOV CL,4 ; Ambil 4 bit tinggi dari +
SHR BL,CL ; BL untuk dicetak
Cetak ; Cetak 1 angka hexa tingginya
POP BX ; Ambil angka yang disimpan
AND BL,0Fh ; Ambil 4 bit rendah dari +
Cetak ; BL untuk dicetak
INT 20h
END Tdata
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
19
IX.
9.1 PROGRAM #22,
AKSES FILE
MACRO UNTUK MEMBACA FILE
Read MACRO Handle,Number,Buffer
PUSH BX
PUSH CX
PUSH DX
MOV AH,3Fh
MOV BX,Handle
MOV CX,Number
LEA DX,Buffer
INT 21h
POP DX
POP CX
POP BX
ENDM
9.2 PROGRAM #23,
MACRO UNTUK MEMBUAT FILE
Create MACRO NamaFile, Attribut, Handle
PUSH CX
PUSH DX
MOV AH,3Ch
MOV CX,Attribut
LEA DX,NamaFile
INT 21h
MOV Handle,AX
POP DX
POP CX
ENDM
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
20
9.3 PROGRAM #24,
MENGHAPUS FILE
Delete MACRO Nama
MOV AH,41h ; Servis untuk menghapus file
LEA DX,Nama ; DS:DX menunjuk pada nama file
INT 21h
ENDM
.MODEL SMALL
.CODE
ORG 100h
TData: JMP Proses
Error DB ' Sorry, File anda tidak bisa dihapus !',13,10
DB ' Anda harus menggunakan parameter ',13,10
DB ' seperti:
DB ' C:\> Hapus FILE_X ',13,10,10
DB ' untuk menghapus file FILE_X $'
Proses: MOV DI,80h ; Alamat awal parameter
MOV AL,0Dh ; Karakter Enter
REPNE SCASB ; Cari karakter Enter
DEC DI ; DI menunjuk karakter Enter
MOV AL,0 ; Jadikan ASCIIZ
STOSB ; Letakkan byte 0 pada DS:[DI]
MOV DI,82h ; Awal String
Delete [DI] ; Hapus file parameter
JNC Exit ; Jika tidak ada kesalahan, Habis
MOV AH,09 ; Jika ada kesalahan
LEA DX,Error ; Tampilkan peringatan !
INT 21h
Exit:
INT 20h
END TData
9.4 PROGRAM #25,
MENULIS PADA FILE
Write MACRO Handle,Number,Buffer
PUSH BX
PUSH CX
PUSH DX
MOV AH,40h
MOV BX,Handle
MOV CX,Number
LEA DX,Buffer
INT 21h
POP DX
POP CX
POP BX
ENDM
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
21
9.5 PROGRAM #26,
MENUTUP FILE
Close MACRO Handle
PUSH BX
MOV AH,3Eh
MOV BX,Handle
INT 21h
POP BX
ENDM
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
22
X.
GRAFIK
11.1 PROGRAM 26# , MEMBUAT GARIS HORIZONTAL DAN VERTIKAL
MENGGUNAKAN INTERUPT 10H SERVICE 013H
Readkey MACRO
MOV AH,00h
INT 16h
ENDM
SetCRT MACRO Mode
MOV AH,00h
MOV AL,Mode
INT 10h
ENDM
PutPixel MACRO X,Y,Warna
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,0Ch ; Servis menggambar pixel
MOV CX,X ; Posisi kolom atau X
MOV DX,Y ; Posisi baris atau Y
MOV AL,Warna ; Atribut Pixel
INT 10h ; Gambar pixel tersebut !
POP DX
POP CX
POP BX
POP AX
ENDM
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
23
GarisV MACRO X1,Y1,Panjang,Warna
LOCAL Ulang
PUSH DX
PUSH CX
push ax
mov ax,X1
MOV DX,Y1
MOV CX,Panjang
Ulang:
PutPixel AX,DX,Warna
INC DX
LOOP Ulang
pop ax
POP CX
POP DX
ENDM
GarisH MACRO X1,Y1,Panjang,Warna
LOCAL Ulang
PUSH DX
PUSH CX
push ax
mov ax,X1
MOV DX,Y1
MOV CX,Panjang
Ulang:
PutPixel ax,DX,Warna
INC ax
LOOP Ulang
pop ax
POP CX
POP DX
ENDM
;/===============================================\;
; Program : GRAPH0.ASM ;
; Author : S’to ;
; Fungsi : Menggambar garis vertical ;
; dan horisontal ;
;\===============================================/;
.MODEL small
.CODE
ORG 100h
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
24
Proses:
SetCRT 013h ; Aktifkan mode grafik 13h
GarisH 250,50,50,12 ; Gambar garis Horisontal
GarisV 250,50,50,12 ; Gambar garis Vertikal
SetCRT 03h ; Kembali pada mode Dos
INT 20h
END Proses
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
25
11.2 PROGRAM 27# , MEMBUAT OBYEK TULISAN DENGAN GARIS
Readkey MACRO
MOV AH,00h
INT 16h
ENDM
SetCRT MACRO Mode
MOV AH,00h
MOV AL,Mode
INT 10h
ENDM
PutPixel MACRO X,Y,Warna
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,0Ch ; Servis menggambar pixel
MOV CX,X ; Posisi kolom atau X
MOV DX,Y ; Posisi baris atau Y
MOV AL,Warna ; Atribut Pixel
INT 10h ; Gambar pixel tersebut !
POP DX
POP CX
POP BX
POP AX
ENDM
GarisV MACRO X1,Y1,Panjang,Warna
LOCAL Ulang
PUSH DX
PUSH CX
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
26
push ax
mov ax,X1
MOV DX,Y1
MOV CX,Panjang
Ulang:
PutPixel AX,DX,Warna
INC DX
LOOP Ulang
pop ax
POP CX
POP DX
ENDM
GarisH MACRO X1,Y1,Panjang,Warna
LOCAL Ulang
PUSH DX
PUSH CX
push ax
mov ax,X1
MOV DX,Y1
MOV CX,Panjang
Ulang:
PutPixel ax,DX,Warna
INC ax
LOOP Ulang
pop ax
POP CX
POP DX
ENDM
GambarObyek MACRO
; S
GarisH
GarisV
GarisH
GarisV
GarisH
; buat object 3 kubus
150,50,50,12
150,50,50,15
150,100,50,13
200,100,50,15
150,150,50,12
; T
GarisH 460,50,50,14
GarisV 485,50,100,13
; T
GarisH 540,50,50,12
GarisV 560,50,100,12
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
27
ENDM
;/===============================================\;
; Author : Indra ;
; Fungsi : Menggambar object dengan garis ;
;\===============================================/;
.MODEL SMALL
.CODE
ORG 100h
Proses:
SetCRT 13h ; Aktifkan mode grafik 13h
GambarObyek
readkey
SetCRT 03h ; Kembali pada mode Dos
INT 20h
END Proses
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
28
XI.
GRAFIK LANJUT
12. 1 MENGGAMBAR OBYEK BEBAS, PROGRAM #28
10H /SERVICE 13H
MENGGUNAKAN INTERRUPT
Readkey MACRO ; Untuk menunggu masukan dari
MOV AH,00 ; Keyboard
INT 16h
ENDM
SetCRT MACRO Mode ; Untuk merubah mode layar
MOV AH,00 ;
MOV AL,Mode ;
INT 10h
ENDM
Pixel MACRO X,Y,Warna ; Untuk menggambar pixel
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,12 ; Servis menggambar pixel
MOV CX,X ; Posisi kolom atau X
MOV DX,Y ; Posisi baris atau Y
MOV AL,Warna ; Atribut Pixel
INT 10h ; Gambar pixel tersebut !
POP DX
POP CX
POP BX
POP AX
ENDM
;/====================================================\;
; Program : ANIMATE1.ASM ;
; Author : S’to ;
; Fungsi : Menggambar helikopter ;
;\====================================================/;
.MODEL SMALL
.CODE
ORG 100h
TData : JMP Proses
Gambar DW 0000000000000000b,0000000000000000b
DW 0000000000011111b,1111100000000000b
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
29
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
0000000000100000b,0000010000000000b
0000000001000110b,0110010000000000b
0011000000101110b,0111010000001100b
0011100000100110b,0110001000011100b
0011110001000000b,0000001000111100b
0011111100000000b,0000000011111100b
0011111000000000b,0000000000001100b
0011010000000000b,0000000000101100b
0011001000000000b,0000000001001100b
0011000100000000b,0000000010001100b
0011000001111111b,1111111000001100b
0000000000000000b,0000000000000000b
0000000000000000b,0000000000000000b
0000000000000000b,0000000000000000b
0000000000011111b,1111100000000000b
0000000000100000b,0000010000000000b
0000000001000110b,0110010000000000b
0011000000101110b,0111010000001100b
0011100000100110b,0110001000011100b
0011110001000000b,0000001000111100b
0011111100000000b,0000000011111100b
0011111000000000b,0000000000001100b
0011010000000000b,0000000000101100b
0011001000000000b,0000000001001100b
0011000100000000b,0000000010001100b
0011000001111111b,1111111000001100b
0000000000000000b,0000000000000000b
0000000000000000b,0000000000000000b
0000000000000000b,0000000000000000b
0000000000011111b,1111100000000000b
0000000000100000b,0000010000000000b
0000000001000110b,0110010000000000b
0011000000101110b,0111010000001100b
0011100000100110b,0110001000011100b
0011110001000000b,0000001000111100b
0011111100000000b,0000000011111100b
0011111000000000b,0000000000001100b
0011010000000000b,0000000000101100b
0011001000000000b,0000000001001100b
0011000100000000b,0000000010001100b
0011000001111111b,1111111000001100b
0000000000000000b,0000000000000000b
0000000000000000b,0000000000000000b
PosX DW 100 ; Posisi awal X
PosY DW 30 ; Posisi awal Y
Proses:
SetCRT 13h ; Aktifkan mode grafik
SUB BX,BX ;
MOV CX,45 ; CX=banyaknya baris
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
30
Ulang1:
PUSH CX
MOV CX,2 ; CX=banyaknya Word dalam 1 baris
Ulang2:
PUSH CX
MOV CX,16 ; CX=Banyaknya bit dalam 1 word
MOV AX,1000000000000000b
Ulang3:
PUSH AX
AND AX,Gambar[BX] ; Test bit Gambar yang ke AX
JZ Nol ; Jika nol, lompat
Pixel PosX,PosY,83 ; Jika tidak, gambar pixel
Nol:
POP AX ;
SHR AX,1 ;
INC PosX ; Tambah posisi X
LOOP Ulang3 ; Test bit Gambar berikutnya
ADD BX,2 ; Akses word berikutnya
POP CX
LOOP Ulang2 ; Test word berikutnya
INC PosY ;
SUB PosX,32 ; Kembalikan posisi X mula-mula
POP CX
LOOP Ulang1 ; Test word pada baris berikutnya
Exit:
Readkey
SetCRT 03h ; Aktifkan Mode default Dos
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
31
12. 2 MENGGAMBAR ANIMASI OBYEK BEBAS, PROGRAM #29 MENGGUNAKAN
INTERRUPT 10H /SERVICE 13H DENGAN KONTROL KEYBOARD
SetCRT MACRO Mode ; Untuk merubah mode layar
MOV AH,00 ;
MOV AL,Mode ;
INT 10h
ENDM
Pixel MACRO X,Y,Warna ; Untuk menggambar pixel
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,12 ; Servis menggambar pixel
MOV CX,X ; Posisi kolom atau X
MOV DX,Y ; Posisi baris atau Y
MOV AL,Warna ; Atribut Pixel
INT 10h ; Gambar pixel tersebut !
POP DX
POP CX
POP BX
POP AX
ENDM
Katak MACRO Gambar,Warna
LOCAL Ulang1,Ulang2,Ulang3,Nol,Ulang0,Ulang
PUSH AX ;
PUSH BX ; Simpan semua register yang
PUSH CX ; digunakan
PUSH DX ;
SUB BX,BX ;
MOV CX,15 ; CX=banyaknya baris
Ulang1:
PUSH CX
MOV CX,2 ; CX=banyaknya Word dalam 1 baris
Ulang2:
PUSH CX
MOV CX,16 ; CX=Banyaknya bit dalam 1 word
MOV AX,1000000000000000b
Ulang3:
PUSH AX
AND AX,Gambar[BX] ; Test bit Gambar yang ke AX
JZ Nol ; Jika nol, lompat
Pixel PosX,PosY,83 ; Jika tidak, gambar pixel
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
32
Nol:
POP AX ;
SHR AX,1 ;
INC PosX ; Tambah posisi X
LOOP Ulang3 ; Test bit Gambar berikutnya
ADD BX,2 ; Akses word berikutnya
POP CX
LOOP Ulang2 ; Test word berikutnya
INC PosY ;
SUB PosX,32 ; Kembalikan posisi X mula-mula
POP CX
LOOP Ulang1 ; Test word pada baris berikutnya
ENDM
BacaKey MACRO data
MOV AH,00d ; Keyboard
INT 16h
Local Kiri, Kanan
CMP AL,64h
JE Kanan
CMP AL,61h
JE Kiri
Kiri:
Katak data,00d
SUB PosX, 20
Katak data,16d
Kanan:
Katak data,00d
ADD PosX, 20
Katak data,48d
ENDM
;/====================================================\;
; Program : ANIMATE1.ASM ;
; Author : Indra ;
; Fungsi : Menggambar Katak ;
;\====================================================/;
.MODEL HUGE
.CODE
ORG 100h
TData: JMP Proses
Data DW 0000000000000000b,0000000000000000b
DW 0000000000011111b,1111100000000000b
DW 0000000000100000b,0000010000000000b
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
33
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
0000000001000110b,0110010000000000b
0011000000101110b,0111010000001100b
0011100000100110b,0110001000011100b
0011110001000000b,0000001000111100b
0011111100000000b,0000000011111100b
0011111000000100b,0010000000001100b
0011010000001100b,0011000000101100b
0011001001110010b,0100111001001100b
0011000111100000b,0000011110001100b
0011000001111111b,1111111000001100b
0000000000000000b,0000000000000000b
0000000000000000b,0000000000000000b
PosX DW 100 ; Posisi awal X
PosY DW 30 ; Posisi awal Y
Proses:
SetCRT 13h ; Aktifkan mode grafik
Katak Data,37d
BacaKey Data
Exit:
; Readkey
SetCRT 03h ; Aktifkan Mode default Dos
INT 20H
End Data
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
34
XII.
TOPIK TERKAIT
Untuk membaca topik-topik lainnya seputar dunia pemrograman, jaringan dan keamanan, silakan
merujuk ke penelitian saya lainnya (Abdilana & Gunawan, 2022; Berliana dkk., 2022; Gunawan,
2014, 2019, 2020, 2021a, 2021b, 2021c, 2021d, 2021e, 2021f, 2021g; Gunawan dkk., 2018;
Gunawan & Yelmi, 2021; Huzaeni & Gunawan, 2022; Indrayana dkk., 2022; Permatasari dkk.,
2018; Pratama dkk., 2022; D. C. Purnomo & Gunawan, 2022; D. Purnomo & Gunawan, 2021; Y
dkk., 2022)
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
35
XIII.
PUSTAKA
Abdilana, R., & Gunawan, I. I. (2022). Implementasi Metode SAW dalam Sistem Pendukung
Keputusan Pemilihan Smartphone Menggunakan Scratch. JIIFKOM (Jurnal Ilmiah Informatika
dan Komputer), 1(1), 35–40.
Berliana, C. D., Saputra, T. A., & Gunawan, I. (2022). Analisis Serangan dan Keamanan pada
Denial of Service (DOS): Sebuah Review Sistematik. JIIFKOM (Jurnal Ilmiah Informatika dan
Komputer), 1(2), 33–38.
Gunawan, I. (2014). I-POLINK: Indonesian Police Link Model Knowledge Management
Investigasi Forensika Digital. https://doi.org/10.13140/RG.2.2.28996.32647
Gunawan, I. (2019). PEMROGRAMAN BAHASA ASSEMBLY MIKROPROSESOR 8086 (1
ed.). Guepedia.
Gunawan, I. (2020). Optimasi Model Artificial Neural Network untuk Klasifikasi Paket Jaringan.
SIMETRIS, 14(2), 1–5. https://doi.org/10.51901/simetris.v14i2.135
Gunawan, I. (2021a). Keamanan Data: Teori dan Implementasi (1 ed.). Jejak.
Gunawan, I. (2021b). Analisis Malware Botnet Proteus Pendekatan Static dan Dinamic.
SIMETRIS, 15(1), 12–17. https://doi.org/10.51901/simetris.v15i01.172
Gunawan, I. (2021c). Analisis Keamanan Data Pada Website Dengan Wireshark. JES (Jurnal
Elektro Smart), 1(1), 16–19.
Gunawan, I. (2021d). Analisis Keamanan Jaringan Wifi Menggunakan Wireshark. JES (Jurnal
Elektro Smart), 1(1), 10–12.
Gunawan, I. (2021e). Analisis Keamanan Wifi Menggunakan Wireshark. JES (Jurnal Elektro
Smart), 1(1), 7–9.
Gunawan, I. (2021f). Analisis Layer Aplikasi (Protokol HTTP) menggunakan Wireshark. JES
(Jurnal Elektro Smart), 1(1), 13–15.
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
36
Gunawan, I. (2021g). Analisis Keamanan Aplikasi Android Non Playstore Dengan Metode Digital
Forensik
Pendekatan
Statis
Dan
Dinamis.
SIMETRIS,
15(2),
29–34.
https://doi.org/10.51901/simetris.v15i2.225
Gunawan, I., Afrina, & Sofrawida, C. (2018). SISTEM PENDUKUNG KEPUTUSAN
PEMILIHAN KARYAWAN TERBAIK PADA LAMOIST LAYERS BATAM. JR : Jurnal
Responsive Teknik Informatika, 2(02), 39–61.
Gunawan, I., & Yelmi, Y. (2021). Rancang Bangun Robot Pengawas Dokumen Berbasis
Raspberry Pi2 dengan Pemrograman Python. Jurnal Ilmu Komputer Dan Bisnis, 12(1), 144–149.
Huzaeni, F., & Gunawan, I. I. (2022). Implementasi Metode SAW dalam Sistem Pendukung
Keputusan Pemilihan Laptop Menggunakan Scratch. JIIFKOM (Jurnal Ilmiah Informatika dan
Komputer), 1(1), 30–34.
Indrayana, T., Warijan, W., Sutarmi, S., Purnomo, D., & Gunawan, I. (2022). Developing systems
application based on android as tool for determinant stunting factors in the COVID-19 pandemic
era.
International
Journal
of
Health
Sciences,
6(S1),
257–268.
https://doi.org/10.53730/ijhs.v6nS1.4763
Permatasari, R. D., Gunawan, I., & Syahputra, M. R. (2018). RANCANG BANGUN APLIKASI
PENANGANAN BAGASI BERBASIS MOBILE WEB PADA PT SRIWIJAYA AIR. Jurnal
Teknik Ibnu Sina (JT-IBSI), 3(1). https://doi.org/10.36352/jt-ibsi.v3i1.101
Pratama, T. I. M., Songida, M. D. F., & Gunawan, I. (2022). Analisis Serangan dan Keamanan
pada SQL Injection: Sebuah Review Sistematik. JIIFKOM (Jurnal Ilmiah Informatika dan
Komputer), 1(2), 27–32.
Purnomo, D. C., & Gunawan, I. I. (2022). Penerapan Metode Simple Additive Weighting (SAW)
Dalam Sistem Pemilihan Kamera Menggunakan Scratch. JIIFKOM (Jurnal Ilmiah Informatika dan
Komputer), 1(1), 16–21.
Purnomo, D., & Gunawan, I. (2021). Decision Support System for Determination of Scholarship
Using Scratch Programming Based on SAW Method. International Journal of Business and
Information Technology, 2, 72–29. https://doi.org/10.47927/ijobit.v2i2
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI
MODUL PRAKTIKUM ASSEMBLY
37
Y, A. K., Alfaren, G., & Gunawan, I. (2022). Analisis Serangan Penetration Testing: Sebuah
Review Sistematik. JIIFKOM (Jurnal Ilmiah Informatika dan Komputer), 1(2), 21–26.
SELESAI
DOSEN PENGAMPU : INDRA GUNAWAN, ST., M.KOM., CEH., CHFI