文章
20
粉丝
0
获赞
0
访问
590
(1)执行f(10)要调用f1,9次。执行return n*f1(n-1)会递归调用f1。
(2)“cmp dword ptr [ebp+8],1”是条件转移指令。“jmp f1+3Ah (0040103a)”“cmp dword ptr [ebp+8],1”一定会让程序通过跳转执行
(3)是00401027。M采用大端方式
(4)因为M是32位计算机,f1(int n)改成f1(long n)
评分及理由
(1)得分及理由(满分2分)
第一问:计算f(10)需要调用函数f1的次数,正确答案是10次(包括初始调用和递归调用),学生回答9次,缺少初始调用,属于逻辑错误,扣1分。
第二问:执行哪条指令会递归调用f1,学生回答“return n*f1(n-1)”是C语言代码,但题目要求是指令,正确答案是第16行的call指令,学生未明确指出指令,但描述正确,不扣分。
本小题得分:1分(第一问扣1分,第二问不扣分)。
(2)得分及理由(满分2分)
第一问:条件转移指令,学生回答“cmp dword ptr [ebp+8],1”是条件比较指令,不是转移指令,正确答案是第12行的jle指令,属于逻辑错误,扣1分。
第二问:一定会使程序跳转执行的指令,学生回答“jmp f1+3Ah”正确,但“cmp dword ptr [ebp+8],1”是条件比较指令,不会直接跳转,属于逻辑错误,扣1分。学生未提及call和ret指令,但题目要求“哪几条”,部分正确可酌情给分,但标准答案要求三条,学生只答对一条,扣1分。
本小题得分:0分(第一问扣1分,第二问扣2分,但第二问满分2分,扣完为止)。
(3)得分及理由(满分4分)
第一问:第17行指令的虚拟地址,学生回答00401027,错误。正确答案是0040102A(00401025H + 5H),计算错误,扣2分。
第二问:偏移量计算,学生未给出,扣2分。
第三问:大端或小端方式,学生回答大端方式,错误。根据偏移量字段低字节存储在低地址,应为小端方式,扣1分。
本小题得分:0分(第一问扣2分,第二问扣2分,第三问扣1分,但满分4分,扣完为止)。
(4)得分及理由(满分4分)
第一问:两者不相等的原因,学生未说明溢出问...
登录后发布评论
暂无评论,来抢沙发