0%

汇编课程记录 2

太困了没听… 实际上不算课程记录…

寄存器

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
2
MOV AX,DATA
MOV DS,AX

CS IP
利用 END 后标号完成,系统自动将 START 所在段段地址送 CS 段内偏移地址送 IP

1
2
3
4
5
START:
.
.
.
END START

SS SP
定义堆栈段时将参数写全,则系统自动装入,用于堆栈的内存段地址送 SS,该堆栈的栈顶送 SP