文章
83
粉丝
160
获赞
0
访问
1.6k

评分及理由
(1)得分及理由(满分2分)
第一问:学生回答“需调用 f10 10次”,其中“f10”应为“f1”的识别错误,但核心逻辑正确,计算f(10)需要调用10次函数。得1分。
第二问:学生回答“执行第16条指令时会递归调用 f10”,同样“f10”为识别错误,但指出了正确的指令行号。得1分。
本题共得2分。
(2)得分及理由(满分2分)
第一问:学生回答“第12条、第20条为条件转移指令”。第12条“jle”是条件转移指令正确,但第20条“jmp”是无条件转移指令,学生此处判断错误。扣1分。
第二问:学生回答“第16、30条指令一定会使程序跳转执行”。第16条“call”和第30条“ret”确实一定会使程序跳转执行,正确。得1分。
本题共得1分。
(3)得分及理由(满分4分)
第一问:学生回答“第17行指令虚拟地址为0040102AH”,计算正确。得1分。
第二问:学生回答“偏移量为第17条指令地址与目标地址之差,即0040100DH - 0040102AH = FFFFFFD6H”。计算过程中“0040100DH”应为目标地址“00401000H”的识别错误,但最终结果“FFFFFFD6H”正确(第一次识别结果为“FFFFD6H”缺了两位,第二次识别结果正确)。鉴于识别误差,且最终答案正确,不扣分。得2分。
第三问:学生回答“采用小端方式”,判断正确。得1分。
本题共得4分。
(4)得分及理由(满分4分)
第一问:学生回答“因为该数的大小已超过了整型变量所能表示的最大范围,所以两者不相等”,正确指出了溢出原因。得2分。
第二问:学生回答“可以将其值n和返回值设为float型”。将返回值类型改为float可以扩大表示范围,是一种可行的修改方法,虽然标准答案建议用long long,但float在C语言中也是可行的(可能损失精度)。思路正确,不扣分。得2分。
本题共得4分。
(5)得分及理由(满分4分)
第一问:学生回答“当高33位为全0或全1,即高33位相等时,OF = 0,没溢出,若高33位存在不同的数时,即不为全0或1时,OF = 1,发生溢出”。该描述准确地说明了OF=1的条件(高33位非全0且非全1),逻辑正确。得2分。
第二问:学生回答“应在imul指令后加一条trap自陷指令,进而转异常处理”。“trap自陷指令”或“溢出自陷指令”都是正确的描述...
登录后发布评论
暂无评论,来抢沙发