0%

第二章_8086指令系统练习题

指令对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

试问:

  1. 每条指令执行完后,AX寄存器的内容是什么?

  2. 每条指令执行完后,进位、符号和零标志的值是什么?

  3. 程序结束时,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
2
3
4
5
6
7
1、(AX)=1234H,标志位不变
2、(AX)和标志位都不变
3、(AX)=2341H,CF=1,SF和ZF不变
4、(AX)=2340H,CF=1不变,SF=0,ZF=0
5、(AX)和标志位都不变
6、(AX)=8D00H,CF=OF=0,其它标志无定义
(AX)=8D00H,(DX)=0

指令作用的考察

非压缩BCD码除法的调整

除法调整指令AAD调整的是( A )

A. AX中的被除数 B. AL中的商数

C. AX中的除数 D. AL中的余数

有符号数的乘除

题1:指令选择

完成对DX的有符号数除以2的指令是( )

  1. 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
3
4
5
6
7
8
9
(2)    
MOV AX, W
SUB AX, X ; 现在运算的数是16位
CWD ; 现在运算的数是32位,DX.AX
MOV BX, 5
IDIV BX ; 除法要求被除数位数是除数的2倍,所以BX不用拓展
IMUL Y
IMUL 2

题2.2 运用时注意位数拓展

计算:(V-(X*Y+Z-540))/X,其中X,Y, Z,V均为16位带符号数,已分别装入X,Y, Z,V单元中,要求上式计算结果的商

存入AX,余数存入DX寄存器。程序如下:

解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
MOV AX, X	; AX = X
IMUL Y ; DX.AX = X * Y
MOV BX, AX ; BX = AX
MOV CX, DX ; CX = DX
MOV AX, Z ; AX = Z
SUB AX, 540 ; AX = Z - 540
CWD ; DX.AX = Z - 540
ADD BX, AX ; BX = BX + AX 低位相加
ADC CX, DX ; CX = CX + DX 高位带进位的加,CX.BX = X * Y + Z - 540
MOV AX, V ; AX = V
CWD ; DX.AX = V
SUB AX, BX ; AX = AX - BX
SBB DX, CX ; DX = DX - CX 高位带进位的减, DX.AX = V - (X * Y + Z - 540)
IDIV X

说明指令错误的话术

17、指出下列指令的错误:

(1)MOV AH, BX

  1. 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

  1. MOV ECX, AX

解析

1
2
3
4
5
6
7
8
1、寄存器类型不匹配
2、目的和源操作数不能同时是存储器操作数
3、 [SI]和[DI]不能联合作为寻址方式
4、AX寄存器不能使用段超越
5、1000超过了一个字节的范围
6、MYDAT [SI]已经是偏移地址,不能再使用OFFSET
7、CS不能用作目的寄存器
8、两个操作数的数据类型不同

快速计算NOT,NEG,XOR相关计算

  1. NOT相当于15 - 什么什么
  2. NEG相当于0 - 什么什么
  3. 与1异或相当于取反