文章
179
粉丝
0
获赞
0
访问
41.9k
1)10次;return n*f1(n-1),也就是 call f1 (00401000)会递归调用f1
2)jle f1+35h (00401035)是条件转移指令。call f1、jmp f1+3Ah会跳转
3)第17行应该是0040102A。
4)因为用的是int,13!计算的值超出了int所能表示的范围。可以把int改成long long。
5)
评分及理由
(1)得分及理由(满分2分)
第一问回答正确,计算f(10)需要调用f1共10次;第二问回答正确,指出第16行call指令会递归调用f1。得2分。
(2)得分及理由(满分2分)
第一问回答正确,jle是条件转移指令;第二问回答不完整,学生只答出call和jmp两条指令会跳转,但遗漏了ret指令。根据标准答案,应有三条指令一定会使程序跳转执行。扣1分。得1分。
(3)得分及理由(满分4分)
第一问回答正确,第17行指令虚拟地址为0040102AH;第二问未给出偏移量计算过程;第三问未回答大端小端问题。第二问和第三问均未作答,各扣2分。得2分。
(4)得分及理由(满分4分)
第一问回答正确,指出因int类型范围不足导致溢出;第二问回答正确,建议改为long long类型。得4分。
(5)得分及理由(满分4分)
两问均未作答,得0分。
题目总分:2+1+2+4+0=9分
登录后发布评论
暂无评论,来抢沙发