School Commit Init
This commit is contained in:
+38
@@ -0,0 +1,38 @@
|
||||
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 dw 74A1h
|
||||
c dd 243F2149h
|
||||
d dq 768AC79B8296E852h
|
||||
|
||||
; our code starts here
|
||||
segment code use32 class=code
|
||||
start:
|
||||
mov AL,[a] ;AL=a
|
||||
cbw
|
||||
cwde ;EAX=a
|
||||
mov EBX,EAX ;EBX=a
|
||||
mov AX,[b] ;AX=b
|
||||
cwde ;EAX=b
|
||||
add EAX,[c] ;EAX=c+b
|
||||
add EAX,EBX ;EAX=c+b+a
|
||||
cdq ;EDX:EAX=c+b+a
|
||||
mov EBX,[d]
|
||||
mov ECX,[d+4] ;ECX:EBX=d
|
||||
add EBX,[d]
|
||||
adc ECX,[d+4] ;ECX:EBX=d+d
|
||||
sub EAX,EBX
|
||||
sbb EDX,ECX ;EDX:EAX=(c+b+a)-(d+d)
|
||||
; exit(0)
|
||||
push dword 0 ; push the parameter for exit onto the stack
|
||||
call [exit] ; call exit to terminate the program
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
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 dw 74A1h
|
||||
c dd 243F2149h
|
||||
d dq 768AC79B8296E852h
|
||||
|
||||
; our code starts here
|
||||
segment code use32 class=code
|
||||
start:
|
||||
mov AL,[a] ;AL=a
|
||||
cbw
|
||||
cwde
|
||||
cdq ;EDX:EAX=a
|
||||
mov EBX,[d]
|
||||
mov ECX,[d+4] ;ECX:EBX=d
|
||||
sub EBX,EAX
|
||||
sbb ECX,EDX ;ECX:EBX=d-a
|
||||
sub EAX,[c] ;EAX=a-c
|
||||
cdq
|
||||
sub EBX,EAX
|
||||
sbb ECX,EDX ;ECX:EBX=(d-a)-(a-c)
|
||||
sub EBX,[d]
|
||||
sbb ECX,[d+4] ;ECX:EBX=(d-a)-(a-c)-d
|
||||
|
||||
; exit(0)
|
||||
push dword 0 ; push the parameter for exit onto the stack
|
||||
call [exit] ; call exit to terminate the program
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
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 dw 74A1h
|
||||
c dd 243F2149h
|
||||
d dq 768AC79B8296E852h
|
||||
|
||||
; our code starts here
|
||||
segment code use32 class=code
|
||||
start:
|
||||
mov EBX,0 ;EBX=0
|
||||
mov BL,[a] ;EBX=a
|
||||
mov EDX,[d+4] ;
|
||||
mov EAX,[d] ;EDX:EAX=d
|
||||
add EAX,EBX
|
||||
adc EDX,0 ;EDX:EAX=a+d
|
||||
mov EBX,[c]
|
||||
mov ECX,0 ;ECX:EBX=c
|
||||
sub EBX,EAX
|
||||
sbb ECX,EDX ;ECX:EBX=c-(a+d)
|
||||
push EBX
|
||||
push ECX
|
||||
mov EDX,[d+4]
|
||||
mov EAX,[d] ;EDX:EAX=d
|
||||
mov ECX,0
|
||||
mov CX,[b] ;ECX=b
|
||||
add EAX,ECX
|
||||
adc EDX,0 ;EDX:EAX=b+d
|
||||
pop ECX
|
||||
pop EBX ;ECX:EBX=c-(a+d)
|
||||
add EAX,EBX
|
||||
adc EDX,ECX ;EDX:EAX=c-(a+d)+(b+d)
|
||||
|
||||
; exit(0)
|
||||
push dword 0 ; push the parameter for exit onto the stack
|
||||
call [exit] ; call exit to terminate the program
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
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 dw 74A1h
|
||||
c dd 243F2149h
|
||||
d dq 768AC79B8296E852h
|
||||
|
||||
; our code starts here
|
||||
segment code use32 class=code
|
||||
start:
|
||||
; ...
|
||||
mov EAX,0
|
||||
mov EBX,0
|
||||
mov AL,[a] ;EAX=a
|
||||
mov BX,[b] ;EBX=b
|
||||
add EBX,EAX ;EBX=b+a
|
||||
mov ECX,[c] ;ECX=c
|
||||
sub ECX,EAX ;ECX=c-a
|
||||
sub ECX,EBX ;ECX=c-a-(b+a)
|
||||
add ECX,[c] ;ECX=c-a-(b+a)+c
|
||||
|
||||
|
||||
; 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