汇编语言第五章顺序程序结构

5-1 移位实现乘法

5-1-1 移位实现乘法程序

在这里插入图片描述

测验

1、指令“shl eax, 1”执行后,EAX的最低位一定是:

0

2、如果EAX保存一个无符号整数,移位指令“shl eax,3”可以实现:

EAX数值乘以8

3、对二进制表达的整数来说,左移一位相当于数值乘以2。

4、对二进制表达的整数来说,右移一位相当于数值除以2。

5、理论上,任意两个整数相乘都可以移位、配合加减运算实现。

5-1-2 64位数据移位程序

在这里插入图片描述

如何进行逻辑移位运算
高32位右移,低32位右移

测验

1、IA-32处理器(循环)移位指令不支持的数据位数是:

64

2、使用2条32位(循环)移位指令实现64位数据逻辑右移的执行顺序依次是:

shr,rcr

3、对一个64位数据进行一位的左移操作,IA-32处理器可以使用一条SHL指令实现。

4、对一个64位数据进行一位的左移操作,IA-32处理器需要使用两条SHL指令实现

5、已知qvar是用qword定义的64位类型的变量,IA-32处理器指令的“shr qvar,1”存在语法错误。

5-2 自然数求和

5-2-1 自然数求和程序

测验

1、用语句“sum qword ?”定义的一个4字(64位)变量sum,存取其高32位数据部分的正确指令是:

moc edx,dword ptr sum+4

2、IA-32处理器的乘法指令“mul ebx”产生的乘积保存在的寄存器是:

EDX和EAX

3、对由EDX(高32位)和EAX(低32位)保存的64位无符号整数进行逻辑右移一位操作,可以使用两条32位(循环)移位指令实现,它们是:

shr edx和rcr eax

4、用语句“sum qword ?”定义的一个4字(64位)变量sum,与32位EAX类型不一致,所以“mov sum, eax”存在语法错误。

5、IA-32处理器的乘法指令“mul ebx”产生的乘积是64位的。

5-2-2 处理器识别程序

测验

1、语句“buffer byte 12 dup(0)”为变量buffer预留了:

12个初值为0的存储单元

2、buffer指向一个字符串缓冲区,bufsize是一个符号常量,指令“mov dword ptr buffer+bufsize-13, ebx”的目的操作数的寻址方式是:

直接寻址

3、MASM中,助记符“CPUID”是IA-32处理器的一条处理器识别指令,该指令能够反馈处理器的有关信息。

4、IA-32处理器上,在EAX=0时执行CPUID指令时通过寄存器ECX、EDX和EBX返回处理器厂商字符串。

5、程序的顺序结构是不含分支、循环和调用的一条语句(指令)、一条语句(指令)逐个顺序执行的程序结构。

猜你喜欢

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