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/

válasz