太困了没听… 实际上不算课程记录…
寄存器
CPU 优先读写寄存器,依靠名称而非地址区分数据。80386 以上的 CPU 有
8 个 32 位通用寄存器:
- EAX 有时也是累加器
- EBX
- ECX
- EDX
- ESP 栈指针/栈顶指针,栈顶的偏移量
- EBP
- ESI
- EDI
6 个 16 位段寄存器
- CS 代码段
- SS 堆栈段,配合 ESP 食用
- DS 主数据段
- ES 附加数据段
- FS
- GS
2 个 32 位控制寄存器
- EIP 指令指针,存放偏移量部分,配合 CS 指出下一条指令的地址
- FLAGS 标志寄存器
内存
堆 Heap
来自用户主动请求,从起始地址开始向高位增长,不会自动消失
栈 Stack
函数运行而临时占用的内存区域,为每个函数建立一个桢,运行结束则回收桢释放内部变量不再占用内存,由内存区域的结束地址开始向低位,后进先出;
生成新的帧即入栈 push;栈的回收即出栈 pop
段寄存器装入
ASSUME 仅指出段和段寄存器之间的关系,并未真正装入
DS/ES
串操作的目操作数必须为 ES:DI
1 | MOV AX,DATA |
CS IP
利用 END 后标号完成,系统自动将 START 所在段段地址送 CS 段内偏移地址送 IP
1 | START: |
SS SP
定义堆栈段时将参数写全,则系统自动装入,用于堆栈的内存段地址送 SS,该堆栈的栈顶送 SP