Ассемблер. Создание прямой - 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, описывается следующая последовательность действий:

  1. Установка видеорежима №13h — 320x200 8 бит, начало видеопамяти по адресу 0A000h:0.
  2. Загрузка адреса начала линии в пару регистров es:di.
  3. Установка цвета линии в регистре al.
  4. Установка длины линии в регистре cx.
  5. Заполнение памяти начиная с адреса ES:DI, содержимым регистра al, количество повторений цикла задаётся регистром cx.
  6. Ожидание нажатия клавиши.
  7. Выход в DOS. Переменные, используемые в коде: coord — адрес начала линии в видеопамяти (0A000h:320*y+x).

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


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

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

14   голосов , оценка 4 из 5