文章
159
粉丝
0
获赞
0
访问
9.8k
(1)计算f(10)需要调用函数f1共10次,执行第16行的call指令会递归调用f1。
(2)第12行的jle指令是条件转移指令,其含义为小于等于时转移,本行代码的意义为:
当n<1时,跳转至地址00401035H。第16行的call指令为函数调用指令,第20行的jmp指令
为无条件转移指令,第30行的ret指令为子程序的返回指令,这三条指令一定会使程序跳转执行。
(3)其长度计算机M上按字节编址,第16行的call指令的虚拟地址为00401025H,长度
为5字节,故第17行的指令的虚拟地址为00401025H+5=0040102AH。第16行的call指令
优
KE
采用相对寻址方式,即目标地址=(PC)+偏移量,call指令的目标地址为00401000H,所以偏
移量=目标地址-(PC)=00401000H-0040102AH=FFFFFFD6H。根据第16行的call指令的
偏移量为D6FFFFFF,可以确定M采用小端方式。
选
4)因为(13)=6227020800,其结果超出了32位int型数据可表示的最大范围,因此{13)
的返回值是一个发生了溢出的错误结果。为使f1(13)能返回正确结果,可将函数f1的返回值类
型改为 double(或 long long,或 long double,或 float)型。
2A
伤
5)若乘积的高33位为非全0或非全1,则OF=1。编译器应在imul指令后加一条“溢出
自陷指令”,使得CPU自动查询溢出标志OF,当OF=1时调出“溢出异常处理程序”。
评分及理由
(1)得分及理由(满分2分)
得分:2分
理由:学生完全正确回答了问题,准确指出计算f(10)需要调用函数f1共10次,并正确指出第16行的call指令会递归调用f1。
(2)得分及理由(满分2分)
得分:2分
理由:学生正确识别了第12行的jle指令是条件转移指令,并准确列出了第16行的call指令、第20行的jmp指令和第30行的ret指令一定会使程序跳转执行。
(3)得分及理由(满分4分)
得分:3分
理由:学生正确计算了第17行指令的虚拟地址为0040102AH,并正确计算了偏移量为FFFFFFD6H。但在判断M采用小端方式时,学生提...
登录后发布评论
暂无评论,来抢沙发