第五章 分支程序设计

前言:最近在学习汇编语言,使用教材为《汇编语言》(第2版),郑晓薇著。下文的内容为对应章节的练习题、测试题答题记录。只做了部分。

第五章 分支程序设计

5.1 转移指令分为哪两大类?转移指令的操作码和操作数如何表示?

无条件转移指令:JMP OPR

条件转移指令:JZ、JNZ… 条件满足转移到标号处

5.2 写出与转移地址有关的寻址方式。

与转移地址有关的寻址方式分为段内寻址和段内寻址:

  • 段内寻址:段内直接寻址、段内间接寻址

  • 段间寻址:段间直接寻址、段间间接寻址

5.3 根据标志位转移的指令有哪些?执行什么操作时可以改变标志?

条件转移指令包含10种指令:

命令 解释 测试条件
JZ(或JE) 结果为0(或i 相等) ZF = 1
JNZ(或JNE) 结果不为0(或不相等)则转移 ZF = 0
JC 结果有进位则转移 CF = 1
JNC 结果无进位则转移 CF = 0
JS 结果无负则转移 SF = 1
JNS 结果为正则转移 SF = 0
JO 结果溢出则转移 OF = 1
JNO 结果不溢出则转移 OF = 0
JP 结果为偶数个1则转移 PF = 1
JNP 结果为奇数个1则转移 PF = 0

5.4 简述CPU实现分支的过程。

CPU可以从它的段寄存器CS和指针寄存器IP中获得转移地址信息

5.5 在短转移格式下,指令跳转的范围是多少?

-128 ~ +127

5.6 在比较转移指令之前可以用什么指令进行判断?

5.7 比较转移指令为什么要分为无符号数比较和带符号数比较两类?

因为可能数值一样,但分别用无符号数转移和带符号数转移,其结果是不一样的。

5.8 汇编语言可以控制和改变二进制某一位。有哪些指令可做位操作?

算术左移、算术右移、逻辑左移、逻辑右移、循环左移、循环右移

5.9 TEST指令是如何实现判断的?请举例说明。

在分支程序设计中,采用TEST测试指令对操作数的特定位进行测试,即对操作数做相与操作,结果不回送但改变标识位,这样可以根据标志实现转移。

5.10 移位指令影响标志位吗?影响哪些标志位?

影响,CF

5.11 已知(BX)=7890H,写出指令实现逻辑左移2位。请问哪个标志位改变了?

进位标志CF=1

说点什么

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
提醒