第三章总结
第三章总结
一.字数据在内存中的存储
计算机内数据存-取单位: ① 字节 (8bit)
② 字 (16bit)
③ 双字 (32bit)
④ 四字 (64bit)
小段法:字数据的低位字节存放在低地址内存单元;
字数据的高位字节存放在高地址内存单元;
取低地址内存单元地址作为字数据地址。
二.数据在内存和CPU之间的传送
1.DS: 数据段段寄存器,用于存放数据段的「段地址」
在mov, add, sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段。
2.mov 指令只能用于
内存单元 ← 常数
内存单元 ← 寄存器
寄存器 ← 内存单元数据
3.add指令
寄存器,<-常数
寄存器<-寄存器
寄存器<-内存单元
内存单元<-常数
内存单元,<-寄存器
4.sub指令
寄存器,<-常数
寄存器<-寄存器
寄存器<-内存单元
内存单元<-常数
内存单元,<-寄存器
三. 栈
1 .栈的特性: 后进先出
两个概念: 栈底、栈顶
两个操作: 入栈、出栈
一个约定: 8086中栈以字为存取单位
栈顶: 最后入栈的字数据所对应的地址单元
栈底: 固定的一端,栈区最高地址单元的前一个单元
入栈: 把数据存入栈
出栈: 从栈取出数据
2.寄存器SS和SP
SS: 栈段段寄存器,用于存放栈段的「段地址」
SP: 栈指针寄存器,用于存放栈顶的偏移地址。
SS:SP对应的物理地址是栈顶的物理地址。
(SS) × 16 + (SP) → 栈顶的物理地址
3.push和pop
入栈和出栈均以字为单元 操作对象不能是常数 pop 段寄存器中,段寄存器不能是CS和SS
PS:
「段」是一个逻辑上的概念。
用作数据段时,要把段地址→DS 用作栈段时,要把段地址→SS,栈顶偏移地址 → SP
用作代码段时,段地址→CS,要取的指令偏移地址→IP。但CS和IP的值不能使用mov改变。
但是计算机不会自行分辨内存的用途在计算机眼里都是一段内存。所以只能人为的去做区别。
一段内存可以同时用作代码段、数据段、栈段。 由编程时灵活确定。
在8086CPU中,每个段的最大长度不能超过64KB。 (因为寄存器是16位的,能表示的地址范围只能是0000H~FFFFH,即0~216-1)