[TASM] Вывести значения буфера на экран - Assembler
Формулировка задачи:
В текстовом файле имеется массив например такой: (первая строка - кол-во строк и столбцов матрицы)
3 3
2 3 4
5 5 5
8 9 8
Я нахожу размер файла и считываю его содержимое целиком в буфер. Далее мне нужно вывести значения из буфера на экран, что как раз таки у меня и не получается. Не могли бы вы подсказать в чём дело?
.286 .model small .stack 100h .data FileSize dw ? Handle dw ? buff db ? Rows dw ? Columns dw ? FileName db 'array8.txt',0h .code OpenFileRead PROC mov ax,3D00h mov dx,offset FileName ;mov al,0 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 call OpenFileRead mov Handle,ax mov bx,Handle mov ax,4202h xor cx,cx xor dx,dx int 21h mov FileSize,ax mov bx,Handle mov ah,3Fh mov cx,FileSize mov dx,offset buff int 21h mov bx,Handle call CloseFile mov si,0 mov al,buff[si] mov Rows,ax xor ax,ax mov si,2 mov al,buff[si] mov Columns,ax show1: mov cx, Rows lea si, buff @l: push cx mov cx, Columns @@: lodsb add al, 30h int 29h loop @@ mov ax, 0A0Dh int 29h xchg al, ah int 29h pop cx loop @l mov ah,0 int 16h mov ah,4Ch int 21h end start
Решение задачи: «[TASM] Вывести значения буфера на экран»
textual
Листинг программы
.MODEL TINY .CODE ORG 100H Begin: mov dx, offset aStr mov ah, 9 int 21h ret aStr db 'Хэлоу, ворлд?', 0dh, 0ah, '$' END Begin
Объяснение кода листинга программы
- Установка модели работы программы на TINY
- Определение начала кода (ORG 100H)
- Код для вывода строки на экран
- mov dx, offset aStr - передача адреса строки в регистр DX
- mov ah, 9 - установка регистра AH в значение 9 (код функции вывода на экран)
- int 21h - вызов функции вывода на экран
- Код для возврата из функции
- ret - возврат из функции
- Определение строки 'Хэлоу, ворлд?'
- aStr db 'Хэлоу, ворлд?', 0dh, 0ah, '$' - определение строки в области данных (DB)
- 0dh, 0ah - символы перевода строки
- '$' - символ конца строки
- Конец определения программы