Нарисуйте треугольник в сборке с fasm

Я пытаюсь нарисовать треугольник в сборке с помощью fasm, но у меня ничего не получается. У меня есть следующий код для рисования прямоугольника, и я подумал, что должен просто уменьшить значение [comp] внутри цикла «ciclopinta», но это просто не работает (или я делаю это неправильно).

org 100h
mov ah,4fh
mov al,02h
mov bx,13h
int 10h
mov [alt],50
mov [comp], 100
mov dx, 100
mov cx,100
ciclopinta:
ciclo1:
mov ah,0ch
mov al,23h
mov bh, 0
int 10h
dec cx
dec byte[comp]
jnz ciclo1
mov cx, 100
mov [comp],100
dec dx
dec byte [alt]
jnz ciclopinta

mov ah, 07h
int 21h
mov ah,4ch
int 21h

comp rb 1
alt rb 1

person Catarina Nunes    schedule 15.05.2016    source источник


Ответы (1)


mov ah,4fh
mov al,02h
mov bx,13h
int 10h

Почему вы используете функцию VESA для установки устаревшего видеорежима? Обычно это не должно работать. Лучше использовать следующее:

mov ax, 0013h  ;320x200 256-colors
int 10h

Ближе к концу программы вы используете функцию BIOS 07h для ScrollWindowUp, но вы не устанавливаете все параметры для ее работы. Лучше удалить эти строки mov ah, 07h int 21h


Ваша идея уменьшить переменную comp хороша. Я предлагаю вам написать:

dec dx
mov [comp], dl  ;It's a byte-sized variable
person Sep Roland    schedule 15.05.2016