|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wkavenger 于 2019-3-25 03:01 编辑
下面的3条指令执行后,CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
解题过程:
假设开始地址0x1000,bx=0x0
0x1000 mov ax,bx #第一次修改(+0x2),因为要执行下一行命令
0x1002 sub ax,ax #第二次修改(+0x2),因为要执行下一行命令,但因为下一句为跳转,此处的ax为IP,所以进行理解为第三次修改(IP=0)。
0x1004 jmp ax #跳转到0x1000进入无限死循环。
答:
三条指令除jmp外需修改2次IP,mov修改1次,共计3次,最后IP中的值是0。
3次是错误的,看了小甲鱼的回复正确答案,牢记~~
https://fishc.com.cn/forum.php?m ... 542&pid=2603310
错误分析:
sub ax,ax 实际上是一整条语句,执行完就只修改一次,他的作用就是将ax=ax-ax,然后进入下一句。
有点不理解的是
第 3 次:读入 jmp ax 后
第 4 次:执行完 jmp ax 后
这个有点难理解,希望有权威人士解答下。
jmp ax实际上进行了两次IP的修改么?
读取执行并执行最终的修改? |
|