Язык ассемблера: где разместить файл .txt, чтобы программа могла его прочитать?(DOSBox) - PullRequest
0 голосов
/ 24 мая 2018

Мне нужно прочитать и отобразить текстовый файл для назначения.По сути, он должен прочитать и отобразить текст в файле с именем «textfile.txt».В EMU8086 я знаю, где разместить файл и программа работает нормально.Тем не менее, в DOSBox, я не знаю, где разместить «textfile.txt».

Когда я запускаю эту программу, она ничего не делает

.model small
org 100h  
.data
.code
org 100h ;.com memory layout
;****FOR EMU8086: PLACE THE FILE named "textfile.txt" IN C:\EMU8086\vdrive\C***
mov dx, offset file 
mov al,0 
mov ah,3dh
int 21h 
jc terminate
mov bx,ax

mov cx, 99 
mov dx, offset buf
mov ah, 3fh 
int 21h
JZ terminate 


MOV SI, offset buf 
print:
mov al, [SI]
mov ah,0eh 
int 10h
INC SI
CMP BYTE PTR [SI], 0  ;CMP [SI], 0
JNE print 


terminate:

;mov ah, 0 
;int 16h

ret


file db "C:\TASM\textfile.txt",0 ;****PLACE THE FILE IN C:\EMU8086\vdrive\C***
buf db 99 dup(0)
counter db 0



end    

Когда я использую EMU8086, я помещаю файл .txt в каталог C:\EMU8086\vdrive\C.В приведенном выше коде я поместил файл .txt в каталог C:\TASM, и он не работает.Хотел заметить, что этот код тоже в C:\TASM.Где разместить файл .txt для работы программы в DOSBox?

1 Ответ

0 голосов
/ 24 мая 2018

DOSBox не знает накопитель C: по умолчанию.Вы можете смонтировать его на любой физический путь.Введите в командной строке DOSBox:

mount C C:\EMU8086\vdrive\C

Теперь файл находится в одном месте для EMU8086 и DOSBox.Чтобы найти TASM, я рекомендую:

mount T C:\TASM
path T:\BIN;

Чтобы найти EMU8086 и через PATH скомпилированный код:

mount E C:\EMU80856
path E:\MyBuild;

DOSBox находит исходный код в E: \ MySource.

Вы можете автоматизировать эти шаги с помощью dosbox-0.74.conf .Загрузите его в текстовом редакторе и перейдите в раздел [autoexec].Вставьте строки выше:

...
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

path T:\BIN;E:\MyBuild
mount C C:\EMU8086\vdrive\C
mount E C:\EMU8086
mount T C:\TASM
...

Эти команды будут выполняться при каждом запуске DOSBox.

Ваш код не будет работать с TASM.Этот будет работать:

.model tiny
.code
org 100h
start:

mov dx, offset file
mov al,0
mov ah,3dh
int 21h
jc terminate
mov bx,ax

mov cx, 99
mov dx, offset buf
mov ah, 3fh
int 21h
JZ terminate


MOV SI, offset buf
print:
mov al, [SI]
mov ah,0eh
int 10h
INC SI
CMP BYTE PTR [SI], 0  ;CMP [SI], 0
JNE print

terminate:

mov ax, 4C00h
int 21h

file db "C:\textfile.txt",0 ;****PLACE THE FILE IN C:\EMU8086\vdrive\C***
buf db 99 dup(0)
counter db 0

end start

Постройте его с помощью

e:
cd \mysource
tasm mycode.asm
tlink /t mycode.obj
...