我最近看了一个关于如何用汇编语言masm 8086读字符串的教程。
我想把它写入名为'TEST.txt'的文件。
下面是正文
阿里|1000令吉
阿布|1500令吉
但我只能打印出这个
阿里|1000令吉
阿布|1500令吉
阿布|1500令吉
名称'Abu'和'RM1500'在txt文件中打印了两次。我还想问一下我是否可以像在java中一样使用split(“|”)读取汇编中的字符串。我将感谢任何人帮助我解决这个问题。
.MODEL SMALL
.STACK 100H
.DATA
FNAME DB 'TEST.TXT',0
HANDLE DW ?
MSG DB 'Ali|RM1000', 13, 10
MSG2 DB 'Abu|RM1500', 13, 10
BUFFER DB 25 DUP(?)
COUNT DB 10
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
;***************OPENING A NEW FILE***************;
; MOV AH,3CH
; MOV DX,OFFSET(FNAME)
; MOV CL,1
; INT 21H
; MOV HANDLE,AX
;***************CLOSEING A FILE***************;
; MOV AH,3EH
; MOV DX,HANDLE
; INT 21H
;***************OPENING AN EXISTING FILE***************;
MOV AH,3DH
MOV DX,OFFSET(FNAME)
MOV AL,1 ; 1 MEAN FOR WRITING PURPOSE
INT 21H
MOV HANDLE,AX
MOV AH,40H
MOV BX,HANDLE
MOV CX,25
MOV DX, OFFSET(MSG)
INT 21H
MOV AH,40H
MOV BX,HANDLE
MOV CX,25
MOV DX, OFFSET(MSG2)
INT 21H
MOV AH,3EH
MOV DX,HANDLE
INT 21H
;***************OPENING READING FILE***************;
MOV AH,3DH
MOV DX,OFFSET(FNAME)
MOV AL,0 ; 1 MEAN FOR WRITING PURPOSE
INT 21H
MOV HANDLE,AX
MOV AH,3FH
MOV BX,HANDLE
MOV DX,OFFSET(BUFFER)
MOV CX,10
INT 21H
;***************DISPLAYING 10 BYTES***************;
MOV SI,OFFSET(BUFFER)
L1:
MOV AH,2
MOV DL,[SI]
INT 21H
INC SI
DEC COUNT
JNZ L1
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
1条答案
按热度按时间ijnw1ujt1#
您正在打开一个现有文件进行输出,然后向其中写入25个字节,两次。文件的前50个字节将是:
第一个
句柄必须进入BX寄存器!
套用这些更正: