[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

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

  1. Установка модели работы программы на TINY
  2. Определение начала кода (ORG 100H)
  3. Код для вывода строки на экран
    • mov dx, offset aStr - передача адреса строки в регистр DX
    • mov ah, 9 - установка регистра AH в значение 9 (код функции вывода на экран)
    • int 21h - вызов функции вывода на экран
  4. Код для возврата из функции
    • ret - возврат из функции
  5. Определение строки 'Хэлоу, ворлд?'
    • aStr db 'Хэлоу, ворлд?', 0dh, 0ah, '$' - определение строки в области данных (DB)
    • 0dh, 0ah - символы перевода строки
    • '$' - символ конца строки
  6. Конец определения программы

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

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