关于向文件中写入退格键的问题!

aa279686030 2011-06-10 11:57:41
大侠们不用太自己看代码,我的问题 说出来很简单!就是我的程序是这样的,你在屏幕上输入一个字符串,然后把它写到文件中其中CTRL+Z键结束程序,我的问题是对于输入控制字符的处理!当输入回车键的话,我们立马在屏幕上显示一个换行的效果,同样按退格键也是显示显示回车的效果。对于退格键的话,在屏幕上可以先退一格(有字符的话),然后输出空格擦除,然后再回退一格就可以达到回车的效果了,但是要在文件中达到相同的效果就很困难了。
比如先输入一个a的话,然后回车,按理说文件中应该什么都没有,但是文件中a字符的asc码它是擦不掉啊,所以退格键如何在文件中实现,大侠们给点意见哈!大侠不用写出代码,只要给个大概的思路就行或者简要的代码就ok了
;
EOF = 1AH
DATA SEGMENT
FNAME DB '\TEST.TXT',0
ERRMESS1 DB 'CAN NOT CREATE FILE',07H,'$'
ERRMESS2 DB 'WRITING ERROR',07H,'$'
BUFFER DB ?,?
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET FNAME
MOV CX,0
MOV AH,3CH
INT 21H
JNC CREA_OK ;CF = 0 表示成功
MOV DX,OFFSET ERRMESS1
CALL DISPMESS
JMP OVER
CREA_OK:MOV BX,AX
CONT: CALL GETCHAR
PUSH AX
CALL WRITECH
POP AX
JC WERROR ;出错,转移
CMP AL,EOF
JNE CONT
JMP CLOSEF
WERROR: MOV DX,OFFSET ERRMESS2
CALL DISPMESS
CLOSEF: MOV AH,3EH
INT 21H
OVER: MOV AX,4C00H
INT 21H

WRITECH PROC
CMP AL,0DH
JZ WRITECH1 ;换行的处理
; CMP AL,08H
; JMP WRITECH2 ;退格的处理
MOV BUFFER,AL
MOV DX,OFFSET BUFFER
MOV CX,1
MOV AH,40H
INT 21H
JMP OK
WRITECH1:
MOV DL,0AH
MOV AH,2
INT 21H ;显示屏上显示换行
MOV BUFFER,0DH ;文件写入换行
MOV BUFFER + 1,0AH
MOV DX,OFFSET BUFFER
MOV CX,2
MOV AH,40H
INT 21H
JMP OK
;WRITECH2:


OK: RET
WRITECH ENDP

GETCHAR PROC
MOV AH,1
INT 21H
RET
GETCHAR ENDP

DISPMESS PROC
MOV AH,9
INT 21H
RET
DISPMESS ENDP
CODE ENDS
END START

...全文
213 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aa279686030 2011-06-12
  • 打赏
  • 举报
回复
今天自己已经解决了,移动文件指针是不能解决问题的。他并没有删除的效果!
正确的方法是先写若干个字符写到内存中,然后在送到文件中。
iambic 2011-06-12
  • 打赏
  • 举报
回复
什么乱七八糟的。撞大运?
iambic 2011-06-11
  • 打赏
  • 举报
回复
seek

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧