Рисование линий через прерывания в видеорежиме - Assembler

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

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

помогите пожалуйста. ассемблер только начали учить. эта тема единственная которую препод не показал как должна выглядеть программа (так как тупо сказал что материал есть в интернете, после того как некие так сказать умники нашалили). и мне досталось задание где нужно создать програмку которая будет рисовать линии с помощью стрелок.

Решение задачи: «Рисование линий через прерывания в видеорежиме»

textual
Листинг программы
;TASM, COM-файл
;tasm.exe /m filename.asm
;tlink.exe /t /x filename.obj
;
.model tiny
.code
.386
ORG 100h
START:
    mov ax,12h  ;установка видеорежима 640x480x16 цветов
    int 10h
 
    mov ax,0c0ah    ;функция и цвет - светлозеленый
    mov dx,480/2    ;Y
    mov cx,640/2    ;X
    xor bh,bh
    int 10h
m1:
    xor ax,ax   ;получить клавишу
    int 16h
    cmp al,27   ;Esc?
    jz short exit
 
    cmp ah,48h  ;вверх
    jnz short m2
    cmp dx,2    ;верхняя граница
    jz short m1
    dec dx
    mov ax,0c0ah    ;функция и цвет - светлозеленый
    int 10h
    jmp short m1
m2:
    cmp ah,50h  ;вниз
    jnz short m3
    cmp dx,479  ;нижняя границя
    jz short m1
    inc dx
    mov ax,0c0ah
    int 10h
    jmp short m1
m3:
    cmp ah,4bh  ;влево
    jnz short m4
    or cx,cx    ;лева граница
    jz short m1
    dec cx
    mov ax,0c0ah
    int 10h
    jmp short m1
m4:
    cmp ah,4dh  ;вправо
    jnz short m1
    cmp cx,639  ;правая граница
    jz short m1
    inc cx
    mov ax,0c0ah
    int 10h
    jmp short m1
exit:
    mov ax,3    ;текстовый режим
    int 10h
 
    ret     ;завершить программу
 
end start
 
0 - черный  8 - серый
1 - синий   9 - голубой
2 - зеленый 10 - светлозеленый
3 - циан    11 - светлый циан
4 - красный 12 - светлокрасный
5 - магента 13 - светлая магента
6 - коричневый  14 - желтый
7 - белый   15 - яркобелый

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

Код рисует линии через прерывания в видеорежиме 640x480x16 цветов. Он начинает с установки видеорежима 640x480x16 цветов, используя функцию 10h. Затем код определяет функцию и цвет для светлозелёного, используя регистры AX, CX и DX для хранения X, Y и цвета. Используя цикл, пока не будет нажата клавиша Esc, код перемещает курсор вверх и вниз и слева направо, используя функции 48h, 50h, 4bh и 4dh для движения в соответствующих направлениях. Когда обнаруживается, что курсор достиг верхней или нижней границы, или если была нажата клавиша Esc, код возвращает в меню. Код также включает в себя следующие числа и их значения: 0 - черный 8 - серый 1 - синий 9 - голубой 2 - зеленый 10 - светлозеленый 3 - циан 11 - светлый циан 4 - красный 12 - светлокрасный 5 - магента 13 - светлая магента 6 - коричневый 14 - желтый 7 - белый 15 - яркобелый

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


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

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

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