sp指向的是push的高一位地址,比如sp指向0008 push后sp=-2
sp指向0006
0007和0006处有数据
用T命令执行修改寄存器SS中的值时,他的下一条指令也会紧跟着执行。
源程序如何执行:文本编辑->源程序文件->编译器编译连接->生成可执行文件(描述信息:程序有多大,内存空间。 汇编指令机器码)-> 程序员执行
源程序 伪指令
assume 段寄存器:xxx(代码段名称)
xxx segment
xxx ends 一段代码的结束
end 整段代码的结束
程序返回
程序返回: 假如可执行文件是里的程序P1,需要有一个程序P2将P1加载入内存,把cpu的控制权交给P1,等程序运行完后,再将cpu控制权还给P2,P2继续运行
通过 mov ax,4c00h
int 21h 实现程序返回
C:\masm> c:\1; 编译
C:\link 1; 连接
程序的执行 debug将程序加载入某段内存
在这段内存的前256个字节中创建一个段前缀数据区 称为PSP(存放着e zhi xing wen jian xin xi)用来跟Debug进行通信
段地址为SA:0 此地址存放在ds寄存器中
程序的起始地址为 SA+10H :0 并且cs:ip也指向这里
程序框架:
assume cs:code
code segment
.
.
数据
.
.
start:
.
.
代码
.
.
code ends
end start
数据段(data)和栈段(stack)和代码段(code)在内存中都是以十六个字节为单位的,如果不足十六个字节自动用0填充 如 代码段code长度为36,填充0至其长度为48