Я слышал, что int 10h, ah = 0Ch довольно медленный, и чтобы получить разумную скорость, мне нужно было бы зайти в память и поместить значение в пиксел, который я хочу, я установил свой режим видео на 13h
с int 10h
.вызов для изменения режима видео:
mov ah , 0
mov al , 13h
int 10h
, и это процедура, которую я написал, чтобы поместить пиксель в заданные координаты:
drawFaster proc
; bp + 2 - row (dx)
; bp + 4 - column (cx)
; bp + 6 - color
mov bp , sp
pushad
mov ax , 0A000h - presumably the memory address of the screen
mov es , ax
mov ax , [bp + 2]
mov bx , [bp + 4]
mov cx , 320
mul cx
add ax , bx
mov di , ax
mov ax , [bp + 6]
mov [es:di] , al
popad
ret 6
endp
код, вызывающий функцию:
push bp
mov ax , 30
push ax
mov cx , 50
push cx
mov dx , 50
push dx
call drawFaster
pop bp
но по какой-то причине это не дает результатов, я не знаю, неверен ли адрес памяти или что-то еще.Мне нужна ваша помощь.Спасибо!
Странно то, что следующий фрагмент кода работает
mov ax , 0A000H
mov es , ax
mov [es:0] , 30
, но следующий фрагмент кода не работает:
mov ax , 0A000H
mov bx , 0
mov es , ax
mov [es:bx] , 30