汇编语言第六章分支结构

6-1 转移指令

在这里插入图片描述

6-1-1 指令寻址方式

在这里插入图片描述

测验

1、相对来说,指令寻址中最常用、也最灵活的跳转寻址方式是:

相对寻址

2、指令寻址不支持的跳转寻址方式是:

立即数寻址

3、指令寻址是指一条指令执行后,确定执行的下一条指令的位置的方式。

4、IA-32处理器中,指令指针EIP或者还包括代码段寄存器CS值的改变将引起程序流程的改变。

5、IA-32处理器中,执行一条指令后,设计指令指针EIP自动增量,实现了指令的顺序寻址。

6-1-2 JMP指令

  • JMP label;段内相对寻址,段间直接寻址
  • JMP reg32/reg16;寄存器间接寻址
  • JMP mem48/mem32/mem16 程序转向存储单元指定的地址

测验

1、指令“JMP EAX”所采用的指令寻址方式是:

寄存器间接寻址

2、已知nvar是一个变量,指令“jmp nvar”所采用的指令寻址方式是:

存储器间接寻址

3、已知label是某条之前的标号,指令“jmp label”的功能是让处理器执行label指示的那条指令。

4、JMP指令的功能对应C语言的goto语句,按照高级语言的结构化思想,汇编语言中也不应使用JMP指令,处理器可以不必设计JMP指令。

扫描二维码关注公众号,回复: 14216255 查看本文章

5、IA-32处理器设计使用一个字节表达位移量的相对寻址的短转移是为了减少机器代码的长度,提供更紧凑的指令代码、占用更少的存储空间。

6-1-3 个数折半程序

对一个(无符号)整数折半

  • 就是对数据除以2
  • 数据右移1位实现除以2更方便

如果是偶数,完成
如果是奇数,需要加1
显示折半后的结果

在这里插入图片描述

测验

1、指令“shr eax,1”把EAX最低位移入了:

CF

2、将EAX内容加1可以使用的指令是:

add eax,1

3、对二进制数来说,偶数的最低位一定是0。

4、判断进位标志CF=0发生跳转,使用JNC指令。

5、指令“shr eax,1”执行后,EAX最高位是0。

6-1-4 位测试程序

在这里插入图片描述

测试

1、指令“test eax,02h”执行后,EAX等于:

不变

2、指令“mov eax,offset no_msg”获取用no_msg表示的字符串地址,其源操作数的数据寻址是:

立即数寻址

3、一个程序片段中,出现了JMP或Jcc指令,应该就不再是顺序程序结构了。

4、测试指令TEST对操作数进行的是“逻辑与”操作。

5、指令“TEST EAX, 01H”常用于测试EAX中的D1位。

6-1-5 Jcc指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
两个无符号1整数大小关系的条件转移指令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
比较指令CMP(compare)
在这里插入图片描述
在这里插入图片描述

测试

1、条件转移指令JC发生跳转的条件是:

CF=1

2、判断两个数相等则跳转,最对应的条件转移指令是______。

JE

3、执行条件转移指令Jcc,如果条件cc不成立,则顺序执行下一条指令。

4、对条件ZF=1条件成立的条件转移指令,MASM设计了两个助记符JZ和JE,其实是一条指令用了2个助记符,纯属“画蛇添足”。

5、条件转移指令Jcc利用的条件需要利用CMP、TEST等影响标志的指令产生。

6-2 单分支结构

6-2-1 单分支结构

在这里插入图片描述

测验

1、条件转移指令JGE发生转移的条件是:

有符号整数大于等于

2、EAX内保存一个有符号整数,执行“cmp eax,0”指令后,希望EAX小于0时跳转到done标号处,应使用的条件转移指令是:

jl done

3、这里的“单分支结构”是指条件不满足顺序执行分支体,条件满足跳过分支体执行。

4、在汇编语言中用Jcc指令形成单分支结构,条件满足顺序执行分支体。

5、不论EAX保存什么整数,指令“neg eax”都可以实现求EAX绝对值的功能。

6-2-2 字母判断程序

测验

1、下面哪一条指令可以将AL中存放的英文大写字母变为小写字母?

or al,20h

2、下面哪一条指令可以将AL中存放的英文小写字母变为大写字母?

sub al,20h

3、JB和JA指令都属于处理器的程序流程控制指令。

4、同一个英文字母其大小写,在ASCII表中的数值相差32(=20H)。

5、大写字母“A”的ASCII值是61H。

6-3 双分支结构

6-3-1 双分支结构

在这里插入图片描述
在这里插入图片描述

测验

1、不能将EBX的最高位移入CF标志的指令是:

sar ebx, 1

2、指令“mov al,‘0’”执行后,AL等于:

30H

3、指令“mov al, 1”执行后,AL等于:

1

4、这里的“双分支结构”是指条件满足和不满足各自执行一个分支体,但最后都从共用的出口开始执行后续指令。

5、在双分支程序结构中,顺序执行的分支体最后需要JMP指令,目的是使第一个分支体执行结束之后,跳过第二个分支体,避免误入第二个分支体中。

6-3-2 有符号整数运算溢出程序

测验

1、指令“mov dvar3,eax”进行是多少位的数据传输?

32

2、指令“mov dvar3,eax”目的操作数和源操作数的数据寻址方式分别是:

直接寻址1,寄存器寻址

3、通用处理器中普遍采用补码表达有符号整数。

4、用8位进制补码表达一个有符号整数,数值“-150”无法表达。

5、两个有符号整数加减运算后,结果是否溢出应使用JO或JNO指令判断。

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/124011692
今日推荐