.model small
.stack 100h
.data
;В сегменте данных
bufout db 'Потап Барсук' ;Данные для записи в файл
buflen=$-bufout ;Ee длина (12 байт)
handle dw 0 ;Ячейка для дескриптора
fname db 'MYFILE.dat',0 ;Имя файла в формате ASCIIZ
.code
start:
;В сегменте команд
;Создадим файл
mov AH,3Ch ;Функция создания файла
mov CX, 0 ;Без атрибутов
mov DX, offset fname ;Адрес имени файла
int 21h
mov handle,AX ;Сохраним дескриптор файла
;Запишем в файл данные (в данном примере - текстовую строку)
mov AH,40h ;Функция записи в файл
mov BX,handle ;Дескриптор
mov CX,buflen ;Число записываемых байтов
mov DX,offset bufout;Адрес данных
int 21h
;Закроем файл (нет необходимости)
mov AH,3Eh ;Функция закрытия файла
mov BX,handle ;Дескриптор
int 21h
end start
Создание файла
(6) Illegal instruction: buflen=$-bufout or wrong parameters.
(21) Wrong parameters: MOV CX,buflen
(21) Second operand is undefined variable(?), no zero before hex number(?)
Вот код (нашел его в книге Рудакова), в чем беда подскажите?
Код:
buflen equ $-bufout
?
пробывал, не получается так как потом вылазит ошибка (21) Wrong parameters: MOV CX,$-bufout
bufout db 'Потап Барсук',0
или
bufout db 'Потап Барсук',$
компиль же должны найти символ конца строки. А то получается что массив данных начался, а символа завершения нет.
Или если причина в неправильном присвоении, то возможно необходимо сделать так:
buflen db $-bufout
Совет! С символами поэкспериментируй - поищи русские буквы среди английских в идентификаторах, попробуй поменять апострофы на кавычки в символьной строке и т.п.