Прямое программирование видеопамяти - Assembler (224112)
Формулировка задачи:
Привет мальчики и девочки
Помогите пожалуйста сделать задание, потому что я не знаю как. Сейчас у меня дистанционное обучение и все что у меня есть - это гугл. Ассемблер для меня темный лес, но лабораторную сдать нужно. Для знающих и любящих этот язык, эта задача на 15мин, а я читаю методичку и ничего не понимаю.
Буду очень признательна за помощь!
Задание:
Заполнить 0-у страницу видеопамяти произвольным текстом, используя для правой и левой частей экрана разные значения атрибута фона(Старшая тетрада атрибута символа).
Решение задачи: «Прямое программирование видеопамяти»
textual
Листинг программы
start: ; MOV AX,3 ; видеорежим 80х25/16 (текст) INT 10h ; MOV AH,9 ; напрос на ввод строки MOV DX,mess0 ; INT 21h ; PUSH 0B800h ; видеобуфер в ТХТ-режиме POP ES ; XOR DI,DI ; сбрасываем позицию в окне ADD DI,320 ; пропускаем мессагу (строка 3) @print: ; внешний цикл MOV CX,80 ; кол-во символов в строке MOV BL,90h ; синий фон, чёрный символ @@: ; внутренний цикл (1 строка) XOR AX,AX ; ждём символ с клавиатуры INT 16h ; CMP AL,13 ; ENTER ? JE exit ; да - выходим в DOS MOV AH,BL ; заносим атрибут в АН STOSW ; отправляем символ в видеобуфер! CMP CX,40 ; достигли половины экрана? JNZ next ; нет - продолжаем ввод ADD BL,10h ; да - меняем фон на зелёный next: ; LOOP @b ; мотаем, пока СХ > 0 JMP @print ; переходим на вторую строку..
Объяснение кода листинга программы
Код представляет собой программу на языке Assembler, которая выполняет следующие действия:
- Устанавливает видеорежим 80x25/16 (текст).
- Выводит на экран строку
Press any key to continue...
. - Переходит в бесконечный цикл, в котором:
- Во внешнем цикле (при помощи регистра CX) выводятся символы строки.
- При вводе символа
Enter
(код 13) происходит выход из цикла и переход к следующей строке. - Внутренний цикл (при помощи регистра CX) выводит символ с клавиатуры в видеобуфер.
- Если символы достигли середины экрана, меняется цвет фона на зелёный.
- После завершения внутреннего цикла происходит переход к следующей строке.
- Если символ, введенный с клавиатуры, равен
Enter
, программа завершается и происходит переход в DOS. - Если символы достигли середины экрана, меняется цвет фона на зелёный.
- Цикл продолжается до тех пор, пока не будет введено значение
Enter
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д