All pastes #908489 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-02-18 14:47 UTC
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