问题
填空题
下面的汇编语言源程序经汇编后,发现TEST[BX],01H指令有语法错误,试问该指令的正确形式应该是 【8】 。
DSEG SEGMENT
DAT DB 5,13,4,-2,6,23,44,-1,29,-3
CNT DW $-DAT
DSEG ENDS
SSEG SEGMENTSTACK
DB 256DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUMEDS:DSEG,SS:SSEG,CS:CSEC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
XOR AX,AX
MOV BX,OFFSET DAT
MOV CX,CNT
LP: TEST [BX],01H
JZ NEXT
INC AH
ADD AL,[BX]
NEXT: INC BX
LOOP LP
RET
START ENDP
CSEG ENDS
END START
答案
参考答案:TEST BYTE PTR[BX],01H或TEST DAT[BX],01H
解析: 这段程序的功能是判断数据区内所有数据的奇偶,将奇数的个数存放在AH中,并将所有的奇数求和,结果放在AL中。因为在数据段既有DB类型的变量,也有DW类型的变量,指令TEST[BX],01H不能确定使用哪一种类型,所以需要指定[BX]的属性,所以正确的写法应该是:TEST BYTE PTR[BX],01H。