3
Pos_Bloco_Ini_x dw 30 ; posição inicial do bloco em x
Pos_Bloco_Ini_y dw 30 ; posição inicial do bloco em y
Tam_Bloco DW 2 ;tamanho do bloco
MOV AH, 00h ;Prepara para definir o modo graf.
MOV AL, 13h ;Modo graf. 320x200 color mode
INT 10h ;Invoca a interrupção 10h da BIOS
DESENHAQUADRADO PROC NEAR
push ax
push bx
push cx
push dx
mov cx, Pos_Bloco_Ini_x ;Posicao x do inicio do bloco
mov bx, Pos_Bloco_Ini_x ;Iniciar a posicao final do bloco(x)passando para um registo para a seguir ser feita a adicao do tamanho
mov dx, Pos_Bloco_Ini_y ;Posicao y do bloco
mov ax, Pos_Bloco_Ini_y ;Iniciar a posicao final do bloco(y) passando para um registo para a seguir ser feita a adicao do tamanho
add bx, Tam_Bloco ;adiciona a posicao inicial o tamanho do bloco e guarda no registo bx
add ax, Tam_Bloco
MOV Pos_Bloco_Fin_x, bx ;guarda na variavel Pos_Bloco_Fin_x o valor anterior de bx(Posicao inicial + tamanho do bloco)
mov Pos_Bloco_Fin_y, ax
mov ax, Pos_Bloco_Fin_y
xor ax, ax
xor bx, bx
DESENHALINHA:
mov AH, 0010B ;cor do pixel
;mov aL, 13h
INT 10H
INC CX
CMP CX, Pos_Bloco_Fin_x
je MUDALINHA
JMP DESENHALINHA
MUDALINHA:
INC DX
MOV CX, Pos_Bloco_Ini_x
CMP DX, Pos_Bloco_Fin_y
je PARAR
JMP DESENHALINHA
PARAR:
MOV AH,06h ; leitura de um caracter, config INT21h
INT 21H ; invoca a interrupção do 21h do DOS
CMP AL, 33H ;compara com a tecla '3'
JE SAIRJOGO
JMP PARAR
DESENHAQUADRADO ENDP