33、编写一个等效于以下 C 函数的完整 ARM 汇编函数。该函数返回六个值中的最小值:/*此函数返回六个值中的最小值。int minsix(int a, int b, int c, int d, int e, int f){if(b < a) a = b;if(d < c) c = d;if(c < a) a = c;if(f < e) e = f;if(e < a) a = e;return a;}
以下是实现该功能的 ARM 汇编代码:
minsix:
CMP r1, r0 @ 比较 b 和 a
MOVLT r0, r1 @ 如果 b < a,将 b 的值赋给 a
CMP r3, r2 @ 比较 d 和 c
MOVLT r2, r3 @ 如果 d < c,将 d 的值赋给 c
CMP r2, r0 @ 比较 c 和 a
MOVLT r0, r2 @ 如果 c < a,将 c 的值赋给 a
CMP r5, r4 @ 比较 f 和 e
MOVLT r4, r5 @ 如果 f < e,将 f 的值赋给 e
CMP r4, r0 @ 比较 e 和 a
MOVLT r0, r4 @ 如果 e < a,将 e 的值赋给 a
BX lr @ 返回 a 的值
34、使用抽象数据类型设计软件有哪些优点?
使用抽象数据类型(ADT)设计软件的优点
- 有助于提高软件可靠性,便于维护,能以安全的方式进行重大修改
- 支持信息隐藏,可将信息封装到模块中
- 通过接口操作数据,隐藏ADT的实现
- 减少软件开发风险
- 使代码依赖从不确定的实现转移到定义明确的接口上
- 若实现改变,客户端代码无需改变
- 能封装软件和数据结构,构建模仿现实世界对象行为和交互的对象
- 便于用多种语言实现软件模块
- 只要代码符合标准,就能与其他语言编写的代码链接
35、为什么要对Pixel数据类型的内部结构进行隐藏,使其对客户端代码不可见?
- 隐藏
Pixel数据类型的内部结构,可使客户端代码只能通过提供的接口访问数据结构,提高数据结构的安全性和封装性。 - 同时,仅暴露
pval定义,告知客户端程序像素的红、绿、蓝分量必须是0到255之间的数字。
36、高级语言提供了信息隐藏机制,但汇编语言没有。为什么汇编程序员不直接绕过所有信息隐藏,直接访问任何抽象数据类型(ADT)的内部数据结构呢?
虽然汇编语言本身没有信息隐藏机制,但为确保软件的安全性、可靠性和可维护性,汇编程序员不应绕过信息隐藏直接访问ADT内部数据结构。
信息隐藏可将代码对不确定实现的依赖转移到定义良好的接口上,降低软件开发风险。若实现改变,使用接口的客户端代码无需更改。
此外,使用抽象数据类型和遵循结构化编程标准,能避免因不良编码和设计导致的严重后果。
37、使用无符号8位二进制乘法将166乘以105,得到一个无符号16位结果。请展示所有计算过程。
首先,将十进制数166和105转换为8位二进制数。166的二进制表示为 10100110 ,105的二进制表示为 01101001 。接下来进行二进制乘法,类似于十进制乘法,通过计算部分积并相加来完成。
1. 计算部分积:
- 105的最低位是1,所以第一个部分积是166(即
10100110)。 - 105的次低位是0,第二个部分积是0(即
00000000)。 - 105的第三位是0,第三个部分积是0(即
00000000)。 - 105的第四位是1,第四个部分积是166左移3位,即
10100110000。 - 105的第五位是0,第五个部分积是0(即
00000000000)。 - 105的第六位是1,第六个部分积是166左移5位,即
1010011000000。 - 105的第七位是1,第七个部分积是166左移6位,即

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



