組合語言: txt檔案操作
阿新 • • 發佈:2019-02-02
**
更多習題答案見
**
預設目錄下存在 test.txt
;寫入
data segment
file db 'test.txt',0
buf db 100,?,100 dup(?)
fh dw ?
error_msg db 0dh,0ah,'error!','$'
writer_msg db 0dh,0ah,'open file !input text:',0ah,'$'
success_msg db 0dh,0ah,'done!','$'
data ends
stack segment stack
dw 20h dup(?)
top label word
stack ends
code segment
assume ds:data,cs:code,ss:stack
p proc far
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
lea sp,top
lea dx,file
mov cx,0
mov ah,3ch
int 21h
jc error
writer:
mov fh,ax;save the code of file
lea dx,writer_msg
mov ah,09h
int 21h
lea dx,buf
mov ah,0ah
int 21h
lea si,buf
inc si
xor ch,ch
mov cl,[si];1
inc si
mov dx,si;2
mov bx,fh;3
mov ah,40h
int 21h
jc error
success:
lea dx,success_msg
mov ah,09h
int 21h
jmp exit
error:
mov cx,16
mov bx,ax
l1: rol bx,1
mov dl,bl
and dl,1
add dl,30h
mov ah,02h
int 21h
loop l1
lea dx,error
mov ah,09h
int 21h
exit:
mov ah,4ch
int 21h
p endp
code ends
end p
; 讀取
data segment
file db 'test.txt',0
buf db 100 dup(?)
fh dw ?
error_msg db 0dh,0ah,'error!','$'
success_msg db 0dh,0ah,'done!','$'
data ends
stack segment stack
dw 20h dup(?)
top label word
stack ends
code segment
assume ds:data,cs:code,ss:stack
p proc far
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
lea sp,top
;open file
lea dx,file
mov al,0
mov ah,3dh
int 21h
jc error
mov fh,ax
;read file
lea dx,buf
mov cx,100
mov bx,fh
mov ah,3fh
int 21h
jc error
mov cx,ax
lea si,buf
l1: mov dl,[si]
inc si
mov ah,02h
int 21h
loop l1
jmp exit
error:
lea dx,error_msg
mov ah,09h
int 21h
exit:
mov ah,4ch
int 21h
p endp
code ends
end p
;讀取一個檔案並複製到另一個檔案txt
data segment
file db 'a\test.txt',0
buf db 100 dup(?)
fh dw ?
copyfile db 'a\copytext.txt',0
copyfh dw ?
error_msg db 0dh,0ah,'error!','$'
success_msg db 0dh,0ah,'done!','$'
data ends
stack segment stack
dw 20h dup(?)
top label word
stack ends
code segment
assume ds:data,cs:code,ss:stack
p proc far
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
lea sp,top
;open file
lea dx,file
mov al,0
mov ah,3dh
int 21h
jc error
mov fh,ax
;read file
lea dx,buf
mov cx,100
mov bx,fh
mov ah,3fh
int 21h
jc error
;show the read content
mov cx,ax
push cx;push length in stack
lea si,buf
l1: mov dl,[si]
inc si
mov ah,02h
int 21h
loop l1
;create new file 2
lea dx,copyfile
mov cx,0
mov ah,3ch
int 21h
jc error
mov copyfh,ax
;write to copyfile
lea dx,buf
mov bx,copyfh
pop cx
mov ah,40h
int 21h
jc error
jmp exit
error:
lea dx,error_msg
mov ah,09h
int 21h
exit:
mov ah,4ch
int 21h
p endp
code ends
end p