rendered paste body.686
extrn __read :near
extrn __write :near
extrn _ExitProcess@4 :near
public _main
public _podprogram
public _wys
_DATA SEGMENT dword public 'DATA' use32
x dd 5
y dd 5
z dd 5
cyfry db 10 DUP (0)
_DATA ENDS
_TEXT SEGMENT dword public 'CODE' use32
ASSUME cs:_TEXT, ds:_DATA
_main:
push dword PTR x
push dword PTR y
push dword PTR z
call _podprogram
call _wys
mov ecx, 10
push ecx ; liczba znaków wyświetlanego tekstu
push dword PTR OFFSET cyfry ; położenie obszaru
push dword PTR 1 ; uchwyt urządzenia wyjściowego
call __write ; wyświetlenie znaków
add esp, 12 ; usunięcie parametrów ze stosu
push dword PTR 0 ; kod powrotu programu
call _ExitProcess@4
_podprogram PROC
;push ebp
;mov ebp,esp
enter 1,0
mov eax,[ebp]+16 ;x
mov ebx,[ebp]+12 ;y
mov ecx,[ebp]+8 ;z
mov dword PTR [esp-4],10 ;zmienna lokalna ponizej sladu
mov edi,dword PTR [esp-4]
mul ebx
mul ecx
mul edi
;mov esp,ebp
;pop ebp
leave
ret
_podprogram ENDP
_wys PROC ;kopiowanie liczb 8bajtowych z rejestru EAX do pamieci,
;co umozliwia wyswietlanie tych jebanych liczb
push ebx
push ebp
push esi
push edi
mov ecx, 10 ;licznik obiegu
mov ebx, 9 ;indeks poczatkowy
mov edi, 10
petla:
mov edx, 0
div edi ; dzielenie przez 10
add dl, 30h ; zamiana na ascii
mov cyfry[ebx],dl ; odeslanie kolejnej cyfry
dec ebx ; dekrementacja modyfikatora
loop petla
pop ebx
pop ebp
pop esi
pop edi
ret
_wys ENDP
_TEXT ENDS
END