汇编语言王爽第四版检测点答案
关于王爽汇编语言检测点13.1(01),求正确答案及详细说明. -
按常理来说应该是16位的最大值FFFFH,因为这是一个内存字单元。但是书上说了:用bx存放转移位移,如果说(bx) = FFFFH的话,执行add [bp+2],bx时就会产生进位溢出,从而不能跳转到标号s处;因为原来ss:bp+2处的字型数据为offset se,因此有max( (bx) + offset se ) = FFFFH,从而有max(b等会说。
第二个程序:程序运算过程是这样的:因为在整个循环体执行过程中ss,ds寄存器中的数是不变的,只有sp和bx在变,也就是栈顶位置和内存单元指针DS:[bx]在变。所以我们只观察sp和bx的变化。第一次循环:初始时(sp=36,bx=0;)1.执行push(sp=sp-2=34,bx=0);2.执行pop(sp=sp+2=36,bx=0);说完了。
按常理来说应该是16位的最大值FFFFH,因为这是一个内存字单元。但是书上说了:用bx存放转移位移,如果说(bx) = FFFFH的话,执行add [bp+2],bx时就会产生进位溢出,从而不能跳转到标号s处;因为原来ss:bp+2处的字型数据为offset se,因此有max( (bx) + offset se ) = FFFFH,从而有max(b等会说。
第二个程序:程序运算过程是这样的:因为在整个循环体执行过程中ss,ds寄存器中的数是不变的,只有sp和bx在变,也就是栈顶位置和内存单元指针DS:[bx]在变。所以我们只观察sp和bx的变化。第一次循环:初始时(sp=36,bx=0;)1.执行push(sp=sp-2=34,bx=0);2.执行pop(sp=sp+2=36,bx=0);说完了。
检测点11.1(第205页)--- ZF PF CF 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 1 0
填0x1A你现在有5个0,sp要指向下一个dw处(你就理解成第六个),我数出来也就是0x1A为什么要指向下一个,这样去记push指令的工作顺序如下先将sp减去CPU位数/8(对于这题16位是2,win32自然是4)再将push的值保存到[sp]中你这样想就顺理成章了的要将sp指向下一处了有帮助请点赞。