Я пытаюсь скопировать кучу пикселей из местоположения экрана в другое место. Представьте себе, что у меня есть 8x8 зеленый квадрат по координатам (100, 120), и я хочу скопировать квадрат в координаты (150,60).Скопируйте пиксель из коордов (x0, y0) в (x1, y1)
Я использую графический режим 13h. Это означает 320x200, поэтому мой квадрат начинается с адреса 38500 (используя y * 320 + x).
DS
указывает на 0A0000h.
Как скопировать этот квадрат в другие уголки (19350)?
Я пытался что-то вроде этого:
MOV SI,38500
MOV DI,19350
INIT:
MOV CX,4 ; loop 4 times
COPY_BOX:
MOV AX,DS:[SI] ; copy two pixels
MOV DS:[DI],AX
ADD SI,2 ; move to the next two pixels
ADD DI,2
LOOP COPY_BOX
ADD SI,312 ; drop one line and position on the first pixel
ADD DI,312
JMP INIT ; copy next row of pixels
; do this for the 8 rows
Что я делаю неправильно?
Какая часть вашего кода ISN Не работает? Где это происходит? Вы пробовали пройти через него с помощью отладчика? –
@CodyGray Он просто не работает, Dosbox замерзает. Я запускаю код в Dosbox, и я попытался использовать отладчик Turbo, но он не работает в графическом режиме: \ Можете ли вы использовать любой другой способ отладки? – razoes