[TASM] Чтение двумерного массива из файла - Assembler
Формулировка задачи:
Например имеется файл, в котором в первой строке через пробел записаны число строк массива и число столбцов. Со следующей строки начинается сам массив (значения также записаны через пробел).
Например так:
3 3
5 6 7
3 4 9
1 2 8
Собственно вопрос: как считать данные из файла в переменные. сам массив в буфер? При чтении файла с помощью 3Fh мне нужно знать размер файла. Я в cx записываю кол-во байт, которые нужно считать, а затем сравниваю число считанных байтов в ax, которые вернула функция 3Fh, и если в ax значение будет меньше чем в cx, то значит что мы прочитали файл целиком.
Подскажите правильно ли я все делаю?
.286 .model small .stack 100h .data Handle dw ? Rows dw ? Columns dw ? Array dw ? buff db 40 dup (?) FileName db 'myMass.txt',0h .code OpenFileRead PROC MOV AH,3Dh MOV AL,2 INT 21h RET OpenFileRead ENDP CloseFile PROC MOV AH,3Eh INT 21h RET CloseFile ENDP Show PROC mov ah,02h int 21h ret Show ENDP start: mov ax,@data mov ds,ax mov dx,offset FileName call OpenFileRead @L1: mov bx,ax ;дескриптор в bx mov ah,3fh mov cx,9h mov dx,offset buff int 21h cmp ax,cx je @L1 call CloseFile mov ah,09 lea dx,buff int 21h mov ah,4Ch int 21h end start
Решение задачи: «[TASM] Чтение двумерного массива из файла»
textual
Листинг программы
mov ax,4202h ;узнаем размер файла xor cx,cx xor dx,dx int 21h mov FileSize,ax
Объяснение кода листинга программы
- mov ax,4202h — Команда переносит значение 4202 в регистр AX. Это число используется в качестве кода функции в следующем вызове функции.
- xor cx,cx — Команда устанавливает регистр CX в 0. Этот регистр используется в качестве счётчика для цикла.
- xor dx,dx — Команда устанавливает регистр DX в 0. Этот регистр используется в качестве счётчика для второго цикла.
- int 21h — Команда вызывает функцию 21h, которая предназначена для выполнения операций ввода/вывода. Эта функция используется для чтения файла.
- mov FileSize,ax — Команда переносит значение из регистра AX в переменную FileSize. Это значение представляет собой размер файла, который был прочитан функцией 21h.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д