[go: up one dir, main page]

Academia.eduAcademia.edu
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