Ассемблер. Создание прямой - Assembler
Формулировка задачи:
Получилось выполний лабораторную, но не получается её грамотно обьяснить. Пожалуйста помогите с комментариями. Только начал учить ассемблер.
Программа создаёт линию в ехе файле (лично у меня) но код слегка не понятен. Хотелось бы больше коментов, лучше если к каждой строчке
.model tiny .code org 100h start: mov al,13h int 10h mov ax,0A000h mov es,ax mov dx,320*100+160 ;320*y1+x1(начальная точка) mov cx,13 ;Длина линии call gline mov ah,10h int 16h ret ;------------------------------------------------------------ gline proc mov di,dx mov al,111b ;color rep stosb ;копируем al в ES:DI, dec DI ret gline endp ;------------------------------------------------------------ end start
Решение задачи: «Ассемблер. Создание прямой»
textual
Листинг программы
org 100h mov ax,13h int 10h ;установка видеорежима №13h - 320x200 8 бит, начало видеопамяти по адресу 0A000h:0 les di,dword[coord] ;загружаем адрес начала линиии в пару регистров es:di mov al,7 ;цвет линии mov cx,13 ;длина линии rep stosb ;заполняем память начиная с адреса ES:DI, содержимым регистра al, количество повторений цикла задаётся регистром cx mov ah,10h int 16h ;ожидание нажатия клавиши ret ;выход в DOS coord dw 320*100+160,0A000h ;адрес начала линии в видеопамяти - 0A000h:320*y+x
Объяснение кода листинга программы
В коде, написанном на языке Assembler, описывается следующая последовательность действий:
- Установка видеорежима №13h — 320x200 8 бит, начало видеопамяти по адресу 0A000h:0.
- Загрузка адреса начала линии в пару регистров es:di.
- Установка цвета линии в регистре al.
- Установка длины линии в регистре cx.
- Заполнение памяти начиная с адреса ES:DI, содержимым регистра al, количество повторений цикла задаётся регистром cx.
- Ожидание нажатия клавиши.
- Выход в DOS. Переменные, используемые в коде: coord — адрес начала линии в видеопамяти (0A000h:320*y+x).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д