我完成了导航键的创建,读写。一切正常,但tab和enter仍然是马车。这是我用来检查tab和enter是否被按下的代码
user:
cmp ah,1ch
je ent
cmp al,9
je tab
以下是tab的代码并输入
ent:
mov bx,file_size
mov file_size1,bx
mov cx,1
call shift_right
mov si,offset buffer
add si,index
mov al,10
mov [si],al
call ClearScreen
call OUTPUT_BUFFER
mov si,offset buffer
inc file_size
inc index
mov x_pos,0
add y_pos,1
add si,index
inc si
jmp user
tab:
mov bx,file_size
mov file_size1,bx
mov cx,1
call shift_right_cx
mov al,9
mov [si],al
call ClearScreen
call OUTPUT_BUFFER
mov si,offset buffer
inc file_size
inc index
add x_pos,7
add si,index
inc si
jmp user
缓冲区是保存字符串的地方。索引跟踪字符串的索引。 file_size表示总字符数。
如果我按回车并保存文件,然后我使用记事本重新打开文件,则不会出现输入。
答案 0 :(得分:2)
输入就在那里,但你没有使用DOS <EOL>
序列,这是两个字节长:13,10。你确实只插入了由单字节10组成的类似UNIX的<EOL>
,和记事本不能很好地处理(任何更高级的文本编辑器通常会自动检测结束行并很好地理解UNIX风格,IIRC的wordpad和记事本++当然可以,或者当然是linux中的每个文本编辑器。)
您可以通过插入两个字节13,10新行序列(或使用支持当前新行的文本编辑器)来修复它。
从你的帖子中不清楚tab有什么问题,代码看起来也不错。
另外我猜您可能希望在file_size
之前增加call OUTPUT_BUFFER
,因为数据已经更大了?