下面的程序用来删除字符串’AABA’中第1个出现的由DAT单元指定的字符,删除字符后,后面字符前移,并在字符串尾部添加字符’$’(24H)。请在横线处填充,使程序能达到预定的功能。
DSEG SEGMENT
BUF DB ’AABA’
CNT DW $-BUF
DAT DB 41H
DSEG ENDS
SSEG SEGMENT STACK
DB 256 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME DS:DSEG,SS:S
SEG,CS:CSEG,ES:DSEG
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
MOV ES,AS
CLD
LEA DI,BUF
MOV CX,CNT
MOV AL,DAT
REPNE SCASB
JE DEL
JMP EXIT
DEL: JCXZ FILL
NEXT: MOV BL,[DI]
MOV [DI-1],BL
INC DI
LOOP NEXT
FILL: MOV 【6】 ,24H
EXIT RET
START ENDP
CSEG ENDS
END START
参考答案:BYTE PTR [DI-1]#byte ptr[di-1]
解析: 该程序先在指定的字符中查找DAT指定的字符 41H,若没有查到则该程序结束若找到则判断其在字符串中的位置删除该字符,并将后面的字符前移,根据题目要求在字符串结尾加上字符‘$’(24H)。空缺处完成的功能是在字符串结尾加上字符‘$’(24H)由于DI的属性是字类型,而操作数要求是字节类型,所以要改变操作数的属性。