汇编语言:请写一个程序把当前目录下的TEXT.TXT文件中的字符读出来显示在屏幕上,当遇到结束符时就停止读取。

题目:写一个程序把当前目录下的TEST.TXT文件中的字符内容读出来并显示在屏幕上,当遇到结束符时就停止读取。

我的test.txt中的内容是:


程序的运行结果如下:


我写的源代码如下:

EOF=065
DSEG  SEGMENT 
FNAME  DB 'TEST.TXT',0                                ;文件名 
ERROR1 DB 'File not found',07H,0        ;提示信息 
ERROR2 DB 'Reading error',07H,0 
BUFFER DB ?                                                        ;1字节的缓冲区、 
DSEG  ENDS 
;代码段 
CSEG  SEGMENT 
          ASSUME CS:CSEG,DS:DSEG 
START:MOV AX,DSEG 
          MOV DS,AX                                                ;置数据段寄存器 
          ; 
          MOV DX,OFFSET FNAME 
          MOV AX,3D00H            ;读打开指定文件 
          INT 21H 
          JNC OPEN_OK             ;打开成功,转 
          MOV SI,OFFSET ERROR1                        ;显示打开不成功提示信息 
          CALL DMESS 
          JMP OVER 
          ; 
OPEN_OK:MOV BX,AX                                        ;保存文件柄 
CONT: CALL READCH                                        ;从文件中读一个字符 
      JC READERR                                        ;如读出错,则转 
      CMP AL,EOF                                        ;读到文件结束符吗? 
      JZ TYPE_OK                                        ;是,转 
      CALL PUTCH                                        ;显示所读字符 
      JMP CONT                                                ;继续 
READERR:MOV SI,OFFSET ERROR2 
                CALL DMESS 
                ; 
TYPE_OK:MOV AH,3EH 
        INT 21H 
OVER:   MOV AH,07;为了显示 
        INT 21H         ;为了显示 
        MOV AH,4CH 
                INT 21H 
; 
READCH        PROC 
                MOV CX,1 
                MOV DX,OFFSET BUFFER                ;置缓冲区地址 
                MOV AH,3FH                                        ;置功能调用号 
                INT 21H                                                ;读 
                JC READCH2                                        ;读出错,转 
                CMP AX,CX                                        ;判文件是否结束 
                MOV AL,EOF                                        ;设文件已经结束,置文件结束符     
        JB READCH1                                        ;文件确已结束,转 
        MOV AL,BUFFER                                ;文件未结束,取所读字符 
READCH1:CLC 
READCH2:RET 
READCH ENDP 
; 
DMESS PROC 
DMESS1:MOV DL,[SI] 
           INC SI 
           OR DL,DL 
           JZ DMESS2 
           MOV AH,2 
           INT 21H 
           JMP DMESS1 
DMESS2:RET 
DMESS ENDP 


PUTCH PROC 
           PUSH DX 
           MOV DL,AL 
           MOV AH,2 
           INT 21H 
           POP DX 
           RET 
PUTCH ENDP 
CSEG ENDS 
         END START 

程序的说明:

       程序代码的说明我的源程序里面已经注释了。我想多说两句的是那个结束符的处理方法,你可以看到我的结束符定义的的eof=065,而这个065就是ASCII码,大家可以翻看一下常用字符与ascii代码的对照表,可以知道这个065定义的字符就是A(大写的A)。所以,当程序读到内容是A时,便立即停止了读取操作。当然,在这里大家可以自己根据自己的需要来定义自己的结束符。

       如果大家觉得不错的话,可以给我评论,我也可以顺便向大家请教一下,谢谢。

你可能感兴趣的:(汇编语言,汇编,语言,buffer,file)