己知f(n)=n!=n×(n-1)×(n-2)×…×2×1,计算f(n)的C语言函数f1的源程序(阴影部分)及其在32位计算机M上的部分机器级代码如下: 其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令,计算机M按字节编址,int型数据占32

admin2020-06-17  47

问题 己知f(n)=n!=n×(n-1)×(n-2)×…×2×1,计算f(n)的C语言函数f1的源程序(阴影部分)及其在32位计算机M上的部分机器级代码如下:
  
其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令,计算机M按字节编址,int型数据占32位。请回答下列问题:
根据第16行call指令,第17行指令的虚拟地址应是多少?已知第16行call指令采用相对寻址方式,该指令中的偏移量应是多少(给出计算过程)?已知第16行call指令的后4字节为偏移量,M采用大端方式还是小端方式?

选项

答案其长度计算机M上按字节编址,第16行的call指令的虚拟地址为0040 1025H,长度为5字节,故第17行的指令的虚拟地址为0040 1025H+5=0040 102AH。第16行的call指令采用相对寻址方式,即目标地址=(PC)+偏移量,call指令的目标地址为0040 1000H,所以偏移量=目标地址-(PC)=0040 1000H-0040 102AH=FFFF FFD6H。根据第16行的call指令的偏移量字段为D6 FF FF FF,可以确定M采用小端方式。

解析
转载请注明原文地址:https://jikaoti.com/ti/2NDjFFFM
0

相关试题推荐
最新回复(0)