;功能:顯示當前目錄下的文字檔案內容EOF = 1AHDSEG SEGMENTFNAME DB "E:\asm\TEST.BAT",0 ;檔案完整路徑名ERROR1 DB "File not found",07H,0 ;提示資訊ERROR2 DB "Reading error",07H,0 BUFFER DB ? ;1位元組的緩衝區DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART: 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 OVEROPEN_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 DMESSTYPE_OK:MOV AH,3EH ;關閉檔案 INT 21HOVER: MOV AH,0 ;結束程式 INT 16H MOV AH,4CH INT 21HREADCH 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:CLCREADCH2:RETREADCH ENDP;;;;顯示一個以0為結束符的字串DMESS PROCDMESS1: MOV DL,[SI] INC SI OR DL,DL JZ DMESS2 MOV AH,2 INT 21H JMP DMESS1DMESS2: RETDMESS ENDP;顯示一個字元PUTCH PROC PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RETPUTCH ENDPCSEG ENDS END STAR我剛開始學彙編,這是書上一個例題,給你看看,masm編寫的
;功能:顯示當前目錄下的文字檔案內容EOF = 1AHDSEG SEGMENTFNAME DB "E:\asm\TEST.BAT",0 ;檔案完整路徑名ERROR1 DB "File not found",07H,0 ;提示資訊ERROR2 DB "Reading error",07H,0 BUFFER DB ? ;1位元組的緩衝區DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART: 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 OVEROPEN_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 DMESSTYPE_OK:MOV AH,3EH ;關閉檔案 INT 21HOVER: MOV AH,0 ;結束程式 INT 16H MOV AH,4CH INT 21HREADCH 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:CLCREADCH2:RETREADCH ENDP;;;;顯示一個以0為結束符的字串DMESS PROCDMESS1: MOV DL,[SI] INC SI OR DL,DL JZ DMESS2 MOV AH,2 INT 21H JMP DMESS1DMESS2: RETDMESS ENDP;顯示一個字元PUTCH PROC PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RETPUTCH ENDPCSEG ENDS END STAR我剛開始學彙編,這是書上一個例題,給你看看,masm編寫的