ez előzőekhez fűzném hozzá
pl. ezt az asm kódot akarom futtatni: (3 darab neon cső (piros, zöld, kék
mozog a képernyőn, és egy szöveg jelenik meg általa)
.model tiny
.code
.386
org 100h
;------------------------- engine ---------------------------
Stripe_Size equ 40
Start:
mov ax, 4a00h
mov bx, 8192
int 21h
mov ax, 4800h
mov bx, 40
int 21h
mov word ptr [pir], ax
add ax, 201
mov word ptr [zol], ax
add ax, 201
mov word ptr [kek], ax
mov Ax, 13h
int 10h
mov Cx, 256
xor Ax, Ax
xor Bx, Bx
Null_Color:
Call Szinvaltas
inc Al
Loop Null_Color
;--------------------------------------------------------------
mov dx, offset [Szoveg]
mov ah, 9
int 21h
mov ax, 0a000h
mov es, ax
mov cx, 24000
mov di, cx
novck:
mov ah, es:[di]
or ah, 0
jz novckug
add ah, 52
mov es:[di], ah
novckug:
inc di
loop novck
mov cx, 4
hanyatl:
push cx
mov di, 24000-640
;xor bh, bh
mov cx, di
Atl:
;xor ah, ah
mov al, es:[di+1]
mov bl, es:[di ]
add ax, bx
mov bl, es:[di+321]
add ax, bx
mov bl, es:[di+320]
add ax, bx
shr ax, 2
mov es:[di], al
inc di
loop Atl
pop cx
loop hanyatl
;---------------------------------------
mov Cx, 200
xor Di, Di
xor al, al
Stripes:
push Cx
mov Cx, 320
StripesX:
mov ah, es:[di]
mov bl, al
cmp ah, 5
jbe OverStripesX
mov bl, ah
add bl, 200
OverStripesX:
mov es:[di], bl
inc Di
loop StripesX
inc al
pop Cx
Loop Stripes
;-----------------------------------------------------------------
mov ax, 08C9h
xor bx, bx
mov cx, 55
ir_Szin:
call szinvaltas
inc ah
add bx, 0101h
inc al
loop ir_szin
;-----------------------------------------------------------------
Main:
mov cx, 200
xor al,al
Null_Blocks:
mov bx, cx
mov es, word ptr[pir]
mov es:[bx], al
mov es, word ptr[zol]
mov es:[bx], al
mov es, word ptr[kek]
mov es:[bx], al
Loop Null_Blocks
mov cx, Stripe_No
xor bx, bx
Set_Stripe:
push cx
mov al, Stripe_Y[bx]
xor ah, ah
mov di, ax
mov cx, Stripe_Size
mov al, Stripe_Pir_V[bx]
mov ah, Stripe_Zol_V[bx]
mov dl, Stripe_Kek_V[bx]
Novel:
mov es, word ptr[pir]
add es:[di], al
mov es, word ptr[zol]
add es:[di], ah
mov es, word ptr[kek]
add es:[di], dl
add al, Stripe_Pir[bx]
add ah, Stripe_Zol[bx]
add dl, Stripe_Kek[bx]
inc di
Loop Novel
mov cx, Stripe_Size
Csokkent:
mov es, word ptr[pir]
add es:[di], al
mov es, word ptr[zol]
add es:[di], ah
mov es, word ptr[kek]
add es:[di], dl
sub al, Stripe_Pir[bx]
sub ah, Stripe_Zol[bx]
sub dl, Stripe_Kek[bx]
inc di
Loop Csokkent
;--------
mov al, Stripe_I [bx]
mov ah, Stripe_Y [bx]
or al, 0
jz Lemegy
dec ah
cmp ah, min_y
ja Kimegy
dec al
jmp Kimegy
Lemegy:
inc ah
cmp ah, max_y
jb Kimegy
inc al
Kimegy:
mov Stripe_I [bx], al
mov Stripe_Y [bx], ah
;--------
inc bl
pop cx
dec cx
jz Out_Set_Stripe
jmp Set_Stripe
Out_Set_Stripe:
;------------
call vertikalas
mov cx, 200
Set_RBG:
mov di, cx
mov al, cl
mov es, word ptr[pir]
mov ah, es:[di]
mov es, word ptr[zol]
mov bl, es:[di]
mov es, word ptr[kek]
mov bh, es:[di]
call szinvaltas
Loop Set_RBG
;-------------------------- ESC ------------------------------
in al, 60h
xor al, 1h
jz OutMain
jmp Main
;------------------------ Good Bye ---------------------------
OutMain:
mov ax, 3h
int 10h
mov ax, 0C00h
int 21h
ret
;------------------------ procedure --------------------------
vertikalas proc
mov dx,3dah
Vert1:
in al,dx
test al,8
jz vert1
Vert2:
in al,dx
test al,8
jnz vert2
ret
endp
;-------------------------------------------------------------
szinvaltas proc
pusha
mov dx, 3c8h
out dx, al
inc dx
mov al, ah
out dx, al
mov al, bl
out dx, al
mov al, bh
out dx, al
popa
ret
endp
;--------------------------- value ---------------------------
pir dw ?
zol dw ?
kek dw ?
Stripe_Pir db 1 dup ( 0, 0, 1)
Stripe_Zol db 1 dup ( 0, 1, 0)
Stripe_Kek db 1 dup ( 1, 0, 0)
Stripe_Pir_V db 1 dup ( 0, 0, 8)
Stripe_Zol_V db 1 dup ( 0, 8, 0)
Stripe_Kek_V db 1 dup ( 8, 0, 0)
Stripe_Y db 1 dup ( 0, 120-Stripe_Size, 120-(Stripe_Size*1))
Stripe_I db 1 dup ( 0, 0, 1)
Stripe_No dw 3
Min_Y db 0
Max_Y db 200-(Stripe_Size*2)
Szoveg db 9 dup(10)
db 9,' ÚÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄż', 10, 13
db 9,' ÚÄij ÂÚÄÄÚÄżÚÄÄÚÄżÂ' , 10, 13
db 9,' ĂÄ łĂÄ´ĂÄ ĂÂŮĂÄ ĂÄ´ł' , 10, 13
db 9,' ŔÄÄłÁ ÁŔÄÄÁŔÄŔÄÄÁ ÁŔÄŮ' , 10, 13
db 9,' łÚÄÄÚÄżÚÂż', 10, 13
db 9,' łĂÄ ĂÄ´łłł', 10, 13
db 9,' ÁŔÄÄÁ ÁÁ Á', 36
;------------------------ end of stack -----------------------
ends
end Start
_______________________________________________
Techinfo mailing list
[email protected]
Fel- és leiratkozás: https://listserv.niif.hu/mailman/listinfo/techinfo
Illemtan: http://www.szag.hu/illemtan.html
Szertár: http://www.szag.hu/weboldal/techinfo/