汇编语言 第三章 寄存器(内存访问)
寄存器(内存访问)
1.字数据在内存中的存储
- 内存以字节为单位划分为若干个单元。
- 字在储存时要用两个地址连续的内存单元来存放。
- 字数据的存-取原则:高-高,低-低。即小端法,低位字节存放在低地址内存单元,高位字节存放在高地址内存单元,并且取低地址内存单元地址作为字数据地址。
- 在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8为寄存器相对应。
2.数据在内存单元和CPU之间的传送
- 执行命令时,默认情况下,8086自动取寄存器DS中的值为内存单元的段地址。
- 将一段内存用作数据段,是编程时的一种安排;
- 在mov,add,sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段。
3.汇编指令mov,add,sub
- mov:可以将数据直接送到寄存器,也可以将一个寄存器的内容送入另一个寄存器
- 两个操作数长度要一致。
- 常数不能作为第一个操作数(目的操作数)
- 常数作第二个操作数时,如果最高位是十六进制的A~F,前面要加零。
- 两个内存单元之间不能直接传送数据。
- 不能使用mov修改CS和IP的值
- 两个段寄存器之间不能直接传送。
- 不能把常数送到段寄存器。
- add:注意事项
- add指令的操作数不能同时是内存单元。
- add指令的操作数不能是段寄存器。
- sub:注意事项
- 两个内存单元不能直接用sub指令相减。
- sub指令的操作数不能是段寄存器。
- extra:mov,add,sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。
4.栈
- 栈是一个逻辑概念。可以将一段内存空间当作栈来使用。
- 栈顶的物理地址:SS:SP
- SS:栈段段寄存器,存放栈段的段地址。
- SP:栈指针寄存器,存放栈顶的偏移地址。
- 物理地址:(SS)×16+SP
- push和pop
- 入栈和出栈均以字为单元
- 操作对象不能是常数
- pop段寄存器中,段寄存器不能是CS和SS。
- 栈顶超界
原文地址:https://www.cnblogs.com/-Anguvia-/p/9852598.html