关于汇编的计算题,两道,求问解答过程,这几天在学,非常感谢
下列是debug的截图-ess:20381785:203800.2100.AB-rAX=0000BX=FFFFCX=0000DX=0000SP=2038BP=0000SI...
下列是debug的截图-e ss:20381785:2038 00.21 00.AB
-rAX=0000 BX=FFFF CX=0000 DX=0000 SP=2038 BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0100 NV UP EI PL NZ NA PO NC
-a 1001785:0100 pop dx
1785:0101 push bx
1785:0102 mov bx,AB22
1785:0105 sub bx,dx
1785:0107 pop cx
1785:0108 add cx,bx
1785:010A(offset 100到109)
求解ax,bx,cx,dx,sp的值,并说明计算过程;zero flag和parity flag是否建立(有),说明原因并给出过程
2.下列是debug的截图
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=2050BP=0000 SI=0000 DI=0000
DS=13A7 ES=13A7 SS=1300 CS=1000 IP=0100 NV UPEI PL NZ NA PO NC
-d ss:2050 205F
1300:2050 0F 00 F0 00 00 0F 00 F0-08 09 0A 0B0C 0D 0E 0F
-a 100
1000:0100 pop ax
1000:0101 pop bx
1000:0102 add ax,bx
1000:0104 pop cx
1000:0105 add ax,cx
1000:0107 pop dx
1000:0108 add ax,dx
1000:010A add ax,1
1000:010C(offset从100到10B)
求解ax,bx,cx,dx,sp的值,并说明计算过程;zero flag和parity flag是否建立(有),说明原因并给出过程
求问,非常感谢~
后面半问是问ZF(zerp flag),PF(parity flag)是否会出现,当这些编码全部打完后运行的时候?(在编码未打之前是NZ(non zero,上图有),感谢~~ 展开
-rAX=0000 BX=FFFF CX=0000 DX=0000 SP=2038 BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0100 NV UP EI PL NZ NA PO NC
-a 1001785:0100 pop dx
1785:0101 push bx
1785:0102 mov bx,AB22
1785:0105 sub bx,dx
1785:0107 pop cx
1785:0108 add cx,bx
1785:010A(offset 100到109)
求解ax,bx,cx,dx,sp的值,并说明计算过程;zero flag和parity flag是否建立(有),说明原因并给出过程
2.下列是debug的截图
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=2050BP=0000 SI=0000 DI=0000
DS=13A7 ES=13A7 SS=1300 CS=1000 IP=0100 NV UPEI PL NZ NA PO NC
-d ss:2050 205F
1300:2050 0F 00 F0 00 00 0F 00 F0-08 09 0A 0B0C 0D 0E 0F
-a 100
1000:0100 pop ax
1000:0101 pop bx
1000:0102 add ax,bx
1000:0104 pop cx
1000:0105 add ax,cx
1000:0107 pop dx
1000:0108 add ax,dx
1000:010A add ax,1
1000:010C(offset从100到10B)
求解ax,bx,cx,dx,sp的值,并说明计算过程;zero flag和parity flag是否建立(有),说明原因并给出过程
求问,非常感谢~
后面半问是问ZF(zerp flag),PF(parity flag)是否会出现,当这些编码全部打完后运行的时候?(在编码未打之前是NZ(non zero,上图有),感谢~~ 展开
1个回答
展开全部
1:-e ss:2038 1785:2038 00.21 00.AB 的意思就是修改堆栈2038及以后的数据,可以看出分别输入的是21 AB,因此如果看出一个字的话其值就是AB21
随后的A命令表示输入汇编代码,根据代码,和SP的值可知,第一句pop dx就是把堆栈中刚输入的值付给了DX,然后保存BX,修改BX,减法,显然AB22减去AB21后BX=1且没有借位,再弹出原来的堆栈中的BX值=FFFF到CX,再加BX=1后变为0,并且有进位(和借位为同一标志位),于是AX=0000不变,BX=1,CX=0,DX=AB21,SP=203A,其他的同此分析方法。
随后的A命令表示输入汇编代码,根据代码,和SP的值可知,第一句pop dx就是把堆栈中刚输入的值付给了DX,然后保存BX,修改BX,减法,显然AB22减去AB21后BX=1且没有借位,再弹出原来的堆栈中的BX值=FFFF到CX,再加BX=1后变为0,并且有进位(和借位为同一标志位),于是AX=0000不变,BX=1,CX=0,DX=AB21,SP=203A,其他的同此分析方法。
追问
第二题ax..是5F20吗(还是205F)。推bx,原来ax=0000的值弹出到bx,bx是0000,加一起BX是5F20,弹出原来的b值0000(还是现在的值5F20?),cx等于5F20还是5F20+5F20(BE40?),弹出cx值BE40(?)到dx,dx=5F20还是什么ax=5F20+1=5F21吗?sp=2058吗?不好意思能麻烦帮忙解答一下正解吗非常谢谢~
追答
如果是字处理,如Push CX,则低位字节在前,高位字节在后,书上有的,自己debug也可以检验下。
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=2050BP=0000 SI=0000 DI=0000
DS=13A7 ES=13A7 SS=1300 CS=1000 IP=0100 NV UPEI PL NZ NA PO NC
-d ss:2050 205F
1300:2050 0F 00 F0 00 00 0F 00 F0-08 09 0A 0B0C 0D 0E 0F
-a 100
1000:0100 pop ax ; SP = 2052, AX = 000F, 不是运算,不改变标志位
1000:0101 pop bx ; SP = 2054, BX = 000F, 不是运算,不改变标志位
1000:0102 add ax,bx ; SP = 2054, AX = 001E, CY = 0, ZF = 0, PL = PE
1000:0104 pop cx ; SP = 2056, CX = F000, CY = 0, ZF = 0, PL = PE
1000:0105 add ax,cx ; SP = 2056, AX = F01E, CY = 0, ZF = 0, PL = PE
1000:0107 pop dx ; SP = 2058, DX = F000, CY = 0, ZF = 0, PL = PE
1000:0108 add ax,dx ; SP = 2058, AX = E01E, CY = 1, ZF = 0, PL = PO
1000:010A add ax,1 ; SP = 2058, AX = E01F, CY = 0, ZF = 0, PL = PE
1000:010C(offset从100到10B)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询