我完成了导航键的创建,读写。一切正常,但选项卡和输入一直有错误。这是我用来检查是否按下制表符和回车
键的代码user:
cmp ah,1ch
je ent
cmp al,9
je 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表示字符总数。
如果我按 Enter 并保存文件,然后使用记事本重新打开文件,则不会出现输入。
输入在那里,但您没有使用 DOS<EOL>
序列,该序列长度为两个字节:13、10。您确实只插入了由单字节 10 组成的类似 UNIX 的<EOL>
,记事本处理得不好(任何更高级的文本编辑器通常都会自动检测结束行并很好地理解 UNIX 样式,IIRC 写字板和记事本++当然可以,当然是 Linux 中的每个文本编辑器(。
您可以通过插入两个字节 13、10 新行序列(或使用支持当前新行的文本编辑器(来修复它。
从您的帖子中不清楚选项卡的问题是什么,代码看起来也不错。
另外,我想您可能希望在call OUTPUT_BUFFER
之前增加file_size
,因为数据已经更大了?