<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Biztos jó okod van rá, hogy assembly-ben programozz. Én kb. 30 éve tettem így utoljára
<span id="🙂">🙂</span> és nem sírom vissza. <span id="🙂">🙂</span><br>
</div>
<div id="appendonsend"></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr style="display: inline-block; width: 98%;">
<div id="divRplyFwdMsg" dir="ltr"><span style="font-family: Calibri, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);"><b>Feladó:</b> Techinfo <techinfo-bounces@lista.edu.hu>, meghatalmazó: Zsolt Nagy via Techinfo <techinfo@lista.edu.hu><br>
<b>Elküldve:</b> 2023. december 1., péntek 16:36<br>
<b>Címzett:</b> Techinfo <techinfo@lista.edu.hu><br>
<b>Másolatot kap:</b> Zsolt Nagy <nagyzsolt80@gmail.com><br>
<b>Tárgy:</b> Re: [Techinfo] asm</span>
<div> </div>
</div>
<div style="direction: ltr;">ez előzőekhez fűzném hozzá</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">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)</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">.model tiny<br>
.code<br>
.386<br>
org 100h<br>
;------------------------- engine ---------------------------<br>
Stripe_Size equ 40<br>
Start:<br>
<br>
mov ax, 4a00h<br>
mov bx, 8192<br>
int 21h<br>
<br>
mov ax, 4800h<br>
mov bx, 40<br>
int 21h<br>
<br>
mov word ptr [pir], ax<br>
add ax, 201<br>
mov word ptr [zol], ax<br>
add ax, 201<br>
mov word ptr [kek], ax<br>
<br>
mov Ax, 13h<br>
int 10h<br>
<br>
mov Cx, 256<br>
xor Ax, Ax<br>
xor Bx, Bx<br>
Null_Color:<br>
Call Szinvaltas<br>
inc Al<br>
Loop Null_Color<br>
;--------------------------------------------------------------<br>
mov dx, offset [Szoveg]<br>
mov ah, 9<br>
int 21h<br>
mov ax, 0a000h<br>
mov es, ax<br>
mov cx, 24000<br>
mov di, cx<br>
novck:<br>
mov ah, es:[di]<br>
or ah, 0<br>
jz novckug<br>
add ah, 52<br>
mov es:[di], ah<br>
novckug:<br>
inc di<br>
loop novck<br>
<br>
mov cx, 4<br>
hanyatl:<br>
push cx<br>
mov di, 24000-640<br>
;xor bh, bh<br>
mov cx, di<br>
Atl:<br>
;xor ah, ah<br>
mov al, es:[di+1]<br>
mov bl, es:[di ]<br>
add ax, bx<br>
mov bl, es:[di+321]<br>
add ax, bx<br>
mov bl, es:[di+320]<br>
add ax, bx<br>
shr ax, 2<br>
mov es:[di], al<br>
inc di<br>
loop Atl<br>
pop cx<br>
loop hanyatl<br>
;---------------------------------------<br>
mov Cx, 200<br>
xor Di, Di<br>
xor al, al<br>
Stripes:<br>
push Cx<br>
mov Cx, 320<br>
StripesX:<br>
mov ah, es:[di]<br>
mov bl, al<br>
cmp ah, 5<br>
jbe OverStripesX<br>
mov bl, ah<br>
add bl, 200<br>
OverStripesX:<br>
mov es:[di], bl<br>
inc Di<br>
loop StripesX<br>
inc al<br>
pop Cx<br>
Loop Stripes<br>
;-----------------------------------------------------------------<br>
mov ax, 08C9h<br>
xor bx, bx<br>
mov cx, 55<br>
ir_Szin:<br>
call szinvaltas<br>
inc ah<br>
add bx, 0101h<br>
inc al<br>
loop ir_szin<br>
;-----------------------------------------------------------------<br>
Main:<br>
mov cx, 200<br>
xor al,al<br>
Null_Blocks:<br>
mov bx, cx<br>
mov es, word ptr[pir]<br>
mov es:[bx], al<br>
mov es, word ptr[zol]<br>
mov es:[bx], al<br>
mov es, word ptr[kek]<br>
mov es:[bx], al<br>
Loop Null_Blocks<br>
<br>
mov cx, Stripe_No<br>
xor bx, bx<br>
Set_Stripe:<br>
push cx<br>
<br>
mov al, Stripe_Y[bx]<br>
xor ah, ah<br>
mov di, ax<br>
<br>
mov cx, Stripe_Size<br>
mov al, Stripe_Pir_V[bx]<br>
mov ah, Stripe_Zol_V[bx]<br>
mov dl, Stripe_Kek_V[bx]<br>
Novel:<br>
mov es, word ptr[pir]<br>
add es:[di], al<br>
mov es, word ptr[zol]<br>
add es:[di], ah<br>
mov es, word ptr[kek]<br>
add es:[di], dl<br>
add al, Stripe_Pir[bx]<br>
add ah, Stripe_Zol[bx]<br>
add dl, Stripe_Kek[bx]<br>
inc di<br>
Loop Novel<br>
mov cx, Stripe_Size<br>
Csokkent:<br>
mov es, word ptr[pir]<br>
add es:[di], al<br>
mov es, word ptr[zol]<br>
add es:[di], ah<br>
mov es, word ptr[kek]<br>
add es:[di], dl<br>
sub al, Stripe_Pir[bx]<br>
sub ah, Stripe_Zol[bx]<br>
sub dl, Stripe_Kek[bx]<br>
inc di<br>
Loop Csokkent<br>
;--------<br>
mov al, Stripe_I [bx]<br>
mov ah, Stripe_Y [bx]<br>
or al, 0<br>
jz Lemegy<br>
dec ah<br>
cmp ah, min_y<br>
ja Kimegy<br>
dec al<br>
jmp Kimegy<br>
Lemegy:<br>
inc ah<br>
cmp ah, max_y<br>
jb Kimegy<br>
inc al<br>
Kimegy:<br>
mov Stripe_I [bx], al<br>
mov Stripe_Y [bx], ah<br>
;--------<br>
inc bl<br>
pop cx<br>
dec cx<br>
jz Out_Set_Stripe<br>
jmp Set_Stripe<br>
Out_Set_Stripe:<br>
;------------<br>
call vertikalas<br>
mov cx, 200<br>
Set_RBG:<br>
mov di, cx<br>
mov al, cl<br>
mov es, word ptr[pir]<br>
mov ah, es:[di]<br>
mov es, word ptr[zol]<br>
mov bl, es:[di]<br>
mov es, word ptr[kek]<br>
mov bh, es:[di]<br>
call szinvaltas<br>
<br>
Loop Set_RBG<br>
;-------------------------- ESC ------------------------------<br>
in al, 60h<br>
xor al, 1h<br>
jz OutMain<br>
jmp Main<br>
;------------------------ Good Bye ---------------------------<br>
OutMain:<br>
mov ax, 3h<br>
int 10h<br>
<br>
mov ax, 0C00h<br>
int 21h<br>
<br>
ret<br>
;------------------------ procedure --------------------------<br>
vertikalas proc<br>
mov dx,3dah<br>
Vert1:<br>
in al,dx<br>
test al,8<br>
jz vert1<br>
Vert2:<br>
in al,dx<br>
test al,8<br>
jnz vert2<br>
ret<br>
endp<br>
;-------------------------------------------------------------<br>
szinvaltas proc<br>
pusha<br>
mov dx, 3c8h<br>
out dx, al<br>
inc dx<br>
<br>
mov al, ah<br>
out dx, al<br>
<br>
mov al, bl<br>
out dx, al<br>
<br>
mov al, bh<br>
out dx, al<br>
popa<br>
ret<br>
endp<br>
;--------------------------- value ---------------------------<br>
<br>
pir dw ?<br>
zol dw ?<br>
kek dw ?<br>
<br>
Stripe_Pir db 1 dup ( 0, 0, 1)<br>
Stripe_Zol db 1 dup ( 0, 1, 0)<br>
Stripe_Kek db 1 dup ( 1, 0, 0)<br>
Stripe_Pir_V db 1 dup ( 0, 0, 8)<br>
Stripe_Zol_V db 1 dup ( 0, 8, 0)<br>
Stripe_Kek_V db 1 dup ( 8, 0, 0)<br>
Stripe_Y db 1 dup ( 0, 120-Stripe_Size, 120-(Stripe_Size*1))<br>
Stripe_I db 1 dup ( 0, 0, 1)<br>
<br>
Stripe_No dw 3<br>
<br>
Min_Y db 0<br>
Max_Y db 200-(Stripe_Size*2)<br>
<br>
Szoveg db 9 dup(10)<br>
db 9,' ÚÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄż', 10, 13<br>
db 9,' ÚÄij ÂÚÄÄÚÄżÚÄÄÚÄżÂ' , 10, 13<br>
db 9,' ĂÄ łĂÄ´ĂÄ ĂÂŮĂÄ ĂÄ´ł' , 10, 13<br>
db 9,' ŔÄÄłÁ ÁŔÄÄÁŔÄŔÄÄÁ ÁŔÄŮ' , 10, 13<br>
db 9,' łÚÄÄÚÄżÚÂż', 10, 13<br>
db 9,' łĂÄ ĂÄ´łłł', 10, 13<br>
db 9,' ÁŔÄÄÁ ÁÁ Á', 36<br>
;------------------------ end of stack -----------------------<br>
ends<br>
end Start</div>
<div id="appendonsend"></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr style="display: inline-block; width: 98%;">
<div id="divRplyFwdMsg" dir="ltr"><span style="font-family: Calibri, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);"><b>Feladó:</b> Techinfo <techinfo-bounces@lista.edu.hu>, meghatalmazó: Zsolt Nagy via Techinfo <techinfo@lista.edu.hu><br>
<b>Elküldve:</b> 2023. december 1., péntek 16:36<br>
<b>Címzett:</b> Techinfo <techinfo@lista.edu.hu><br>
<b>Másolatot kap:</b> Zsolt Nagy <nagyzsolt80@gmail.com><br>
<b>Tárgy:</b> Re: [Techinfo] asm</span>
<div> </div>
</div>
<div style="direction: ltr;">ez előzőekhez fűzném hozzá</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">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)</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">.model tiny<br>
.code<br>
.386<br>
org 100h<br>
;------------------------- engine ---------------------------<br>
Stripe_Size equ 40<br>
Start:<br>
<br>
mov ax, 4a00h<br>
mov bx, 8192<br>
int 21h<br>
<br>
mov ax, 4800h<br>
mov bx, 40<br>
int 21h<br>
<br>
mov word ptr [pir], ax<br>
add ax, 201<br>
mov word ptr [zol], ax<br>
add ax, 201<br>
mov word ptr [kek], ax<br>
<br>
mov Ax, 13h<br>
int 10h<br>
<br>
mov Cx, 256<br>
xor Ax, Ax<br>
xor Bx, Bx<br>
Null_Color:<br>
Call Szinvaltas<br>
inc Al<br>
Loop Null_Color<br>
;--------------------------------------------------------------<br>
mov dx, offset [Szoveg]<br>
mov ah, 9<br>
int 21h<br>
mov ax, 0a000h<br>
mov es, ax<br>
mov cx, 24000<br>
mov di, cx<br>
novck:<br>
mov ah, es:[di]<br>
or ah, 0<br>
jz novckug<br>
add ah, 52<br>
mov es:[di], ah<br>
novckug:<br>
inc di<br>
loop novck<br>
<br>
mov cx, 4<br>
hanyatl:<br>
push cx<br>
mov di, 24000-640<br>
;xor bh, bh<br>
mov cx, di<br>
Atl:<br>
;xor ah, ah<br>
mov al, es:[di+1]<br>
mov bl, es:[di ]<br>
add ax, bx<br>
mov bl, es:[di+321]<br>
add ax, bx<br>
mov bl, es:[di+320]<br>
add ax, bx<br>
shr ax, 2<br>
mov es:[di], al<br>
inc di<br>
loop Atl<br>
pop cx<br>
loop hanyatl<br>
;---------------------------------------<br>
mov Cx, 200<br>
xor Di, Di<br>
xor al, al<br>
Stripes:<br>
push Cx<br>
mov Cx, 320<br>
StripesX:<br>
mov ah, es:[di]<br>
mov bl, al<br>
cmp ah, 5<br>
jbe OverStripesX<br>
mov bl, ah<br>
add bl, 200<br>
OverStripesX:<br>
mov es:[di], bl<br>
inc Di<br>
loop StripesX<br>
inc al<br>
pop Cx<br>
Loop Stripes<br>
;-----------------------------------------------------------------<br>
mov ax, 08C9h<br>
xor bx, bx<br>
mov cx, 55<br>
ir_Szin:<br>
call szinvaltas<br>
inc ah<br>
add bx, 0101h<br>
inc al<br>
loop ir_szin<br>
;-----------------------------------------------------------------<br>
Main:<br>
mov cx, 200<br>
xor al,al<br>
Null_Blocks:<br>
mov bx, cx<br>
mov es, word ptr[pir]<br>
mov es:[bx], al<br>
mov es, word ptr[zol]<br>
mov es:[bx], al<br>
mov es, word ptr[kek]<br>
mov es:[bx], al<br>
Loop Null_Blocks<br>
<br>
mov cx, Stripe_No<br>
xor bx, bx<br>
Set_Stripe:<br>
push cx<br>
<br>
mov al, Stripe_Y[bx]<br>
xor ah, ah<br>
mov di, ax<br>
<br>
mov cx, Stripe_Size<br>
mov al, Stripe_Pir_V[bx]<br>
mov ah, Stripe_Zol_V[bx]<br>
mov dl, Stripe_Kek_V[bx]<br>
Novel:<br>
mov es, word ptr[pir]<br>
add es:[di], al<br>
mov es, word ptr[zol]<br>
add es:[di], ah<br>
mov es, word ptr[kek]<br>
add es:[di], dl<br>
add al, Stripe_Pir[bx]<br>
add ah, Stripe_Zol[bx]<br>
add dl, Stripe_Kek[bx]<br>
inc di<br>
Loop Novel<br>
mov cx, Stripe_Size<br>
Csokkent:<br>
mov es, word ptr[pir]<br>
add es:[di], al<br>
mov es, word ptr[zol]<br>
add es:[di], ah<br>
mov es, word ptr[kek]<br>
add es:[di], dl<br>
sub al, Stripe_Pir[bx]<br>
sub ah, Stripe_Zol[bx]<br>
sub dl, Stripe_Kek[bx]<br>
inc di<br>
Loop Csokkent<br>
;--------<br>
mov al, Stripe_I [bx]<br>
mov ah, Stripe_Y [bx]<br>
or al, 0<br>
jz Lemegy<br>
dec ah<br>
cmp ah, min_y<br>
ja Kimegy<br>
dec al<br>
jmp Kimegy<br>
Lemegy:<br>
inc ah<br>
cmp ah, max_y<br>
jb Kimegy<br>
inc al<br>
Kimegy:<br>
mov Stripe_I [bx], al<br>
mov Stripe_Y [bx], ah<br>
;--------<br>
inc bl<br>
pop cx<br>
dec cx<br>
jz Out_Set_Stripe<br>
jmp Set_Stripe<br>
Out_Set_Stripe:<br>
;------------<br>
call vertikalas<br>
mov cx, 200<br>
Set_RBG:<br>
mov di, cx<br>
mov al, cl<br>
mov es, word ptr[pir]<br>
mov ah, es:[di]<br>
mov es, word ptr[zol]<br>
mov bl, es:[di]<br>
mov es, word ptr[kek]<br>
mov bh, es:[di]<br>
call szinvaltas<br>
<br>
Loop Set_RBG<br>
;-------------------------- ESC ------------------------------<br>
in al, 60h<br>
xor al, 1h<br>
jz OutMain<br>
jmp Main<br>
;------------------------ Good Bye ---------------------------<br>
OutMain:<br>
mov ax, 3h<br>
int 10h<br>
<br>
mov ax, 0C00h<br>
int 21h<br>
<br>
ret<br>
;------------------------ procedure --------------------------<br>
vertikalas proc<br>
mov dx,3dah<br>
Vert1:<br>
in al,dx<br>
test al,8<br>
jz vert1<br>
Vert2:<br>
in al,dx<br>
test al,8<br>
jnz vert2<br>
ret<br>
endp<br>
;-------------------------------------------------------------<br>
szinvaltas proc<br>
pusha<br>
mov dx, 3c8h<br>
out dx, al<br>
inc dx<br>
<br>
mov al, ah<br>
out dx, al<br>
<br>
mov al, bl<br>
out dx, al<br>
<br>
mov al, bh<br>
out dx, al<br>
popa<br>
ret<br>
endp<br>
;--------------------------- value ---------------------------<br>
<br>
pir dw ?<br>
zol dw ?<br>
kek dw ?<br>
<br>
Stripe_Pir db 1 dup ( 0, 0, 1)<br>
Stripe_Zol db 1 dup ( 0, 1, 0)<br>
Stripe_Kek db 1 dup ( 1, 0, 0)<br>
Stripe_Pir_V db 1 dup ( 0, 0, 8)<br>
Stripe_Zol_V db 1 dup ( 0, 8, 0)<br>
Stripe_Kek_V db 1 dup ( 8, 0, 0)<br>
Stripe_Y db 1 dup ( 0, 120-Stripe_Size, 120-(Stripe_Size*1))<br>
Stripe_I db 1 dup ( 0, 0, 1)<br>
<br>
Stripe_No dw 3<br>
<br>
Min_Y db 0<br>
Max_Y db 200-(Stripe_Size*2)<br>
<br>
Szoveg db 9 dup(10)<br>
db 9,' ÚÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄż', 10, 13<br>
db 9,' ÚÄij ÂÚÄÄÚÄżÚÄÄÚÄżÂ' , 10, 13<br>
db 9,' ĂÄ łĂÄ´ĂÄ ĂÂŮĂÄ ĂÄ´ł' , 10, 13<br>
db 9,' ŔÄÄłÁ ÁŔÄÄÁŔÄŔÄÄÁ ÁŔÄŮ' , 10, 13<br>
db 9,' łÚÄÄÚÄżÚÂż', 10, 13<br>
db 9,' łĂÄ ĂÄ´łłł', 10, 13<br>
db 9,' ÁŔÄÄÁ ÁÁ Á', 36<br>
;------------------------ end of stack -----------------------<br>
ends<br>
end Start</div>
</body>
</html>