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