下面的程序用来删除字符串’AABA’中第1个出现的由DAT单元指定的字符,删除字符后,后面字符前移,并在字符串尾部添加字符,’$’(24H)。请在横线处填充,使程序能达到预定的功能。 DSEG SEGMENT BUF D

admin2010-11-09  30

问题 下面的程序用来删除字符串’AABA’中第1个出现的由DAT单元指定的字符,删除字符后,后面字符前移,并在字符串尾部添加字符,’$’(24H)。请在横线处填充,使程序能达到预定的功能。
DSEG         SEGMENT
BUF           DB         ’AABA’
CNT           DW        $-BUF
DAT           DB         41H
DSEG   ENDS
SSEG   SEGMENT STACK
DB      256DUP (0)
SSEG   ENDS
CSEG   SEGMENT
ASSUME    DS:DSEG. SS:SSEG,CS:CSEG. ES:DSEG
START PROC    FAR
PUSH      DS
XOR       AX,AX
PUSH      AX
MOV       AX, DSEG
MOV       DS,AX
MOV       ES,AX
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       ______, 24H
EXIT:     RET
START    ENDP
CSEG      ENDS
END       START

选项

答案BYTE PTR [DI-1]或者byte ptr[di-1]

解析 该程序先在指定的字符中查找DAT指定的字符41H,若没有查到则该程序结束,若找到,则判断其在字符串中的位置,删除该字符,并将后面的字符前移,根据题目要求在字符串结尾加上字符’$’(24H)。空缺处完成的功能是在字符串结尾加上字符’$’(24H),由于DI的属性是字类型,而操作数要求是字节类型,所以要改变操作数的属性。
转载请注明原文地址:https://jikaoti.com/ti/Pf27FFFM
0

最新回复(0)