Escolar Documentos
Profissional Documentos
Cultura Documentos
;URL http://www.mis-algoritmos.com
.model small
.stack
.data
xx dw 1
yy dw 1
x dw 320
y dw 240
.code
.startup
PUSH AX
PUSH BX
mover:
PUNTO xx,yy,0
PUNTO x,y,7
;UP:
DOWN:
MOV AX,y
MOV yy,AX ;Guardamos posicion anterior
mov bx,x;X lo movemos a XX
MOV xx,bx
INC AX
MOV y,AX
JMP mover
LEFT:
MOV AX,x
MOV xx,AX ;Guardamos posicion anterior
mov bx,y;X lo movemos a XX
MOV yy,bx
DEC AX
MOV x, AX
JMP mover
RIGHT:
MOV AX,x
MOV xx,AX ;Guardamos posicion anterior
mov bx,y;X lo movemos a XX
MOV yy,bx
INC AX
MOV X, AX
JMP mover
;DOWN:
UP:
MOV AX,y
MOV yy,AX ;Guardamos posicion anterior
mov bx,x;X lo movemos a XX
MOV xx,bx
DEC AX
MOV y, AX
JMP mover
JMP mover
SALIR:
MOV AH,00H
MOV AL,03H
INT 10H
.exit
end
Chaz... otra vez ensamblador.. mmm.. creo que eres la misma tipa de la otra vez.. jejeje que
cosas no? encontre un codigo por ahi.. espero te sirva
MODO_GRAF:
MOV AX, 0010H ;Establece el modo de video (AH=0)
INT 10h ;AL=10H modo grafico: 640x350
MOV AH, 0BH ;Establece la paleta de 16 colores
MOV BX, 000BH ;BH=Page=0, BL=Color Verde claro
INT 10H ;Para el fondo de pantalla
RET
GRAFICAR:
MOV BX, 0 ;BL=Color, BH=No. de pagina=0
MOV CX, 64 ;CX es la columna de pixel, coord. X
MOV DX, 70 ;DX es la linea de pixel, coord Y
G10:
MOV AH, 0Ch
MOV AL, BL ;En BL se guardo el color
INT 10h
INC CX ;Incrementa posiscion en x
CMP CX, 576 ;hasta la posicion 576
JNE G10
MOV CX,64
RET
Mmm.. pero eso de que presiones enter o la tecla.. no se si borre la pantalla.. y tengas que
volverla a formar.. probare.. y editare mi pregunta si encuentro la solucion.. seria mas facil..
si planteara el problema que te pusieron.. asi sabria que exactamente tiene que hacer..
Presentación hecha en ExpoVision, Alberto Pacheco, Ver 1.0.51, MEXICO
D.R. © 2011
<< [1] [2] [3] [4] [5] [6] [7] >> [CSS]
<< [1] [2] [3] [4] [5] [6] [7] >> [CSS]
Tabla 1. Modos Video (VGA)
<< [1] [2] [3] [4] [5] [6] [7] >> [CSS]
Tabla 2. Códigos para Paleta de 16 colores
Código Color
1 Negro
2 Azul
3 Verde
4 Cian
5 Rojo
6 Magenta
7 Gris claro
8 Gris Obscuro
9 Azul claro
10 Verde claro
11 Cian claro
12 Café
13 Magenta claro
14 Amarillo
15 Blanco
(4/7) República del Saber Ensamblador: "Video y Gráficas"
<< [1] [2] [3] [4] [5] [6] [7] >> [CSS]
MOV AH, 0Fh ;Las primeras tres
instrucciones guardan
INT 10h ;el modo actual de video que
esta usando
PUSH AX ;el sistema operativo
CALL MODO_GRAF
CALL GRAFICAR
CALL PAUSA
POP AX ;Y aqui reestablece el modo
que estaba usando
MOV AH, 0 ;el sistema operativo
INT 10h
INT 20h
MODO_GRAF:
MOV AX, 0010H ;Establece el modo de video
(AH=0)
INT 10h ;AL=10H modo grafico: 640x350
MOV AH, 0BH ;Establece la paleta de 16
colores
MOV BX, 000BH ;BH=Page=0, BL=Color Verde
claro
INT 10H ;Para el fondo de pantalla
RET
GRAFICAR:
MOV BX, 0 ;BL=Color, BH=No. de pagina=0
MOV CX, 64 ;CX es la columna de pixel,
coord. X
MOV DX, 70 ;DX es la linea de pixel,
coord Y
G10:
MOV AH, 0Ch
MOV AL, BL ;En BL se guardo el color
INT 10h
INC CX ;Incrementa posiscion en x
CMP CX, 576 ;hasta la posicion 576
JNE G10
MOV CX, 64 ;mueve 64 a CX para usarlo
para decrementar
INC BL ;Incrementa el color BL (0-F)
INC DX ;Incrementa en posicion en y
CMP DX, 280 ;hasta la posicion 280
JNE G10
RET
PAUSA: ;Espera a que se pulse una
tecla
MOV AH, 10h
INT 16h
RET
<< [1] [2] [3] [4] [5] [6] [7] >> [CSS]
<< [1] [2] [3] [4] [5] [6] [7] >> [CSS]
MOV AH, 0Fh ;Lee y almacena en stack modo-
video actual
INT 10h
PUSH AX
CALL MODO_GRAF
CALL GRAFICAR
CALL PAUSA
POP AX ;Reestablece modo video
MOV AH,0
INT 10h
INT 20h
MODO_GRAF:
MOV AX, 0010H ;Establece modo video (AH=0)
INT 10h ;Modo grafico (10H): 640x350
MOV AH, 0BH ;Establece paleta 16 colores
MOV BX, 0000H ;BH=Page=0, BL=Fondo=Black
INT 10H
RET
GRAFICAR:
XOR SI, SI ;INDICE: SI=0
XOR BH, BH ;BH=No. Pagina=0
MOV CX, 64 ;CX = Coord. X
MOV DX, 70 ;DX = Coord Y
G10:
MOV AH, 0Ch ;DRAW PIXEL
MOV AL, [COLOR+SI] ;AL=Color
INT 10h
CMP CX, [LIM+SI] ;SIG. COLOR?
JL G20
ADD SI,2 ;INDICE++
G20:
INC CX ;X++
CMP CX, 576 ;LIM X?
JNE G10
XOR SI, SI ;RESET INDEX: SI=0
MOV CX, 64 ;RESET X: CX=64
INC DX ;Y++
CMP DX, 280 ;LIM Y?
JNE G10
RET
PAUSA: ;Espera a que se pulse una
tecla
MOV AH, 10h
INT 16h
RET
SECTION .data
COLOR DW 1, 15, 4
LIM DW 230, 390, 580
<< [1] [2] [3] [4] [5] [6] [7] >> [CSS]
main:
call addr
call dump
int 20h
addr: ; Out: es:bp=inicio mapa-bits
mov ah, 11h
mov al, 30h
mov bh, 3 ; 8x8
int 10h
ret
dump:
mov si, bp ; es:bp=bitmap
add si, 8 ; skip chr=0
g30: mov dx, 8 ; LOOP-1: EACH CHAR
g40: mov al, [es:si] ; LOOP-2: EACH BYTE
inc si ; next 8-bits
mov [pixel], al ; save 8-bits
call newline
mov cx, 8 ; pixels=8
g50: mov al, [pixel] ; LOOP-3: EACH BIT
and al, [pos] ; z=0 si al(pos)=1
ror byte [pos],1 ; mask next bit
mov al,'*' ; print bit=1
jnz g60 ; bit=1?
mov al,' ' ; print bit=0
g60: call putch
loop g50 ; ENDLOOP-3: next pixel
dec dx ; next byte
jnz g40 ; ENDLOOP-2: next byte
call getch
cmp al, 27 ; Esc?
jne g30 ; ENDLOOP-1: next char
ret
newline:
mov al, 0dh
call putch
mov al, 0ah
call putch
ret
putch:
push dx
mov ah, 02h
mov dl, al
int 21h
pop dx
ret
getch: ; out: al=ASCII
mov ah, 10h
int 16h
ret
SECTION .data
pos db 10000000b ; bit-mask
pixel db 1
http://expo.itch.edu.mx/view.php?f=asm_33