19. 假设(AL)=0FFH依次执行ADD AL0FH指令后,标志位ZF和SF的状态分别为
(A)0和0 (B)0和1
(C)1和0 (D)1和1
答案:A
分析:1. ADD和AND指令对标志位均能产生影响,两条指令依次执行,所以看后一条指令对ZF和SF的影响。
2. ADD AL,12指令执行后结果为(AL)=0BH(注意:该指令中的立即数12为十进制数,所以要变为十六进制数后与AL中的0FFH相加)。
3. AND指令能实现给特定位清零的功能,该指令中逻辑“与”常数为0FH,所以该指令对高4位清零,运算结果为(AL)=0BH,SF标志位为符号标志位,当运算结果最高位为0,SF=0,结果的最高位为1时,SF=1。ZF为零标志位,运算结果为0则ZF=1,结果非0则ZF=0,本题运算结果,为最高位为0的非0数据,所以SF=0,ZF=0。
20. 执行下列哪一条指令后,就能用条件转移指令判断AL和BL寄存器中的最高位是否相同?
(A)TEST ALBL (B)CMP ALBL (C)AND ALBL (D)XOR ALBL
答案:D
分析:异或运算指令功能为:目的操作数和源操作数按位进行异或运算,对应位相同,该位的运算结果为0,否则为1。执行XOR AL,BL后当AL和BL寄存器中最高位相同时,将影响SF=0,不同时影响SF=1,因此执行了XOR AL, BL后可以用条件转移指令判断AL和BL寄存器中的最高位是否相同。
21. 若有BUF DW 1234,则可将数据02H取到AL寄存器中的指令是:
(A)MOV ALBYTE PTRBUF+1
(B)MOV ALBYTE PTRBUF+2
(C)MOV ALBYTE PTRBUF+3
(D)MOV ALBYTE BUF2
答案:B
分析:DW定义字伪指令为每个操作数分配两个存储单元, BUF DW 1,2,3,4指令定义的存储单元分配情况如图:
02H所在存储单元相对BUF单元位移量为2,所以将02H取到AL寄存器中的指令是MOV AL,BYTE PTR[BUF+2]。