Программа-заставка (графика) - Assembler
Формулировка задачи:
Очень нужна помощь. Нужно написать программу-заставку на ассемблере, которая будет выводить вот это
Решение задачи: «Программа-заставка (графика)»
textual
Листинг программы
;FASM org 100h start: mov ax,13h int 10h xor cx,cx mov ax,600h mov bh,1fh mov dx, 1928h int 10h mov si, coord mov bh, 3 mov cx, 6 @@: lodsw push cx mov cx, ax lodsw mov dx, ax mov ax, 600h int 10h pop cx loop @B xor ax, ax int 16h mov ax, 3 int 10h ret coord: dw 0,28h dw 0,1800h dw 27h,1827h dw 1800h, 1827h dw 0C00h, 0C26h dw 13h, 1813h
Объяснение кода листинга программы
Выполняемые действия в коде, оформленные в виде списка (порядковые номера - для удобства):
- Задаётся начало выполнения программы - 100h (org 100h).
- Определяется точка входа в программу - start.
- Переменная ax принимает значение 13h (mov ax,13h).
- Выполняется функция вывода на экран (int 10h).
- Переменная cx обнуляется (xor cx,cx).
- Переменная ax принимает значение 600h (mov ax,600h).
- Переменная bh принимает значение 1fh (mov bh,1fh).
- Переменная dx принимает значение 1928h (mov dx, 1928h).
- Выполняется функция вывода на экран (int 10h).
- Переменная si указывает на координаты (mov si, coord).
- Переменная bh принимает значение 3 (mov bh, 3).
- Переменная cx принимает значение 6 (mov cx, 6).
- Выполняется команда загрузки слова из памяти в регистр ax (lodsw).
- Команда pushcx сохраняет значение регистра cx в стеке (push cx).
- Значение регистра cx заменяется на значение регистра ax (mov cx, ax).
- Выполняется команда lodsw.
- Значение регистра dx заменяется на значение регистра ax (mov dx, ax).
- Переменная ax принимает значение 600h (mov ax, 600h).
- Выполняется функция вывода на экран (int 10h).
- Команда popcx восстанавливает значение регистра cx из стека (pop cx).
- Выполняется цикл, пока значение переменной cx больше или равно 0 (loop @B).
- Переменная ax обнуляется (xor ax, ax).
- Выполняется функция вывода на экран (int 16h).
- Переменная ax принимает значение 3 (mov ax, 3).
- Выполняется функция вывода на экран (int 10h).
- Выполняется команда ret, завершающая выполнение функции. Для удобства чтения и понимания кода, каждая инструкция была пронумерована.