- 1
Зачем простенькие проги, написанные на MASM коннектятся к ip адресу Microsoft 20.99.133.109:443?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Зачем простенькие проги, написанные на MASM коннектятся к ip адресу Microsoft 20.99.133.109:443?
0
includelib C:\Irvine\User32.Lib
includelib C:\Irvine\Kernel32.Lib
includelib D:\masm32\lib\Irvine32.lib
include \masm32\include\Irvine32.inc
; D:/masm32/bin/ml.exe /c /coff "D:\asm\simple.asm"
; D:/masm32\bin\link.exe /subsystem:console "D:\asm\simple.obj"
.data
X Dword ?
A dword ?
B dword ?
M dword ?
.code
main PROC
mov eax, 1
xor ecx , ecx
xor ebx, ebx
strt:
add eax , 1
mov X, eax
push eax
call simple
cmp ebx, 1
pop eax
je ext
call WriteInt
call CrLF
ext:
cmp eax, 50000000
jb strt
exit
main ENDP
Simple PROC uses ecx
Mov A, 1
call Sqrt
Mov A , eax
MOV edx , 2
rn:
;push edx
mov ecx, edx
mov eax , X
mov ebx, edx
xor edx ,edx
div ebx
cmp edx, 0
jne stp
mov ebx ,1
jmp var
stp:
;pop edx
mov edx,ecx
cmp edx, A
inc edx
jb rn
var:
ret
Simple ENDP
Sqrt PROC USES ebx
mov A, 1 ;A = 1
mov eax ,X
push eax
shr EAX, 5
add EAX , 8
Mov B , EAX
pop eax
cmp B,0FFFFh
jbe crt
mov B, 0FFFFh
crt:;do {
mov ebx, B
push A
add A,ebx
shr A, 1
mov ebx, A
pop A
mov M ,ebx
mov eax, ebx
mul ebx
cmp eax , X
jbe opt
Mov eax, M
dec eax
mov B , eax
jmp dz
opt:
mov eax, M
inc eax
mov A , eax
dz:
mov eax, B
cmp eax,A
Jae crt
mov eax , A
dec eax
ret
Sqrt ENDP
END main
Лялька для простых чисел )))))))))
0
ORG $4000
A1=#3C
A2=#3E
A4=$42
AUXMOVE=$C3111
SETUP LDA #<VTOC
STA A1
LDA #>VTOC
STA A1+1
LDA #<END
STA A2
LDA #>END
STA A2+1
LDA #$B0
STA A4
LDA #$B0
STA A4
SEC
JMP AUXMOVE
DS 4
Тому, кто скажет, что это и откуда - ничего.
0
cli
a: jmp a
0
.set XSIZE 96h
.set YSIZE 68h
.org {11h * 2h}
dw @vbi
.org 80h
.include "stdvideo.inc"
process:
mov %cl YSIZE
.loopy:
mov %ch XSIZE
.loopx:
call @processCell
loop %ch @.loopx
loop %cl @.loopy
ret
processCell:
mov %d 0h
mov %bl 3h
.loopy:
mov %bh 3h
.loopx:
mov %e %c
add %e %b
sub %e 0202h
cmp %e %c
ce jmp @.xskip
push %e
mov %bp %sp
call @index2rel
pop %e
cmpb [%e + @data] 0h
cg inc %d
.xskip:
loop %bh @.loopx
loop %bl @.loopy
push %c
mov %bp %sp
call @index2rel
pop %e
mov %al [%e + @data]
movb [%e + @ndata] 0h
cmp %al 0h
cz jmp @.dead
cmp %d 2h
cl ret
cmp %d 3h
cg ret
movb [%e + @ndata] 1h
ret
.dead:
cmp %d 3h
ce movb [%e + @ndata] 1h
ret
fill:
mov %c {XSIZE * YSIZE}
.loop:
mov %b %c
mod %b 100h
div %b 8h
add %b 80h
mov %al [%b]
mov %b %c
mod %b 8h
mov %e 1h
shl %e %b
and %al %el
cnz movb [%c + @data] 1h
loop %c @.loop
ret
render:
call @clsm1
mov %cl YSIZE
.loopy:
mov %ch XSIZE
.loopx:
push %c
mov %bp %sp
call @index2rel
pop %e
cmpb [%e + @data] 1h
cge push %c
cge call @setpixelm1
cge pop
loop %ch @.loopx
loop %cl @.loopy
ret
vbi:
cli
call @render
call @process
mov %c {XSIZE * YSIZE}
.loop:
movb [%c + @data] [%c + @ndata]
loop %c @.loop
rei
T1:
.org {3AAAh + @T1}
data:
.org {XSIZE * YSIZE + @data}
ndata:
https://pastebin.com/6gm30JWR
https://imgur.com/a/uSzbrgZ
игра конвея теперь и на pvc-16!
0
.org 80h
src: db "++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+."
table:
db 0h db 3Eh dw @i1
db 0h db 3Ch dw @i2
db 0h db 2Bh dw @i3
db 0h db 2Dh dw @i4
db 0h db 5Dh dw @i5
db 0h db 2Eh dw @i6
db 0h db 5Bh dw @i7
start: ; %a iptr %b dptr ;
.loop:
mov %cl [%a + @src]
cmp %cl 0h
je @.loop.break
mov %si 0h
.tloop:
mov %ch [4h * %si + {@table + 1h}]
cmp %cl %ch
jne @.tloop.continue
push @.tloop.break
mov %ip [4h * %si + {@table + 2h}]
.tloop.continue:
inc %si
cmp %si 8h
jl @.tloop
.tloop.break:
inc %a
jmp @.loop
.loop.break:
int 0h
i1: ; > ;
inc %b ret
i2: ; < ;
dec %b ret
i3: ; + ;
push %el
mov %el [%b + @data]
inc %el
mov [%b + @data] %el
pop %el
ret
i4: ; - ;
push %el
mov %el [%b + @data]
dec %el
mov [%b + @data] %el
pop %el
ret
i5: ; ] ;
push %c
mov %cl [%b + @data]
cmp %cl 0h
je @.loop.break
mov %c 0h
dec %a
.loop:
cmpb [%a + @src] 5Dh ; ']' ;
jne @.loop.1
inc %c
.loop.1:
cmpb [%a + @src] 5Bh ; '[' ;
jne @.loop.2
cmp %c 0h
jz @.loop.break
dec %c
.loop.2:
loop %a @.loop
.loop.break:
pop %c
ret
i6: ; . ;
push %cl
outb E9h [%b + @data]
.wait:
inb %cl E9h
cmp %cl 0h
jne @.wait
pop %cl
ret
i7: ; [ ;
push %c
mov %c [%b + @data]
cmp %c 0h
jne @.loop.break
mov %c 0h
.loop:
cmpb [%a + @src] 5Bh ; '[' ;
jne @.loop.1
inc %c
.loop.1:
cmpb [%a + @src] 5Dh ; ']' ;
jne @.loop.2
cmp %c 0h
jz @.loop.break
dec %c
.loop.2:
inc %a
jmp @.loop
.loop.break: pop %c ret
Hello World!
0
.org {5h * 2h}
dw @int5
.org 30h
data:
db "10"
.org 80h
start:
mov %sp FFFFh
mov %al {3h * 2h}
int 5h
int 0h
int5:
push %a
mov %ah [{@data + 1h}]
add %al %ah
outb E9h %al
.wait:
inb %al E9h
cmp %al 0h
jne @.wait
pop %a
rei
встречайте новую фичу
0
vbi:
mov %al [<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="596d1977342a3c2d">[email protected]</a>]
inc %al
mov [<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d8ec98f6b5abbdac">[email protected]</a>] %al
.mset: memset [@T1] 3A98h 0h
rei
0
.org 80h
inc:
push %bp
mov %bp %sp
sub %sp 0010h
mov [%bp + FFFEh] %sp
mov [%bp + FFFCh] %b
lea %a [%bp + FFFCh]
mov %a [%a]
push %a
inc %a
pop %si
mov [%si] %a
jmp @.return.inc
.return.inc:
mov %sp %bp
pop %bp
ret
main:
push %bp
mov %bp %sp
sub %sp 0010h
mov [%bp + FFFCh] %sp
memset [%bp + FFFEh] 0002h 0h
lea %a [%bp + FFFEh]
push %a
mov %a 0000h
pop %si
mov [%si] %a
.L.begin.1:
mov %a 0001h
cmp %a 0h
jz @.0
lea %a [%bp + FFFEh]
push %a
pop %b
call @inc
push %a
mov %a 0050h
pop %si
cmp %si %a
jgz @.compare3
mov %al 1h
.compare3:
mov %ah 0h
cmp %a 0h
jz @.else.2
jmp @.0
jmp @.end.2
.else.2:
.end.2:
.1:
jmp @.L.begin.1
.0:
.return.main:
mov %sp %bp
pop %bp
ret
start:
mov %sp FFFFh
call @main
.return.start:
int 0h
<-------------------->
short inc(short* i)
{
return ++(*i);
}
void main(void)
{
short i = 0s;
while(1)
{
if(inc(&i) > 0x50)
break;
}
}
void start(void)
{
asm("mov %sp FFFFh");
main();
}
да что вы знаете о неоптимизированном коде
0
; %ch - x1, %cl - y1, %dh - x2, %dl - y2 ;
drawline:
push %a
push %b
push %c
push %d
push %e
mov %al %dh
sub %al %ch
call @abs
mov %ah %al ; ah - dX ;
mov %al %dl
sub %al %cl
call @abs
neg %al ; al - -dY ;
mov %bh FFh ; bh - signX;
mov %bl FFh ; bl - signY ;
cmp %ch %dh
jgz @.S1
neg %bh
.S1:
cmp %cl %dl
jgz @.S2
neg %bl
.S2:
mov %el %ah
add %el %al ; el - error ;
push %d
call @drawpixel
pop %d
.loop:
cmp %ch %dh
jnz @.L1
cmp %cl %dl
jnz @.L1
jmp @.loop_end
.L1:
push %c
call @drawpixel
pop %c
mov %eh %el
cmp %eh %al
jng @.L2
add %el %al
add %ch %bh
.L2:
cmp %eh %ah
jgz @.loop
add %el %ah
add %cl %bl
jmp @.loop
.loop_end:
pop %e
pop %d
pop %c
pop %b
pop %a
ret
https://pastebin.com/k8697fae
алгоритм брезенхема.
результат: https://imgur.com/a/c1twuNt
забавно что посреди тестов программа выдала красивые такие кривые на весь экран. с.м. имгур, приложил.