Вывести на экран изображение в виде шахматной доски с чередованием цветов ячеек - Assembler
Формулировка задачи:
Управление клавиатурой и дисплеем в текстовом режиме на языке ассемблера с использованием среды TASM
1-я программа: Вывести на экран изображение в виде шахматной доски с чередованием цветов ячеек.
Решение задачи: «Вывести на экран изображение в виде шахматной доски с чередованием цветов ячеек»
textual
Листинг программы
model tiny .code org 100h m equ 0FBh begin: mov ax,3 int 10h mov cx,8 mov al,' ' @@01: push cx mov cx,8 @@02: int 29h xor al,m loop @@02 push ax mov al,10 int 29h mov al,13 int 29h pop ax xor al,m pop cx loop @@01 ret end begin
Объяснение кода листинга программы
Вывод на экран изображения в виде шахматной доски с чередованием цветов ячеек — так можно описать задачу, которую решает этот код. Список действий:
- Установка регистров для работы с видеопамятью: — AX = 3 — код видеосистемы (3 для MDA/Hercules, 5 для CGA, 6 для EGA, 7 для VGA); — CX = 8 — количество горизонтальных строк видеошахматной доски (в нашем случае — 8); — AL = пробел — символ, который будет выводиться на первой и восьмой строке.
- Цикл, который будет выполняться 8 раз: — PUSH CX — сохранение в стеке значения регистра CX; — Вывод на экран 8 символов с использованием регистра AL; — XOR AL, m — инверсия цвета символа (1 байт); — POP CX — восстановление значения регистра CX из стека; — LOOP до тех пор, пока не будет выполнено условие — пока не будет выполнен IRET (код завершения работы процессора, после которого в стеке не должно оставаться значений).
- Запись в видеопамять символа «10» (ASCII-коды символов «1» и «0» — 49 и 48) и символа «13» (ASCII-код символа «1» — 49, «3» — 51) для инвертирования цвета ячеек доски.
- Отображение ячеек первой и восьмой горизонтальной строки, а также ячеек третьей и седьмой строки.
- Возврат в начало цикла.
- Конец работы программы.