Другие языки программирования и технологии

Помогите пожалуйста с языком Ассебмлера

Не могу выполнить данное задание на языке ассемблера и даже не понимаю как его делать. Помогите пожалуйста написать код
Рома Джепа
Рома Джепа
133
Для вывода точек зеленого цвета на экран в ассемблере необходимо использовать прерывания BIOS. В данном случае используется прерывание 10h с функцией 09h, которая позволяет вывести символы на экран.

Для вывода линии под углом 45 градусов к сторонам экрана, можно использовать алгоритм Брезенхема. Данный алгоритм позволяет построить линию на экране, используя только целочисленные операции.

Вот пример кода на языке ассемблера NASM для вывода линии зеленого цвета под углом 45 градусов к сторонам экрана:
 section .data 
; цвет точек (зеленый на черном фоне)
color db 0x0A

section .text
global _start

_start:
; установка режима 03h (80x25 текстовый режим)
mov ah, 0x00
mov al, 0x03
int 0x10

; начальные координаты линии
mov cx, 0
mov dx, 12

; конечные координаты линии
mov si, 79
mov di, 12

; вычисление длины линии по координатам
sub si, cx
sub di, dx

; вычисление шага по оси Y
mov ax, di
cmp si, di
jle step_x
idiv si
mov di, ax
mov ax, si

; вывод точек линии
mov bh, 0x00
mov ah, 0x09
draw_line:
mov al, color
mov cx, dx
mov dx, cx

; вывод точки на экран
int 0x10

; изменение координат точки
add cx, ax
add dx, di

; проверка на окончание линии
cmp cx, 79
jle draw_line

; завершение программы
mov ah, 0x00
int 0x16
mov ah, 0x4c
xor al, al
int 0x21

step_x:
; вычисление шага по оси X
mov ax, si
cmp di, si
jle step_y
idiv di
mov si, ax
mov ax, di

; вывод точек линии
mov bh, 0x00
mov ah, 0x09
draw_line_x:
mov al, color
mov cx, dx
mov dx, cx

; вывод точки на экран
int 0x10

; изменение координат точки
add cx, si
add dx, ax

; проверка на окончание линии
cmp cx, 79
jle draw_line_x

; завершение программы
mov ah, 0x00
int 0x16
mov ah, 0x4c
xor al, al
int 0x21

step_y:
; вычисление шага по оси Y и X
mov ax, si
idiv di
mov bx, ax
mov ax, di

; вывод точек линии
mov bh, 0x00
mov ah, 0x09

draw_line_xy:
mov al, color
mov cx, dx
mov dx, cx

; вывод точки на экран
int 0x10

; изменение координат точки
add cx, bx
add dx, ax

; проверка на окончание линии
cmp cx, 79
jle draw_line_xy

; завершение программы
mov ah, 0x00
int 0x16
mov ah, 0x4c
xor al, al
int 0x21

Радиф Мисбахов
Радиф Мисбахов
491
Лучший ответ
Рома Джепа Спасибо!
Это анекдот что ле
Какой проц, как устроенна видеопамять
Или надо в некоем заданном адресном пространстве изобразить???
Рома Джепа Проц ×64, если возможно, просто написать пример кода на ассемблере, а там будет понятно все, я вообще не понимаю как такое соорудить
1 нету в ассемблере белого экрана
код пишется линкуется под конкретный проц . на другом не заработает так что тебе нужно писать самому
Дмитрий Смолин
Дмитрий Смолин
59 846
Язык ассемблера)