Программа-заставка (графика) - 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

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

Выполняемые действия в коде, оформленные в виде списка (порядковые номера - для удобства):

  1. Задаётся начало выполнения программы - 100h (org 100h).
  2. Определяется точка входа в программу - start.
  3. Переменная ax принимает значение 13h (mov ax,13h).
  4. Выполняется функция вывода на экран (int 10h).
  5. Переменная cx обнуляется (xor cx,cx).
  6. Переменная ax принимает значение 600h (mov ax,600h).
  7. Переменная bh принимает значение 1fh (mov bh,1fh).
  8. Переменная dx принимает значение 1928h (mov dx, 1928h).
  9. Выполняется функция вывода на экран (int 10h).
  10. Переменная si указывает на координаты (mov si, coord).
  11. Переменная bh принимает значение 3 (mov bh, 3).
  12. Переменная cx принимает значение 6 (mov cx, 6).
  13. Выполняется команда загрузки слова из памяти в регистр ax (lodsw).
  14. Команда pushcx сохраняет значение регистра cx в стеке (push cx).
  15. Значение регистра cx заменяется на значение регистра ax (mov cx, ax).
  16. Выполняется команда lodsw.
  17. Значение регистра dx заменяется на значение регистра ax (mov dx, ax).
  18. Переменная ax принимает значение 600h (mov ax, 600h).
  19. Выполняется функция вывода на экран (int 10h).
  20. Команда popcx восстанавливает значение регистра cx из стека (pop cx).
  21. Выполняется цикл, пока значение переменной cx больше или равно 0 (loop @B).
  22. Переменная ax обнуляется (xor ax, ax).
  23. Выполняется функция вывода на экран (int 16h).
  24. Переменная ax принимает значение 3 (mov ax, 3).
  25. Выполняется функция вывода на экран (int 10h).
  26. Выполняется команда ret, завершающая выполнение функции. Для удобства чтения и понимания кода, каждая инструкция была пронумерована.

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

6   голосов , оценка 4.5 из 5