汇编语言 第三章 寄存器(内存访问)

寄存器(内存访问)

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。
  • 栈顶超界
    • 栈满时用push入栈
    • 栈空时用pop出栈
原文地址:https://www.cnblogs.com/-Anguvia-/p/9852598.html