Вывод красной горизонтальной линии с использование адресации - Assembler
Формулировка задачи:
Нужно вывести красную горизонтальную линию из 30 знаков. Есть такой набросок кода (Assembler 8086), пока он только выводит один символ стандартного цвета. Была попытка использовать цикл, но он очевидно не работает. Буду рада любым подсказкам.
Листинг программы
- org 100h
- mov ax, 0B800h
- mov es, ax
- mov ax, [y]
- mov bx, 80
- mul bx
- mov bp, ax
- add ax: [x]
- shl ax, 1
- mov cx, 30
- petla:
- mov byte [es:bp], 219
- loop petla
- mov ax, 4c00h
- int 21h
- x: dw 40
- y: dw 40
Решение задачи: «Вывод красной горизонтальной линии с использование адресации»
textual
Листинг программы
- org 100h
- mov ax,3
- int 10h
- mov ax,0xb800
- mov es,ax
- mov al,160
- mul [y]
- mov di,ax
- add di,[x]
- add di,[x]
- mov ax,0xc020
- mov cx,30
- rep stosw
- xor ah,ah
- int 16h
- ret
- x dw 40
- y db 10
Объяснение кода листинга программы
- org 100h — Начало выполнения программы. Установка сегмента данных в 100h.
- mov ax,3 — Переменная
ax
содержит 3. - int 10h — Вывод числа 3 на экран.
- mov ax,0xb800 — Переменная
ax
содержит базовый адрес видеопамяти (0xb800). - mov es,ax — Установка сегмента стека в базовый адрес видеопамяти.
- mov al,160 — Переменная
al
содержит 160. - mul [y] — Умножение
al
на значение переменнойy
. Результат сохраняется вax
. - mov di,ax — Переменная
di
содержит результат умножения. - add di,[x] — Добавление значения
di
к значению по адресу[x]
. - add di,[x] — Добавление значения
di
к значению по адресу[x]
. - mov ax,0xc020 — Переменная
ax
содержит 0xc020. - mov cx,30 — Переменная
cx
содержит 30. - rep stosw — Выполнение операции
stosw
30 раз, начиная с адреса 0xc020. - xor ah,ah — Переменная
ah
устанавливается в 0. - int 16h — Выполнение команды interrupt 16h.
- ret — Конец выполнения программы.
- x dw 40 — Объявление переменной
x
типаdw
(слова) со значением 40. - y db 10 — Объявление переменной
y
типаdb
(байты) со значением 10.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д