Assalamua'alaikum :)
lama sudah gak posting, maklumlah tugas kuliah bnyak numpuk :) langsung saja kali ini saya akan memposting artikel Membuat Animasi Gambar helikopter pada assembly, Pada program sebelumnya, kita selalu menggambar bentuk gambar yang linear. Kini, bila anda ingin menggambar sebuah gambar tak tentu, seperti manusia, tengkorak, tank, bunga atau helikopter, dengan rumus adalah tidak mungkin. Untuk itu salah satu cara yang praktis adalah membentuk suatu tabel gambar. Dari tabel ini kemudian anda lihat secara perBITnya. Bila bit pada data gambar bernilai satu, maka gambarlah sebuah pixel, sebaliknya bila Bit pada data gambar bernilai nol maka pixel tidak digambar. Setelah itu pindahkan posisi X(Kolom) dan test bit berikutnya. Dengan cara demikian anda bisa membuat gambar dalam ukuran yang berapapun, sesuai resolusi monitor anda. Pada program 25.5. akan ditunjukkan, bagaimana membuat sebuah gambar helikopter dengan ukuran 32 bit X 32 bit.
Readkey MACRO ; Untuk menunggu masukan dari keyboard
MOV AH,00 ;
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 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000001110000000b
DW 0000000000000000b,0000000100000000b
DW 0000000011111111b,1111111111111110b
DW 0000000000000000b,0000000100000000b
DW 0000000000000000b,0111111111000000b
DW 1110000000000000b,1111111111100000b
DW 0100000000111111b,1111000100110000b
DW 0111111111111111b,1111000100011000b
DW 0000000000000011b,1111000111111000b
DW 0000000000000000b,0111111111100000b
DW 0000000000000000b,0010000100001000b
DW 0000000000111111b,1111111111110000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 0000000000000000b,0000000000000000b
DW 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,32 ; 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
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
INT 20h
END TData
Bila program dieksekusi, maka pada layar akan ditampilkan sebuah
gambar helikopter (Gambar 25.6). Helikopter ini digambar berdasarkan data
gambar pada variabel "Gambar".
Belum ada tanggapan untuk "Program untuk menampilkan gambar helikopter dengan bahasa assembly"
Post a Comment