主题:关于文件相关知识的疑问,请帮忙,谢谢
今天晚上刚自学汇编语言简明教程的关于建立文件,写文件等内容的章节。
遇到了几个问题,实在弄不明白,向大家请教一下:
1. mov ah,01
int 21h;键盘输入并回显
mov ah,02;显示输出
[color=FF0000]请问上面这两个DOS功能调用的区别是什么?怎么好像都是要显示啊?[/color]
2.下面是一段建立一个文件的汇编的例子的片断:
DATA SEGMENT
MESS0 DB 0DH,0AH,'Input file name:$'
BUFFER DB 60,?
FILENAME DB 60 DUP(?)
HANDLE DW ?
DTA DB ?
PROMPT DB 0DH,0AH,'Input text:$'
SUCCESS DB 0DH,0AH,'Write success.$'
FAIL1 DB 0DH,0AH,'Fail to create.$'
FAIL2 DB 0DH,0AH,'Fail to write.$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
...
...;省略一段
AGAIN:MOV AH,01H
INT 21H
MOV DAT,AL;键盘输入一个字符,送入DTA
AGN1: MOV AH,40H
MOV CX,1
INT 21H;把这个字符写入磁盘文件
;----------------------------------------------
[color=FF0000] 这里的注释说的把字符写入磁盘文件,到底是写到哪里去啊?[/color]
;------------------------------------------------------
JC ERR2;写文件错误,转ERR2
CMP DTA,0DH;刚输入字符是否为回车符
JNE AGN2
PUSH DX;保护DX的值
MOV AH,2
MOV DL,0AH
INT 21H;输入回车符后在显示器上输出换行符
;-----------------------------------------------------------
[color=FF0000]这里为什么不直接在显示器上输出回车符呢?为什么还要把0AH送到显示器上输出?0DH不是也会回显在显示器上的吗?两者在这里有什么区别?[/color]
;-----------------------------------------------------------------
POP DX;恢复DX的值
MOV DTA,0AH;换行字符填入DTA
JMP AGN1;换行字符补写到磁盘文件中
AGN2: CMP DTA,1AH;检查刚输入的字符是否为EOF
JNE AGAIN;不是EOF,继续键盘输入
LEA DX,SUCCESS
CALL DISP;显示写文件成功信息
CLOSE:MOV AH,3EH
MOV BX,HANDLE
;--------------------------------------------------------------------
[color=FF0000] 这个HANDLE,书上说是叫文件代号,是由操作系统分配给文件的,请问是不是也就是大家常说的句柄?[/color]
;---------------------------------------------------------------------
INT 21H;关闭文件
.......
....... ;此处省略结束段
----------------------------------------------------------------------------
红色部分是我的疑问。
我没有老师教,只能自学,也许问的问题有些幼稚,不过如果大家有时间,还是请帮忙解释一下,感激不尽。
遇到了几个问题,实在弄不明白,向大家请教一下:
1. mov ah,01
int 21h;键盘输入并回显
mov ah,02;显示输出
[color=FF0000]请问上面这两个DOS功能调用的区别是什么?怎么好像都是要显示啊?[/color]
2.下面是一段建立一个文件的汇编的例子的片断:
DATA SEGMENT
MESS0 DB 0DH,0AH,'Input file name:$'
BUFFER DB 60,?
FILENAME DB 60 DUP(?)
HANDLE DW ?
DTA DB ?
PROMPT DB 0DH,0AH,'Input text:$'
SUCCESS DB 0DH,0AH,'Write success.$'
FAIL1 DB 0DH,0AH,'Fail to create.$'
FAIL2 DB 0DH,0AH,'Fail to write.$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
...
...;省略一段
AGAIN:MOV AH,01H
INT 21H
MOV DAT,AL;键盘输入一个字符,送入DTA
AGN1: MOV AH,40H
MOV CX,1
INT 21H;把这个字符写入磁盘文件
;----------------------------------------------
[color=FF0000] 这里的注释说的把字符写入磁盘文件,到底是写到哪里去啊?[/color]
;------------------------------------------------------
JC ERR2;写文件错误,转ERR2
CMP DTA,0DH;刚输入字符是否为回车符
JNE AGN2
PUSH DX;保护DX的值
MOV AH,2
MOV DL,0AH
INT 21H;输入回车符后在显示器上输出换行符
;-----------------------------------------------------------
[color=FF0000]这里为什么不直接在显示器上输出回车符呢?为什么还要把0AH送到显示器上输出?0DH不是也会回显在显示器上的吗?两者在这里有什么区别?[/color]
;-----------------------------------------------------------------
POP DX;恢复DX的值
MOV DTA,0AH;换行字符填入DTA
JMP AGN1;换行字符补写到磁盘文件中
AGN2: CMP DTA,1AH;检查刚输入的字符是否为EOF
JNE AGAIN;不是EOF,继续键盘输入
LEA DX,SUCCESS
CALL DISP;显示写文件成功信息
CLOSE:MOV AH,3EH
MOV BX,HANDLE
;--------------------------------------------------------------------
[color=FF0000] 这个HANDLE,书上说是叫文件代号,是由操作系统分配给文件的,请问是不是也就是大家常说的句柄?[/color]
;---------------------------------------------------------------------
INT 21H;关闭文件
.......
....... ;此处省略结束段
----------------------------------------------------------------------------
红色部分是我的疑问。
我没有老师教,只能自学,也许问的问题有些幼稚,不过如果大家有时间,还是请帮忙解释一下,感激不尽。