這只是我需要在文件處理中學習的練習代碼。我需要讀取一個文件,並將其內容複製到另一個創建的文件中,然後在該文件上我需要附加一個特定的簽名。TASM彙編語言寫入文件功能40H寫錯字符?
首先我的源代碼:
.MODEL SMALL
.STACK 100H
.DATA
FLENME DB 'D:\README.TXT', 0
FLENMEC DB 'D:\READMECPY.TXT', 0
BUFFER DW 100 DUP(0)
HANDLE DW ?
OERROR DB 'ERROR IN OPENING FILE', 10, 13, '$'
RERROR DB 'ERROR IN READING FILE', 10, 13, '$'
CLERROR DB 'ERROR IN CLOSING FILE', 10, 13, '$'
CRERROR DB 'ERROR IN CREATING FILE', 10, 13, '$'
WERROR DB 'ERROR IN WRITING FILE', 10, 13, '$'
FPERROR DB 'ERROR IN MOVING FILE POSITION', 10, 13, '$'
SIGN DB 10, 13, 'NICOLAS WAS HERE' ;18 BYTES
.CODE
BEGIN PROC FAR
MOV AX, @DATA
MOV DS, AX
MOV AX, 3D02H
LEA DX, FLENME
INT 21H
JC OPNER
MOV HANDLE, AX
MOV AX, 3F00H
MOV BX, HANDLE
MOV CX, 100
LEA DX, BUFFER
INT 21H
JC RDER
MOV AX, 3E00H
MOV BX, HANDLE
INT 21H
JC CLSER
MOV AX, 3C00H
LEA DX, FLENMEC
INT 21H
JC CRER
MOV HANDLE, AX
MOV AX, 4000H
MOV BX, HANDLE
LEA DX, BUFFER
MOV CX, 100
INT 21H
JC WERR
MOV AX, 4202H
MOV BX, HANDLE
MOV CX, 0000H
MOV DX, 0000H
INT 21H
JC FPERR
MOV AX, 4000H ;This line for writing to file the signature
MOV BX, HANDLE
MOV CX, 18
LEA DX, SIGN
INT 21H
JC WERR
MOV AX, 3E00H
MOV BX, HANDLE
INT 21H
JC CLSER
JMP EXT
OPNER: LEA DX, OERROR
JMP EERRR
RDER: LEA DX, RERROR
JMP EERRR
CLSER: LEA DX, CLERROR
JMP EERRR
CRER: LEA DX, CRERROR
JMP EERRR
WERR: LEA DX, WERROR
JMP EERRR
FPERR: LEA DX, FPERROR
JMP EERRR
EERRR: MOV AX, 0900H
INT 21H
EXT: MOV AX, 4C00H
INT 21H
BEGIN ENDP
END BEGIN
它讀取這個內容的文件:
你好
然後輸出(創建另一個文件)與此內容
你好(空格)30䥎佃䅌⁓䅗⁓䕈䕒
我的問題是,它爲什麼附加漢字?我需要追加的字節是.data中的數據'符號'。
在此先感謝!
它只是我還是它看起來像你總是從緩衝區複製100個字節到輸出文件句柄? –
我知道從文件複製100個字節。然而,還有第二次寫入調用只寫入了「符號」,它是18個字節。我猜這是中國/垃圾角色造成的。 – Julienn