字数据在内存中的存储
小端法
字数据的存-储原则:高-高 低-低
1.字数据的低位字节存放在低地址内存单元
字数据的高位字节存放在高地址内存单元
2.取低地址内存单元地址作为字数据地址
大端法则与小端法相反
指令执行时,8086 CPU自动取ds中的数据为内存单元的段地址
8086 内以字为存取
下面是如何用 mov 指令从1000H 中读取数据
mov bx,1000H
mov ds,bx
关于mov指令的使用
1.两个操作数长度要一致
2.关于常数(也叫立即数)
不能作为第1个操作数
作为第2个操作数时,如果最高位是十六进制的 a~f 或 A~F,前面要加零
3.两个内存单元之间不能直接传送数据
4.不能使用mov指令修改CS和IP的值
5.关于段寄存器
两个段寄存器之间不能直接传送
不能把常数送到段寄存器
sub指令与add指令相同
1.指令的操作数不能同时是内存单元
2.指令的操作数不能段寄存器
栈
栈本质上是一段内存空间
栈的特点
只能在一端进出
先进后出
后进先出
栈的两个概念:栈底、栈顶
栈底固定不动,栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出
栈的两个操作:入栈、出栈
入栈是将一个新的元素放到栈顶,出栈是从栈顶取出一个元素
栈顶的段地址存放在SS中
栈顶的偏移地址存放在SP中
SS:SP指向栈顶元素
SS*16+SP 可得栈顶的物理地址
说明:栈为空时,就相当于唯一的元素出栈,出栈后,栈顶指向栈底加2----SP=SP+2
入栈是SP=SP-2
对8086而言,push和pop的操作
入栈与出栈均以字为单元
操作对象不能是常数
pop寄存器中,段寄存器不能是CS和SS
利用栈 先进后出 的特性,使用push和pop指令可以完成一些特殊处理
栈顶超界问题
当栈满的时候,再使用push指令入栈
当栈空的时候,再使用pop指令出栈
8086不会自动考虑栈顶超界,需要程序员在编程设计时自己考虑。栈区长度不同,栈顶超界的具体情形不同