Biztos jó okod van rá, hogy assembly-ben programozz. Én kb. 30 éve tettem így utoljára 🙂 és nem sírom vissza. 🙂
________________________________ Feladó: Techinfo <[email protected]>, meghatalmazó: Zsolt Nagy via Techinfo <[email protected]> Elküldve: 2023. december 1., péntek 16:36 Címzett: Techinfo <[email protected]> Másolatot kap: Zsolt Nagy <[email protected]> Tárgy: Re: [Techinfo] asm 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 ________________________________ Feladó: Techinfo <[email protected]>, meghatalmazó: Zsolt Nagy via Techinfo <[email protected]> Elküldve: 2023. december 1., péntek 16:36 Címzett: Techinfo <[email protected]> Másolatot kap: Zsolt Nagy <[email protected]> Tárgy: Re: [Techinfo] asm 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/
