x86 汇编模板
.586
.model flat,stdcall
includelib user32.lib
includelib kernel32.lib
includelib ucrt.lib
includelib legacy_stdio_definitions.lib
ExitProcess PROTO,dwExitCode:DWORD
extern printf:proc
extern scanf:proc
extern system:proc
.data
.code
main PROC
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
ret
INVOKE ExitProcess,0
main ENDP
END
x64 汇编模板
includelib kernel32.lib
includelib user32.lib
includelib ucrt.lib
includelib legacy_stdio_definitions.lib
extern printf:proc
extern scanf:proc
extern system:proc
.data
.code
main PROC
sub rsp,28h ;安全:开辟堆栈
add rsp,28h
ret
main endp
end
x64 汇编可自动平栈,也可手动平栈
;自动平栈
push rbp
push rdi
sub rsp,128h
lea rbp,[rsp+20h]
lea rsp,[rbp+108h]
pop rdi
pop rbp
ret
;手动平栈
sub rsp,128h
add rsp,128h
ret
8086 汇编模板
assume cs:code,ds:data ;代码段,数据段
data segment
data ends
code segment
InitDataSegment proc
push ax
mov ax,data
mov ds,ax
pop ax
ret
InitDataSegment endp
Exit proc
push ax
mov ax,4c00H
int 21H
pop ax
Exit endp
Printf proc
push ax
mov ah,9h
int 21h
pop ax
ret
Printf endp
Scanf proc
push ax
push bx
push cx
push dx
mov ah,0Ah
int 21h
pop dx
pop cx
pop bx
pop ax
ret
Scanf endp
Enter proc
push ax
push dx
mov dl,0Dh
mov ah,02h
int 21h ;回车
mov dl,0Ah
mov ah,02h
int 21h ;换行
pop dx
pop ax
ret
Enter endp
main proc
call InitDataSegment
mov ax,4c00H
int 21H
ret
main endp
start: call main ;入口
code ends
end start