Skip to content

Instantly share code, notes, and snippets.

@lucansky
Last active January 1, 2016 22:29
Show Gist options
  • Save lucansky/8210218 to your computer and use it in GitHub Desktop.
Save lucansky/8210218 to your computer and use it in GitHub Desktop.
Cvicenie 4 asembler
;**************************************************************
;
; Program HelloWorld - IAS
; FIT VUT v Brne
;
;**************************************************************
; Preklad programu lze provest nasledovne:
; nasm -fobj helloworld.asm
; alink -oPE -subsys console helloworld.obj
; nebo pomoci davky run.bat:
; run.bat hello
;**************************************************************
%include 'rw32.inc' ; nacteni knihovny rw32.inc
[segment .data use32] ; definice zacatku datoveho segmentu
; testovaci retezec
sMessage db "Cvicenie 4",10,13,0
[segment .code use32] ; definice zacatku kodoveho segementu
Func_Stack:
push ebp
mov ebp, esp
; vyhradenie lokalnych
sub esp, 8
pushf
pushad ; vsetky registre do zasobniku
mov eax, [ebp+8] ; 1. nacitanie z parametru A
shl eax, 1 ; 2. nasobenie priamo v registri
mov [ebp-4], eax ; 3. ulozenie hodnoty registra do prvej lokalnej premennej
mov eax, [ebp+12] ; 1. nacitannie z parametru B
shl eax, 1 ; 2. nasobenie v registri
mov [ebp-8], eax ; 3. ulozenie EAX do druhej lokalnej premennej
popad
mov eax, [ebp-4] ; nacitanie lokalnej X
sub eax, [ebp-8] ; odcitanie Y
popf
mov esp, ebp ; vyhodenie lokalnych premennych
pop ebp ; (eip) tam kde ukazuje predtym
ret 8 ; ESP bude ukazovat na prvotnu hodnotu
Soucet:
push ebp
mov ebp, esp
; vyhradenie lokalnych
sub esp,4
pushad ; vsetky registre do zasobniku
;
mov eax, [ebp+8]
add eax, [ebp+12]
mov [ebp-4], eax
popad
mov eax, [ebp-4]
; vyhodenie lokalnych premennych
mov esp, ebp
pop ebp ; (eip) tam kde ukazuje predtym
ret 8 ; ESP bude ukazovat na prvotnu hodnotu
prologue ; makro -- inicializace programu
;
;mov esi,sMessage
;call WriteString
push dword 40 ; b
push dword 80 ; a
; 80*2 - 40*2 = 160 - 80 = 80
; 5*2 - 10*2 = 10-20 = 10
call Func_Stack
call WriteUInt32
epilogue ; makro -- ukonceni programu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment