216编写程序段,使(AH)与AL中的内容互换。解1MOVBLALMOVALAHMOVAHBL解2XCHGAHAL217编写程序段,使(BL)中高4位与低4位内容互换。解1MOVCL4MOVBH0SHLBXCLADDBLBH解2MOVCL4ROLBLCL218编写程序段,实现当(DL)是奇数时使(AL)31H,否则使(AL)30H。SHRDL1MOVAL0RCLAL1ADDAL30H220设寄存器AX中存放1234H,BX寄存器中存放1,执行DIVBL指令后,会发生什么现象?为什么?溢出,商超过8位,在AL中存放不下商。221设DX寄存器中存放值为0,AX中存放1234H,BX中存放1,执行DIVBX后,是否会出现与220相同现象?为什么?不会,因为是16位除法,商未超过16位222一字数据压栈时堆栈指针如何改变?弹出一字数据时堆栈指针如何改变?压栈时堆栈指针减2;弹出一字数据时堆栈指针加2223已知(SP)2088H,(AX)1A89H,(BX)90CDH。依次执行以下三条指令后,画图说明堆栈中数据情况,及SP、AX、BX中数据。PUSHAXPUSHBXPOPAX(SP)2086H,(AX)90CDH,(BX)90CDH。225编写程序段求8!的阶乘)(8。MOVAX8MOVBX7NEXTDX0MULBXDECBXJNZNEXT227假设(AX)07EH,变量BUFFER中存放的内容为B5H,求下列各条指令单独执行后的结果。
f1ANDAX,BUFFER34H2XORAX,BUFFERCBH3ORAX,BUFFER0FFH4ANDAX,005XORAX,OFFH81H6TESTAX,8000H相与结果为0时。AX为正,值不变228编写程序段,判断(AL)中的有符号数是正数还是负数,正数在CL中写0,否则写1。CMPAL0MOVCL0JGENEXTMOVCL1NEXT……229编写程序段,对存放在(DX)(AX)中的双字数据求补。、MOVBX0SUBBXAXMOVAXBXMOVBX0SBBBXDXMOVDXBX231假设(DX)78D5H,(CL)5,CF0,确定下列各条指令单独执行后(DX)中的值。(1)SHLDH,1(DX)F0D5H(2)SALDXCL(DX)1AA0H(3)SHRDX,CL(DX)03C6H(4)SARDL,1(DX)78EAH(5)ROLDX,CL(DX)1AAFH(6)RCRDL,1(DX)786AH(7)RCLDH,CL(DX)0FD5H232按下列要求编写指令序列。(1)清除DH中最低3位而不改变其他位,结果存入BH。ANDDH0F8H(2)将DI中最高3位置1而不改变其他位。ORDI0E000H(3)将AX中03位置1、79位取反、其他位清0。ORAX0FHXORAX380HANDAX38FH(4)检查BX中第2、5、9位是否至少有1位是1。TESTAX224H如果结果非0(5)检查CX中第1、6、11位是否同时为1。NOTCXTESTCX842H如果结果为0(6)检查BX中第0、2、9、13位是否至少有1位是0。NOTBX
fTESTBX2205H如果结果非0(7)检查DX中第1、4、11、14位是否同时是0。TESTDX4812H如果结果为0233编写指令序列分别实现下述r