Программа, которая выводит на экран последние 16 символов ASCII-таблицы в виде матрицы 4х4 (ТАSМ). - Assembler

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

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

Ребят, помогите пожалуйста, необходимо написать com-программу, которая выводит на экран последние 16 символов ASCII-таблицы у выгляди матрицы 4х4.(ТАSМ) Очень прошу =) Есть исходный код, который должен выводить матрицу 16 на 16. Но увы у меня не получилось его правильно реализовать. Думал его переделать.
    model tiny 
    .code
    .startup
            mov cl,16 
            mov ch,16 
            mov dh, cl 
    l1:    
            mov dl, cl 
            jmp l3
    l2:    
            mov dh, cl 
            jmp l3
    l3:
            mov ah,2 
            mov bh,0
            int 10h 
            mov bx,8 
            mov ax,0
            mov al,16 
            mul dl 
            add al,dh 
            mov ah,9 
            mov cx,1 
            int 10h 
    
            mov cl, dl 
            loop l1
    
            mov dl,16 
    
            mov cl, dh 
            loop l2
            mov dh, cl
    
            ret
    end

Решение задачи: «Программа, которая выводит на экран последние 16 символов ASCII-таблицы в виде матрицы 4х4 (ТАSМ).»

textual
Листинг программы
model tiny
.code
org 100h
start:  mov cx,4
    mov al,0FFh-16
@@01:   push    cx
    mov cx,4
@@02:   int 29h
    inc al
    loop    @@02
    push    ax
    mov al,10
    int 29h
    mov al,13
    int 29h
    pop ax
    pop cx
    loop    @@01
    ret
    end start

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

Вывод последних 16 символов ASCII-таблицы в виде матрицы 4х4:

  1. model tiny — указывает модель сегмента данных, в данном случае используется модель tiny.
  2. .code — указывает, что следует код сегмента.
  3. org 100h — указывает начальный адрес сегмента.
  4. start: — указывает точку входа в программу.
  5. mov cx,4 — переменной CX присваивается значение 4, используется в цикле.
  6. mov al,0FFh-16 — переменной AL присваивается значение 0FFh-16, используется для вывода 16 символов ASCII-таблицы.
  7. @@01: — начало цикла.
  8. push cx — сохранение значения CX на стеке.
  9. mov cx,4 — установка значения CX равным 4.
  10. int 29h — обращение к сервисным процедурам DOS для вывода символа на экран.
  11. inc al — увеличение значения AL на единицу, используется для вывода следующего символа.
  12. loop @@02 — переход к @@02, пока значение AL меньше 16.
  13. push ax — сохранение значения AX на стеке.
  14. mov al,10 — переменной AL присваивается значение 10.
  15. int 29h — обращение к сервисным процедурам DOS для вывода символа на экран.
  16. mov al,13 — переменной AL присваивается значение 13.
  17. int 29h — обращение к сервисным процедурам DOS для вывода символа на экран.
  18. pop ax — восстановление значения AX из стека.
  19. pop cx — восстановление значения CX из стека.
  20. loop @@01 — переход к @@01, пока значение CX больше нуля.
  21. ret — завершение программы.
  22. end start — указывает конец программы.

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

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