第三章 寄存器

第三章寄存器

汇编语言

施工中

3.1 内存中字的存储

  • CPU中用16位寄存器来存储一个字。高八位存放高字节,低八位存放低字节。
  • 字单元:有两个连续的内存单元组成。高地址内存单元存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。
    • 字节 8bit
    • 字 16bit
    • 双字 32bit
    • 四字 64bit
  • 采用小端法

3.2 DS和[address] 3.3 字的传送

  • 8086CPU由于硬件设计问题,不支持将数据直接送入段寄存器
  • DS 数据段寄存器

3.4 mov、add、sub指令

mov指令
  • mov指令可以:
    1. 常数 ->寄存器
    2. 寄存器 ->寄存器
    3. 内存单元 ->寄存器
    4. 段寄存器 ->寄存器

    5. 常数- >内存单元
    6. 寄存器- >内存单元
    7. 段寄存器 ->内存单元

    8. 寄存器 ->段寄存器
    9. 内存单元 ->段寄存器

  • 作为第二个操作数时,如果最高位大于9,前面要加0
  • mov指令不能修改CS和IP的值
add指令,sub指令
1. 常数    ->寄存器
2. 寄存器  ->寄存器
3. 内存单元 ->寄存器
5. 常数-   >内存单元
6. 寄存器-  >内存单元
  • 操作数时是内存单元时,指令中只给出偏移地址

    3.5 数据段

  • 摘自《数字体系与计算机体系结构》 6.8.6 x86的其他特性

    802861使用分段的方法将内存分成很多段
    当操作系统允许分段时,相对于每段起始位置计算地址
    分段技术引起很多争议 没有在现在Windows的各个版本中启用

3.6 栈 3.7 CPU提供的栈机制 3.8 栈顶越界的问题 3.10 栈段指令

  • 栈顶:最后入栈的字数据所对应的内存单元
  • 栈底:栈区最高地址单元的前一个单元

  • SS 栈段段寄存器
  • SP 栈指针寄存器

3.9 push、pop指令

  • push内存单元和pop内存单元中,指令中只需给出偏移地址。
  • 入栈 出栈均以字为单元
  • 8086不会自动考虑栈顶越界

猜你喜欢

转载自www.cnblogs.com/bot-noob-121/p/9901368.html
今日推荐