指令对PSW标志位的影响
题1
7、下列指令中,不影响PSW的指令是( A )。
A. MOV B. TEST C. SAL D. CLD
解析:
A.
MOV
:数据传输指令,用于将数据从一个位置移动到另一个位置。MOV
指令不影响标志寄存器中的任何标志位。
B.
TEST
:逻辑测试指令,用于对两个操作数进行AND操作,但不存储结果。TEST
会根据结果影响标志寄存器中的零标志(ZF)、符号标志(SF)、奇偶标志(PF)和辅助进位标志(AF)。
C.
SAL
:算术左移指令,将操作数的位向左移动指定的位数。SAL
指令会影响进位标志(CF)和符号标志(SF),如果左移后的最高位发生了变化。
D.
CLD
:清除方向标志指令,用于清除标志寄存器中的DF位(方向标志)。CLD
指令直接影响了标志寄存器,因此会影响PSW。
题2
16、已知程序段如下:
MOV AX, 1234H
MOV CL, 4
ROL AX, CL
DEC AX
MOV CX, 4
MUL CX
INT 20H
试问:
每条指令执行完后,AX寄存器的内容是什么?
每条指令执行完后,进位、符号和零标志的值是什么?
程序结束时,AX和DX的内容是什么?
解析:
ROL是先将1位移动到CF里,再从CF里移动到最左边,再ROL AX, CL中AX里的数原来是1234H,ROL 4位,所以相当于将1移动到最左边变成2341H,其中十进制1二进制表示为0001,所以移动最后1位是1,CF中是1
MUL是无符号数的乘法,只修改CF和OF,对于SF和ZF等无定义维持原状(所有乘除法都一样)
1 | 1、(AX)=1234H,标志位不变 |
指令作用的考察
非压缩BCD码除法的调整
除法调整指令AAD调整的是( A )
A. AX中的被除数 B. AL中的商数
C. AX中的除数 D. AL中的余数
有符号数的乘除
题1:指令选择
完成对DX的有符号数除以2的指令是( )
- IDIV 2 b. SAR DX,1 c. ROR DX,1 d. RCR DX,1
解析:
b,
A:IDIV默认对AX,所以错误
B:SH(L/R)是逻辑移位,适用于无符号数,SA(L/R)是算术移位,适用于有符号数
题2.1:运用时注意位数拓展
需要拓展的情况:如果是加减必须保证位数相等,如果是除法必须保证被除数的位数是除数的2倍
18、写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数单元的地址。
Z←((W-X)/5*Y)*2
解析:
1 | (2) |
题2.2 运用时注意位数拓展
计算:(V-(X*Y+Z-540))/X,其中X,Y, Z,V均为16位带符号数,已分别装入X,Y, Z,V单元中,要求上式计算结果的商
存入AX,余数存入DX寄存器。程序如下:
解析:
1 | MOV AX, X ; AX = X |
说明指令错误的话术
17、指出下列指令的错误:
(1)MOV AH, BX
- MOV [BX], [SI]
(3)MOV AX, [SI][DI]
(4)MOV MYDAT [BX][SI], ES:AX
(5)MOV BYTE PTR [BX], 1000
(6)MOV BX, OFFSET MYDAT[SI]
(7)MOV CS, AX
- MOV ECX, AX
解析
1 | 1、寄存器类型不匹配 |
快速计算NOT,NEG,XOR相关计算
- NOT相当于15 - 什么什么
- NEG相当于0 - 什么什么
- 与1异或相当于取反