School Commit Init
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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 db 12h
|
||||
b dd 7483AB72h
|
||||
c dq 768AC79B8296E852h
|
||||
|
||||
; our code starts here
|
||||
segment code use32 class=code
|
||||
start:
|
||||
mov AL,[a] ;AL=a
|
||||
mul byte [a] ;AX=a*a
|
||||
mov BX,AX
|
||||
mov EAX,0
|
||||
mov AX,BX ;EAX=a*a
|
||||
sub EAX,[b] ;EAX=a*a-b
|
||||
add EAX,7 ;EAX=a*a-b+7
|
||||
mov EDX,0 ;EDX:EAX=a*a-b+7
|
||||
mov EBX,0 ;EBX=0
|
||||
mov BL,[a] ;EBX=a
|
||||
add EBX,2 ;EBX=2+a
|
||||
div EBX ;EAX=(a*a-b+7)/(2+a)
|
||||
mov EDX,0 ;EDX:EAX=(a*a-b+7)/(2+a)
|
||||
add EAX,[c]
|
||||
adc EDX,[c+4] ;EDX:EAX=c+(a*a-b+7)/(2+a)
|
||||
; exit(0)
|
||||
push dword 0 ; push the parameter for exit onto the stack
|
||||
call [exit] ; call exit to terminate the program
|
||||
@@ -0,0 +1,50 @@
|
||||
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 dw 7293h
|
||||
b db 0A8h
|
||||
c dw 0B749h
|
||||
d db 4Bh
|
||||
e dd 7483AB72h
|
||||
x dq 768AC79Bh
|
||||
|
||||
; our code starts here
|
||||
segment code use32 class=code
|
||||
start:
|
||||
mov EAX,[x]
|
||||
mov EDX,[x+4] ;EDX:EAX=x
|
||||
mov EBX,2 ;EBX=2
|
||||
div EBX ;EAX=x/2
|
||||
mov BX,0
|
||||
mov BL,[b] ;BX=b
|
||||
add BX,[a] ;BX=a+b
|
||||
mov ECX,EAX ;ECX=x/2
|
||||
mov AX,100 ;AX=100
|
||||
mul BX ;EAX=100*(a+b)
|
||||
add ECX,EAX ;ECX=x/2+100*(a+b)
|
||||
mov AX,3 ;AX=3
|
||||
mov DX,0 ;DX:AX=3
|
||||
mov BX,0 ;BX=0
|
||||
mov BL,[d] ;BX=d
|
||||
add BX,[c] ;BX=c+d
|
||||
div BX ;AX=3/(c+d)
|
||||
mov EBX,0
|
||||
mov BX,AX ;EBX=3/(c+d)
|
||||
sub ECX,EBX ;ECX=x/2+100*(a+b)-3/(c+d)
|
||||
mov EAX,[e] ;EAX=e
|
||||
mul dword [e] ;EDX:EAX=e*e
|
||||
add EAX,ECX
|
||||
adc EDX,0 ;EDX:EAX=x/2+100*(a+b)-3/(c+d)+e*e
|
||||
|
||||
; exit(0)
|
||||
push dword 0 ; push the parameter for exit onto the stack
|
||||
call [exit] ; call exit to terminate the program
|
||||
Reference in New Issue
Block a user