Ассемблер не может найти существующие файлы

Мой TASM монтируется в папку, где находятся мой TASM, TLINK и файлы. В частности, это C:/TASM/BIN. У меня нет проблем при запуске одного файла .asm, но когда я включаю другой файл, чтобы мой код выглядел модульным, возникает эта проблема.

На данный момент я включил 6 файлов, включая printMzpos1.kt. (Расширение файла не имеет значения при включении файла сборки.) Имя моего основного файла c.asm. На изображении видно, что printMzpos1.kt находится в папке, куда смонтирован мой TASM:

введите здесь описание изображения

Вот снимок моего кода. Я включил printMzpos1.kt после main endp и до end main. printMzpos1.kt содержит процедуру, которая печатает блоки.

.model small
.386
.stack 64

.data
colorW      db  0Fh
xPos        dw  ?
currmode    db  ?
horLineLen  dw  120
verLineLen  dw  70

include macro.kt

.code

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MAIN proc far
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

mov ax, @data
mov ds, ax
mov es, ax

setVidMode  
cls

call printMzPos1
;call move3Boxes

retVidMode  
mov ax, 4c00h
int 21h

MAIN endp

include printMzPos1.kt
include printMzPos2.kt
include printMzPos3.kt
include printMzPos4.kt
include drawRect.kt
include move3Boxes.kt

end MAIN

Хотя я думаю, что включил его правильно, я все равно получаю это:

**Fatal** c.ASM(39) Can't locate file: printMzPos1.kt

введите здесь описание изображения

Что пошло не так?


person ellekaie    schedule 03.06.2014    source источник
comment
Почему вы поместили свои включения в TASM\BIN? Поместите их в тот же каталог, что и c.asm.   -  person Paul R    schedule 03.06.2014
comment
Мой c.ASM также находится в TASM\BIN, где находятся мои включенные файлы. Все мои файлы для программирования на ассемблере находятся в этой папке.   -  person ellekaie    schedule 03.06.2014
comment
ОК - теперь я вижу, что вы сопоставили C с TASM\BIN - вам действительно не следует использовать этот каталог для пользовательского кода, но я не думаю, что это причина вашей проблемы.   -  person Paul R    schedule 03.06.2014
comment
Кстати, я использую DOSBox, а не командную строку, потому что Win 8 не позволяет запускать 16-битные программы. Диск C: в моем DOSbox отличается от диска C: моего ПК.   -  person ellekaie    schedule 03.06.2014
comment
Да, я видел это - я действительно мало знаю о Windows и DOS, особенно о запуске такого древнего программного обеспечения, но я исправил ссылки на изображения в вашем вопросе, и, надеюсь, кто-то еще, кто помнит этот материал 20-летней давности, может помочь тебе. (Кстати, вы уверены, что суффикс для включаемых файлов не имеет значения? Я бы попробовал использовать .INC или .ASM и посмотреть, поможет ли это.)   -  person Paul R    schedule 03.06.2014
comment
Благодарю вас! Я попробую использовать эти расширения файлов и посмотрю, сработает ли это. Изменить: все еще не работает..   -  person ellekaie    schedule 03.06.2014


Ответы (1)


Имя printMzPos1.kt слишком длинное. DOSBox и TASM принимают только 8.3-имена. Введите DIR в DOSBox (или DIR /X в Windows), и вы увидите что-то вроде PRINTM~1.KT. Это 8.3-имя printMzPos1.kt, и вы должны его использовать. Вероятно, вы видите несколько файлов PRINTM~X.KT. Таким образом, вы должны искать, какое из этих имен соответствует какому из ваших имен. «~ X» — это только порядковый номер, созданный операционной системой для уникальности.

Вы также можете просто переименовать файлы в более короткие имена, чтобы они соответствовали лимиту 8.3.

person rkhb    schedule 03.06.2014
comment
Благодарю вас! Я попытаюсь удалить некоторые файлы из папки, потому что я не вижу полный файл списка. - person ellekaie; 03.06.2014
comment
Теперь это работает! Благодарю вас! Я буду иметь это в виду! - person ellekaie; 03.06.2014
comment
Тип 1_. Вы получите файл DIR.TXT, который можно просмотреть в текстовом редакторе. - person rkhb; 03.06.2014
comment
dir /p также используется для вывода списка файлов на страницу за раз. - person Frank Kotler; 03.06.2014