Движение рисунка по диагонали в DosBox

надо заставить что бы картинка двигалась по диагонали после нажатии нужных кнопок

.model small
.data
combined db 27,'[0;1;43m','use WASD to move [ ]$',27,'[0m$'
draw_0 db 27,'[0m  ',27,'[0;1;36;46m________',27,'[0m  $'
draw_1 db 27,'[0m ',27,'[0;1;36;46m|      _ |',27,'[0m$'
draw_2 db 27,'[0m ',27,'[0;1;36;46m|_____|.||',27,'[0m$'
draw_3 db 27,'[0m ',27,'[0;1;31;45m ()    () ',27,'[0m $'
posX db 5
posY db 5
.code

CLEAR:
    MOV     AH, 0
    MOV     AL, 2
    INT     10h


    mov     AH, 2
    mov     BH, 0
    mov     DH, 1
    mov     DL, 1
    int     10H
    mov     ah,9h
    lea     dx,combined 
    int     21h
RET

SETPOS:
    mov     AH, 2
    mov     BH, 0
    mov     DH, posY
    mov     DL, posX
    int     10h
RET

DRAW:
    call        SETPOS
    mov     ah,9h
    lea     dx,draw_0
    int     21h

    add     posY,1; 
    call        SETPOS
    mov     ah,9h
    lea     dx,draw_1
    int     21h

    add     posY,1; 
    call        SETPOS
    mov     ah,9h
    lea     dx,draw_2
    int     21h

    add     posY,1; 
    call        SETPOS
    mov     ah,9h
    lea     dx,draw_3
    int     21h

    sub     posY,3; 
RET

PRESS_KEY:
; настройка окна (режим 80х25)
    call        CLEAR
    call        DRAW

; --- установка курсору в рядок 1, стовпець 19
    MOV     AH, 2
    MOV     BH, 0
    MOV     DH, 1
    MOV     DL, 19
    INT     10H

    MOV     AH, 1 ; ожидаем нажание клавиши
    INT     21H

    CMP     AL, 0 ; ? 0
    JZ      PRESS_KEY
    CMP     AL, 77h ; ? 
    JE      GO_UP
    CMP     AL, 61h ; ? 
    JE      GO_LEFT
    CMP     AL, 73h ; ? 
    JE      GO_DOWN
    CMP     AL, 64h ; ? 
    JE      GO_RIGHT
    CMP     AL, 78h ; ? 
    JE      BYE

    JMP     PRESS_KEY ; 

GO_UP:
    sub     posY,1
    JMP     PRESS_KEY

GO_LEFT:
    sub     posX,1
    JMP     PRESS_KEY

GO_DOWN:
    add     posY,1
    JMP     PRESS_KEY

GO_RIGHT:
    add     posX,1
    JMP     PRESS_KEY
.startup
; подготовка переменных
    mov     ax,@data
    mov     ds,ax;
    mov     es,ax;

    JMP     PRESS_KEY

BYE:
.exit
end

введите сюда описание изображения


Ответы (0 шт):