Программа, которая выводит на экран последние 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:
- model tiny — указывает модель сегмента данных, в данном случае используется модель tiny.
- .code — указывает, что следует код сегмента.
- org 100h — указывает начальный адрес сегмента.
- start: — указывает точку входа в программу.
- mov cx,4 — переменной CX присваивается значение 4, используется в цикле.
- mov al,0FFh-16 — переменной AL присваивается значение 0FFh-16, используется для вывода 16 символов ASCII-таблицы.
- @@01: — начало цикла.
- push cx — сохранение значения CX на стеке.
- mov cx,4 — установка значения CX равным 4.
- int 29h — обращение к сервисным процедурам DOS для вывода символа на экран.
- inc al — увеличение значения AL на единицу, используется для вывода следующего символа.
- loop @@02 — переход к @@02, пока значение AL меньше 16.
- push ax — сохранение значения AX на стеке.
- mov al,10 — переменной AL присваивается значение 10.
- int 29h — обращение к сервисным процедурам DOS для вывода символа на экран.
- mov al,13 — переменной AL присваивается значение 13.
- int 29h — обращение к сервисным процедурам DOS для вывода символа на экран.
- pop ax — восстановление значения AX из стека.
- pop cx — восстановление значения CX из стека.
- loop @@01 — переход к @@01, пока значение CX больше нуля.
- ret — завершение программы.
- end start — указывает конец программы.