王爽《汇编语言》(第四版)第二章 检测点2.2

(1) 给定段地址为 0001H,仅通过变化偏移地址来寻址,那么,
   CPU 的寻址范围为_______到_______。

  分析:仅通过偏移地址的变化来寻址,变化范围就是 0000~FFFFH。

  把数据代入公式,可算出:
    最小物理地址 = 0001H × 10H + 0000H = 00010H;  
    最大物理地址 = 0001H × 10H + FFFFH = 1000FH。

  CPU 中 20 位加法器的计算过程如下。

   (2) 有一数据存放在内存 20000H 单元中,现给定段地址为 SA,
    若想用偏移地址寻址到此单元。则 SA 应满足的条件是:
    最小为_______,最大为_______。

  分析:题目中,已经给定了物理地址是 20000H。而物理地址是由两项相加而成。求某一项的最小值,另一项就应该取最大值。

  那么,偏移地址取最小值 0000H,代入公式,即可得到段地址 SA 的最大值为:
    SA = ( 20000H - 0000H ) / 10H = 2000H。

  另外,在求 SA 的最小值时,偏移地址,显然就应该取最大值了。

  偏移地址的最大值,取 FFFFH 行吗? 不行!
  你认真看一看前面的几张图片,可知:偏移地址的末位,与物理地址的末位,是相同的!
  在本题中,物理地址是给定的 20000H,末位是 0 !
  所以,偏移地址的末位,也必须是 0 !
  因此,偏移地址的最大值,只能取 FFF0H。

  把 FFF0H,代入公式,可得:SA = ( 20000H-FFF0H ) / 10H = 1001H。

  对于求段地址 (SA) 的最小值问题,有许多人都选错了数据。

  都是用 FFFFH 代入公式,经过计算,结果就出现了小数。这种结果,显然是错的!

  这些朋友都是用的这个式子:20000H = SA × 10H + FFFF,这里会求出SA=1000.1H,算出段地址会有小数部分,因为段地址必须是16位整数,需要让段地址上浮1位,也即1000+1=1001H

第二章 检测点 2.3 

下面3条指令执行后,CPU修改几次IP?都是在什么时候?最后IP中的值是多少? 

mov ax, bx
sub ax, ax
jmp ax

答:

共修改4次;

第一次变化,输入输出控制电路将mov ax, bx对应的机器指令送入指令缓冲器后,IP中的值自动增加。

第二次变化,输入输出控制电路将sub ax, bx对应的机器指令送入指令缓冲器后,IP中的值自动增加。

第三次变化,输入输出控制电路将jmp ax对应的机器指令送入指令缓冲器后,IP中的值自动增加。

第四次变化,执行控制器执行第3条汇编指令对应的机器指令后,指令指针寄存器IP中的数据变为寄存器ax中的数据。

最后IP中的值为0000H

总结:

1、2.10节中给出了8086CPU中读取和执行指令的相关部件:地址加法器、输入输出控制电路、指令缓冲器、执行控制器。

2、CPU读入指令存放在指令缓冲器内,暂不执行,这时候IP需要先改变(方便下条指令的读入),最后再执行(如果执行的是jmp指令,会导致IP再发生一次改变)。

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值