Как правильно обрабатывать файлы на ассемблере - PullRequest
0 голосов
/ 26 мая 2019

Я попробовал некоторые коды GitHub из Интернета, но когда я написал тот же код в EXE-шаблоне, он не работает.

data segment

selection db ?

;FILE I/O DATAS
dir1 db "c:\test1", 0
dir2 db "test2", 0
dir3 db "newname", 0

file1 db "c:\test1\file1.txt", 0
file2 db "c:\test1\newfile.txt", 0
file3 db "t1.txt", 0
handle dw ?

text db "lazy dog jumps over red fox."
text_size = $ - offset text
text2 db "hi!"
text2_size = $ - offset text2


ends

;;;;;;;;;;;;;;;;;;;;;;;;;;

; create c:\emu8086\vdrive\C\test1
mov dx, offset dir1
mov ah, 39h
int 21h

; create  c:\emu8086\MyBuild\test2
mov dx, offset dir2
mov ah, 39h
int 21h

; rename directory: c:\emu8086\MyBuild\test2 to c:\emu8086\MyBuild\newname
mov ah, 56h
mov dx, offset dir2   ; existing.
mov di, offset dir3   ; new.
int 21h



; create and open file: c:\emu8086\vdrive\C\test1\file1.txt
mov ah, 3ch
mov cx, 0
mov dx, offset file1
int 21h
jc err
mov handle, ax
; write to file:
mov ah, 40h
mov bx, handle
mov dx, offset text
mov cx, text_size
int 21h
; close c:\emu8086\vdrive\C\test1\file1.txt
mov ah, 3eh
mov bx, handle
int 21h
err:
nop

mov ah,0      ;wait for a key press
int 16h

Эмулятор говорит: "каталог уже существует: D: \ Programlar \ Emu8086 \ MyBuild \ "

Но я не объявлял каталог в MyBuild, он должен быть в vdrive / C

1 Ответ

0 голосов
/ 26 мая 2019

Вы должны использовать шаблон файла COM с этими строками кода.

.model small

.stack 64

.data

.code

mov ax,@data
mov ds,ax

;rest of the code
...