Заполнение половины экрана символами - Assembler

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

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

Добрый день, помогите решить задачу необходимо при нажатой правой кнопке заполнить верхнюю часть экрана, при нажатой левой - нижнюю часть Размеры экрана 80*25 тут мы определяем границы заливки экрана. StateL - состояние левой кнопки, stateR - состояние правой кнопки
mov dx,24 ; нижняя граница 
mov bx,0 ; верхняя граница
 
test ax,02h ; нажата левая кнопка?
jz lbl01 ; нет
mov dx,12 ; нижняя граница - половина экрана
mov al,stateL
xor al,1
mov stateL,al ; al - что сделать? 1 - заполнить 0 чистить
lbl01: ; левую проверили
 
test ax,08h;? правая
jz lbl02
mov bx,12
mov al,stateR
xor al,1
mov stateR,al; что делаем?
lbl02:
Далее необходимо прописать алгоритм заполнения половины экрана. Вот тут что-то трудности Можно одним циклом посчитать границы сразу в символах от начала экрана 0*80 ... 12*80-1 12*80 ... 25*80-1 Но вот как это прописать кодом? Вот пытался, но что-то не работает(
mov cx,80 ; 80 колонок - от 1 до 80
cyccol: ; цикл по строкам
imul si,cx,25; si = (cx - 1) * 25 + di
sub si,25 ;
add si,di ;
Di - номер колонки Si = номер символа на экране

Решение задачи: «Заполнение половины экрана символами»

textual
Листинг программы
mov ax,0B800h  
mov es,ax      ;сегментный адрес видеопамяти
xor di,di      ;смещение от начала видеопамяти 0
mov ax,sym     ;выводимы символ
mov cx,m * n   ;число столбцов * число строк
rep stosw      ;за этой инструкцией в гугл

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

  1. mov ax,0B800h — Задаём сегментный адрес видеопамяти
  2. mov es,ax — Передаём значение переменной ax в регистр es
  3. xor di,di — Обнуляем смещение от начала видеопамяти
  4. mov ax,sym — Передаём символ в переменную ax
  5. mov cx,m * n — Перемножаем значения переменных m и n и передаём результат в регистр cx
  6. rep stosw — Выводим символ на экран, используя значение смещения от начала видеопамяти и количество столбцов и строк, которые нужно заполнить.

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


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

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

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