请编制程序,其功能是:将一个字符串中连续相同的字符仅用一个字符代替,生成一个新的字符串。字符串以00H结束,长度不超过20个字节。
例如: 原字符串为 41H,41H,41H,42H,31H,31H,00H('AAAB11')
新字符串为 41H,42H,31H,00H('AB1')
部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中(请自行在CX中设定输出长度)。
请在BEGIN和END之间补充一段源程序,完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
试题程序:
EXTRN LOAD:FAR,SAVE:FAR
LE EQU 20
DSEG SEGMENT
SOURCE DB LEN DUP(?)
RESULT DB LEN DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DW 256 DUP(?)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
LEA DX,SOURCE ;数据区起始地址
LEA SI,NAME0 ;原始数据文件名
MOV CX,LEN ;字节数
CALL LOAD ;从'INPUT1.DAT'中读取数据
;****BEGIN****
LEA SI,SOURCE
LEA DI,RESULT
MOV CX,20
LOOP1: MOV AL,[SI]
CMP AL,00H
JE EXIT
NEXT: INC SI
MOV AH,[SI]
CMP AL,AH
JE NEXT
MOV [DI],AL
INC DI
JMP LOOP1
EXIT: MOV [DI],AL
;****END****
LEA DX,RESULT ;结果数据区首址
LEA SI,NAME1 ;结果文件名
CALL SAVE ;保存结果到文件
RET
START ENDP
CSEG ENDS
END START
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|