题目
按要求编写下列指令序列(设最低位为第0位)。(1) 把 DL 中的最低2位清零而不改变其他位;(2) 把 SI 的最高3位置1而不改变其他位;(3) 把 AX 中的第0~3位清零,第7~9位置1,第13~15位取反;(4) 检查 CX 中的第1、3和5位中是否有一位为1;(5) 检查 BX 中的第2、6和10位是否同时为1;
按要求编写下列指令序列(设最低位为第0位)。
(1) 把 DL 中的最低2位清零而不改变其他位;
(2) 把 SI 的最高3位置1而不改变其他位;
(3) 把 AX 中的第0~3位清零,第7~9位置1,第13~15位取反;
(4) 检查 CX 中的第1、3和5位中是否有一位为1;
(5) 检查 BX 中的第2、6和10位是否同时为1;
题目解答
答案
(1) 将DL的最低2位清零:
```assembly
AND DL, 0FCH
```
(2) 将SI的最高3位置1:
```assembly
OR SI, 0E000H
```
(3) AX中d0~d3清零,d7~d9置1,d13~d15取反:
```assembly
AND AX, 0FFF0H
OR AX, 0380H
XOR AX, 0E000H
```
(4) 判断CX中d1、d3或d5是否至少一位为1:
```assembly
MOV AX, CX
AND AX, 002AH
```
若AX ≠ 0,则满足条件。
(5) 判断BX中d2、d6和d10是否同时为1:
```assembly
MOV AX, BX
AND AX, 0444H
```
若AX = 0444H,则满足条件。
或:
```assembly
MOV AX, BX
AND AX, 0444H
XOR AX, 0444H
```
若AX = 0,则满足条件。
或:
```assembly
MOV AX, BX
AND AX, 0444H
OR AX, 0FBBBH
```
若AX = 0FFFFH,则满足条件。