Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bits 32 ; assembling for the 32 bits architecture
- ; declare the EntryPoint (a label defining the very first instruction of the program)
- global start
- ; declare external functions needed by our program
- extern exit ; tell nasm that exit exists even if we won't be defining it
- import exit msvcrt.dll ; exit is a function that ends the calling process. It is defined in msvcrt.dll
- ; msvcrt.dll contains exit, printf and all the other important C-runtime specific functions
- ; our data is declared here (the variables needed by our program)
- segment data use32 class=data
- ;a - byte, b - word, c - double word, d - qword - Unsigned representation
- ;(c-a) + (b - d) +d = c-a+b
- a db 2
- b dw 10
- c dd 15
- d dq 5
- v1 resd 1
- ; our code starts here
- segment code use32 class=code
- start:
- ; ...
- mov eax,0
- mov ebx,0
- mov ecx,0
- mov edx,0
- mov eax,[c]
- mov bx,[b]
- mov cl,[a]
- sub bx,cx
- add eax,ebx
- ; exit(0)
- push dword 0 ; push the parameter for exit onto the stack
- call [exit] ; call exit to terminate the program
Advertisement
Add Comment
Please, Sign In to add comment