一个简单的 8086 汇编子程序(函数)。
assume cs:code
code segment
    main:   mov ax, 1000h
            call add1
            mov ax, 4c00h
            int 21h
    add1:   add ax, 1
            ret
code ends
end main
- 标号
main可以简单地理解为 C 语言中的 main 函数等入口函数; - 标号
add1是函数 add1 的地址; - 指令
call add1调用add1函数。在汇编中,call add1具体操作:将当前地址CS:IP压入栈SS:SP(这就是传说中的栈帧的由来吧?)中,接着转到add1开始执行; - 标号
add1执行完add ax, 1之后,指令ret会将上一步中保存到SS:SP栈顶的地址传到CS:IP,再将该地址出栈; - 函数
add1执行完毕。 - 指令
mov ax, 4c00h、int 21h退出程序。 
对以上汇编代码进行处理。
汇编

链接

调试

在这段代码中,我们重点关注 ax 寄存器。
- 
    
上图中的
-r、-t等是输入的命令,-相当于输入的提示符,r、t才是实际输入的字符;在每个输出中的最后显示的是下一个将要执行的汇编指令,如MOV AX,1000。 - 
    
r查看当前寄存器状态。ax 初始值为 FFFF,下面将要执行的代码是MOV AX, 1000。 - 
    
t执行指令,并显示最新的寄存器状态。