文章
176
粉丝
0
获赞
1
访问
15.4k

评分及理由
(1)得分及理由(满分2分)
第一问:学生回答“10次”,与标准答案一致,得1分。
第二问:学生回答“return n * f1(n - 1)”,这是C语言代码,但题目要求的是执行哪条指令会递归调用f1,应回答汇编指令“call f1 (00401000)”或机器指令“E8 D6 FF FF FF”。学生未正确指出具体指令,扣1分。
本小题得分:1分。
(2)得分及理由(满分2分)
第一问:学生回答“0040101C是条件转移指令”,对应第12行jle指令,正确,得1分。
第二问:学生回答“00401033”和“0040104A”一定会使程序跳转执行,分别对应第20行jmp指令和第30行ret指令,正确;但遗漏了第16行call指令,扣0.5分。
本小题得分:1.5分。
(3)得分及理由(满分4分)
第一问:学生未回答第17行指令的虚拟地址,扣1分。
第二问:学生计算偏移量为“25H”,但正确偏移量应为“FFFFFFD6H”,计算错误,扣1分。
第三问:学生回答“大端”,但根据偏移量字段低字节存储在低地址,应为小端方式,判断错误,扣1分。
本小题得分:1分。
(4)得分及理由(满分4分)
第一问:学生回答“n为有符号补码,经计算读出造成结果不同”,虽未明确说明溢出,但指出了数值表示问题,思路正确,得2分。
第二问:学生回答“将n改为无符号位”,但将int改为unsigned int仍为32位,表示范围不变,无法解决溢出问题,修改方法错误,扣2分。
本小题得分:2分。
(5)得分及理由(满分4分)
第一问:学生回答“最高位和次高位进位进行异或,不同则溢出”,这是针对无符号整数或加法溢出的判断方法,但题目要求带符号整数乘法的溢出判断(乘积高33位非全0或非全1),回答错误,扣2分。
第二问:学生未回答应加什么指令,扣2分。
本小题得分:0分。
题目总分:1+1.5+1+2+0=5.5分
登录后发布评论
暂无评论,来抢沙发