Вывод красной горизонтальной линии с использование адресации - 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

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

  1. org 100h — Начало выполнения программы. Установка сегмента данных в 100h.
  2. mov ax,3 — Переменная ax содержит 3.
  3. int 10h — Вывод числа 3 на экран.
  4. mov ax,0xb800 — Переменная ax содержит базовый адрес видеопамяти (0xb800).
  5. mov es,ax — Установка сегмента стека в базовый адрес видеопамяти.
  6. mov al,160 — Переменная al содержит 160.
  7. mul [y] — Умножение al на значение переменной y. Результат сохраняется в ax.
  8. mov di,ax — Переменная di содержит результат умножения.
  9. add di,[x] — Добавление значения di к значению по адресу [x].
  10. add di,[x] — Добавление значения di к значению по адресу [x].
  11. mov ax,0xc020 — Переменная ax содержит 0xc020.
  12. mov cx,30 — Переменная cx содержит 30.
  13. rep stosw — Выполнение операции stosw 30 раз, начиная с адреса 0xc020.
  14. xor ah,ah — Переменная ah устанавливается в 0.
  15. int 16h — Выполнение команды interrupt 16h.
  16. ret — Конец выполнения программы.
  17. x dw 40 — Объявление переменной x типа dw (слова) со значением 40.
  18. y db 10 — Объявление переменной y типа db (байты) со значением 10.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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