汇编语言第三版 第二章 寄存器

Posted 平林新袖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言第三版 第二章 寄存器相关的知识,希望对你有一定的参考价值。

  问题1.8086CPU的地址总线为20bit,而数据总线为16bit--也就是说每次传输的数据为16bit,那么如何使用16bit的数据总线来实现20bit的地址总线的地址传输?

  答:8086CPU使用两个16bit的地址合成一个20bit的物理地址. 

    16bit A: XXXX

    16bit B: XXXX

  20bit物理地址的合成

    A *16 也就是将A(16进制表示的数值),向左移动一位,然后加上B。A * 16  +  B。物理地址 = 段地址 * 16 + 偏移地址

    16bit A: XXXX  左移一位

    20bit A‘: XXXX0 相加B

    16bit B:   XXXX

  在8086CPU中扮演保存段地址和偏移地址寄存器为CS和IP。在CPU内部使用地址加法器 实现两个地址的逻辑加法。

  问题2:CS和IP是如何变化的?

    在CPU获取下一条指令的时候,首先在CS:IP指定的内存中读取指令,然后将指令放入【指令缓冲器】中,然后IP=IP+读取指令的长度。

    1). 自动变化。在读取一条指令的时候,IP就会发生变化,IP=IP+读取指令的长度。

    2). 程序改变。jmp 段地址:偏移地址。jmp 1000:100 执行该条命令之后,cs=1000,ip=100。如果仅仅修改ip的数值,可以使用寄存器的数值,来改变ip。

      jmp ax,执行完毕之后,cs不变,ip = ax,等价于 jmp ip,ax;

  问题3:什么是段?

    在8086中允许用户将N(N<=64KB)的一组代码,存在一组地址连续起始地址为16的整数倍的内存空间中。

 

以上是关于汇编语言第三版 第二章 寄存器的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言第三版 第二章 寄存器

《汇编语言(第三版)》标志寄存器

王爽《汇编语言》第三版 第十五章 外中断

《汇编语言(第三版)》pushf 和 popf 指令,以及标志寄存器在 Debug 中的表示

写出每条汇编指令执行后相关寄存器中的值。《汇编语言(第三版习题笔记)》

写出每条汇编指令执行后相关寄存器中的值。《汇编语言(第三版习题笔记)》