好文档 - 专业文书写作范文服务资料分享网站

钱晓捷-汇编语言程序设计课后习题(作业新)

天下 分享 时间: 加入收藏 我要投稿 点赞

习题8

8.1 BF600000H是一个单精度浮点格式数据,它表达的实数时什么? 8.2 将28.75表达成一个单精度浮点格式数据。 8.3 解释如下浮点格式数据的有关概念: (1)数据上溢和数据下溢

(2)规格化有限数和非规格化有限数 (3)NaN和无穷大

8.4 在IEEE标准中单精度和双精度数据的有效数字位数分别为23和52,但为 什么说他们具有二进制24和53位的精度?

8.5 浮点指令集中有一些特殊操作,例如:结尾P表示的“出栈”操作,剪发与

除法中的“反向”操作,请你全面总结一下。 8.6 比较浮点数据传送指令的“压栈”、“存数”、“出栈”和“交换”的操作。 8.7 总结一下浮点状态寄存器的C0~C3的作用的作用。 8.8 FPU存在哪6种异常?FPU如何处理这些异常?

8.9 FPU复位或初始化(如执行FINIT指令)后,栈顶指向的寄存器编号为 ,即TOP= ?

8.10 例题8.4种,如果要求6个浮点数的连乘结果,如何修改?如果对多个32 位整数进行累加或连乘,又如何修改?上机实现本程序,并在调试器 CodeView或Turbo Debugger下运行,观察运行结果是否正确。 8.11 例题8.5程序段执行结束,浮点数据寄存器栈中还有有效的数据吗?如果有,是什么内容?

8.12 说明如下各条指令的功能

(1)fatsw ax (2)fst qword ptr f64data (3) fbstp b80data (4)fcomi

(5) fcmovb (6) ffree st(2) (7) fsave (8)fxch 8.13 按照如下要求完成浮点程序段

(1)确定栈顶数据是否等于寄存器 st(2) (2)把寄存器st(3)的数据加到栈顶

(3)将栈顶数据减去寄存器st(4)的数据,结果保存在寄存器st(4) (4) 把π压入栈顶

8.14 要编写一个求栈顶数据的自然对数子数程序,应该如何修改例题8.7? 8.15 现有两组浮点数据Adata1,Adata2和Bdata1,Bdata2,编程计算点积:

Adata1*Bdata1+Adata2*Bdata2

8.16 编写求长方形面积A(等于长度L*宽度W)的程序。

8.17 编程产生从2到10的平方根表,结果以单精度浮点数存在roots表中。 8.18 有两个数组array1,array2,每个包含100个元素双精度浮点数。编程求

对应两个数组元素的乘积,并将双精度结果存入另一个数组array3。 8.19 编写一个求单精度度浮点数倒数的过程,利用EAX传送入口参数和出口参 数。

36 / 40

8.20 实数X存于fdataX ,整数Y存于idataY 单元,过程intpow计算XY(X的

Y次方),并将结果保存在result单元。阅读该子程序,为每条指令加上 注释,并编写一个主程序验证该子程序的正确性。 fdataX dq? idataY dw? result dq? ... intpow PROC push cx fld1

mov cx,idata Y fld fdataX jcxz done again: test cx ,1 jz next

fmul st(1),st(0) next: fmul st ,st(0) shr cx , 1 jnz again

done: fstp qword prr result pop cx ret intpow ENDP

8.21 阅读如下程序,说明子程序sumarray的功能。然后适当改写该子程序,并

用Turbo C 或Visual C ++编写一个主程序,调用以验证该子程序的正确

性。

count equ 50

array dq count dup(?) ...

sumarray PROC push bx push cx push es

les bx ,array mov cx,count fldz

jcxz done

dosum : fadd dword ptr es:[bx] add bx , 8 loop dosum done : pop es

37 / 40

pop cx pop bx ret sumarray ENDP

38 / 40

习题9

9.1 什么是紧缩整形数据?MMX 指令支持哪4种数据类型? 9.2 SIMD是什么?举例说明MMX指令如何利用这个结构特点。 9.3为了支持MMX指令,处理器增加了标志和寄存器吗? 9.4 什么是环绕加/减运算和饱加/减运算?给出如下结果: (1)环绕家:7F38h+1707h (2)环绕减:1707h-7F38h

(3)无符号饱和加:7F38h+1707h (4)无符号饱和减:1707h-7F38h (5)有符号饱和加:7F38h+1707h (6)有符号饱和减:1707h-7F38h

9.5 已知pdata64是一个64位存储器操作数,说明如下MMX指令的功能:

(1)movd mm0, eax (2) movq mm4 ,mm1 (3) psubd mm1, mm2

(4) pcmpgtb mm1 ,padta64 (5) pandn mm0 ,mm1 (6) psrlq mm0 ,7

(7) packsswb mm7, pdata64 (8) punpcklbw mm6,mm7

9.6 为什么一段MMX指令程序最后,通常要有EMMS指令?

9.7 MMX指令系统具有哪些主要特点?举例说明这些特点有什么应用。 9.8 上机实现例题9.1程序。

9.9 利用MMX指令,编写一个实现16个元素的两个向量的点积通过子程序, 然后利用一个C或C++语言主程序调用它。

9.10 编写一个程序,用于验证9.1.2节MMX算术运算各个指令举例的正确性。

为了能够直观看到结果,可以编写一个以十六进制形式显示64位数据的子 程序,供调用。

9.11 说明下列子程序的功能,共有多少个数据参加了运算?

sums proc ; 人口参数;EBX=数组1首地址,EDX=数组2首地址 push ecx mov ecx ,32 .repeat

movq mm0,[ebx+8*ecx-8] paddb mm0,[edx+8*ecx-8] .untilxz emms pop ecx ret

sums endp

9.12 说明SSE指令支持的紧缩单精度浮点数据格式。

9.13 SSE指令系统有128位操作模式(紧缩单精度)和32位操作模式(标量

39 / 40

精度),举例说明两种操作模式的指令有什么差别。

9.14 什么是对齐数据传送和不对齐数据传送?两者有什么差别? 9.15 上机实现例题9.2程序。

9.16 SSE2指令系统新引入了哪些数据类型?

9.17 为什么SSE和SSE2指令系统中都还扩展有操作MMX和整数的指令? 9.18 参照例题9.2,编写在例题9.3种求出最大值所在位置并显示的程序。

40 / 40

钱晓捷-汇编语言程序设计课后习题(作业新)

习题88.1BF600000H是一个单精度浮点格式数据,它表达的实数时什么?8.2将28.75表达成一个单精度浮点格式数据。8.3解释如下浮点格式数据的有关概念:(1)数据上溢和数据下溢(2)规格化有限数和非规格化有限数(3)NaN和无穷大8.4在IEEE标准中单精度和双精度数据的有效数字位数分别为23
推荐度:
点击下载文档文档为doc格式
5l8cu7f5iv3z01x0bvw21wxgu8k84a00nd7
领取福利

微信扫码领取福利

微信扫码分享