王爽汇编3.1(2)求解
这道题的CPU执行的指令该如何写?看了答案之后还是想不懂,要是从2000:0的地址开始写起到jmp0ff0:0100就跳到了0ff0:0100,而movax,2000和后...
这道题的CPU执行的指令该如何写?看了答案之后还是想不懂,要是从2000:0的地址开始写起到jmp 0ff0:0100就跳到了0ff0:0100,而mov ax,2000和后面的些指令是写在10000h的地址上的,跳到0ff0:0100
也执行不到10000h地址上的
【
mov ax,6622H CS=2000H IP=0003H
jmp 0ff0,0100 CS=0FF0H IP=0100H
mov ax,2000H CS=0FF0H IP=0103H
mov ds,ax CS=0FF0H IP=0105H
mov ax,[0008] CS=0FF0H IP=0108H
mov ax,[0002] CS=0FF0H IP=010BH
】CPU执行每条指令后,CS、IP和相关寄存器中的数值
怎样做出来的?求帮忙解答下 展开
也执行不到10000h地址上的
【
mov ax,6622H CS=2000H IP=0003H
jmp 0ff0,0100 CS=0FF0H IP=0100H
mov ax,2000H CS=0FF0H IP=0103H
mov ds,ax CS=0FF0H IP=0105H
mov ax,[0008] CS=0FF0H IP=0108H
mov ax,[0002] CS=0FF0H IP=010BH
】CPU执行每条指令后,CS、IP和相关寄存器中的数值
怎样做出来的?求帮忙解答下 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
1个回答
展开全部
CPU执行指令开始位置由CS:IP确认,初始CS=2000H,IP=0
16位模式下的内存地址计算为:段寄存器*16+指针地址,所以初始运行地址为:2000H*16+0=20000H
即:
mov ax,6622H CS=2000H IP=0003H
jmp 0ff0,0100 CS=0FF0H IP=0100H;jmp指令会修改CS和IP寄存器的值。跳转到的地址为:0FF0H*16+0100H=10000H
mov ax,2000H CS=0FF0H IP=0103H
mov ds,ax CS=0FF0H IP=0105H
mov ax,[0008] CS=0FF0H IP=0108H
mov ax,[0002] CS=0FF0H IP=010BH
没有跳转指令的情况下,IP的值始终指向下一条指令的位置。即下一个IP的值为当前IP值+当前指令长度
理解了这些,上面的就不成问题了
16位模式下的内存地址计算为:段寄存器*16+指针地址,所以初始运行地址为:2000H*16+0=20000H
即:
mov ax,6622H CS=2000H IP=0003H
jmp 0ff0,0100 CS=0FF0H IP=0100H;jmp指令会修改CS和IP寄存器的值。跳转到的地址为:0FF0H*16+0100H=10000H
mov ax,2000H CS=0FF0H IP=0103H
mov ds,ax CS=0FF0H IP=0105H
mov ax,[0008] CS=0FF0H IP=0108H
mov ax,[0002] CS=0FF0H IP=010BH
没有跳转指令的情况下,IP的值始终指向下一条指令的位置。即下一个IP的值为当前IP值+当前指令长度
理解了这些,上面的就不成问题了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询