Ошибка в программе при работе с файлом - Assembler

Узнай цену своей работы

Формулировка задачи:

DOSBox выводит unable top open file, или fatal dos error ax = 6
.model small
.stack 256
.data
    fname db 'text.txt', 0
    handle dw ?
    readbuf db ?
.code
start:
mov ax, @data
mov ds, ax
 
lea dx, fname
mov ah, 3ch ; создание файла
mov cx, 2 ; атрибут файла
int 21h ; описатель или код ошибки в ax 
 
jc errf ;; carry flag is set if error
mov handle, ax
mov dx, offset fname
mov bx, handle ; описатель
mov ah, 40h ; запись
mov cx, 8
int 21h
 
mov bx, handle
mov ah, 3eh ; закрыть
int 21h
jmp fin
 
errf:
    mov ah, 02h ; вывод символа
    mov di, '!'
    int 21h
 
; открытие файла 
mov ah, 3dh
lea dx, fname ; offset здесь неработает ??
mov al, 0 ; режим открытия
int 21h
mov handle, ax
; чтение файла
mov ah, 3fh
mov bx, handle
mov dx, offset readbuf
mov cx, 10
int 21h
; закрыть
mov bx, handle
mov ah, 3eh 
int 21h
 
; вывод  строки
mov ah, 09h
mov dx, offset readbuf
int 21h

fin:
mov ax, 4C00h
int 24h
end start

Решение задачи: «Ошибка в программе при работе с файлом»

textual
Листинг программы
mov bx,stdout(равный 1)
mov ah, 40h ; запись
mov cx, тут длина
lea dx,откуда = mov dx, offset откуда
int 21h

Объяснение кода листинга программы

  1. mov bx, stdout - присваивает регистру BX значение, равное 1.
  2. mov ah, 40h - устанавливает значение регистра AH равным 40h, что является кодом операции записи.
  3. mov cx, тут длина - присваивает значение регистру CX, которое, вероятно, представляет собой длину данных для записи.
  4. lea dx,откуда = mov dx, offset откуда - устанавливает значение регистра DX, которое указывает на место, откуда нужно записать данные. Возможно, это смещение в файле, которое вычисляется как сумма базового адреса и смещения.
  5. int 21h - вызывает функцию BIOS, которая выполняет операцию записи в файл.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы