prac1
Publicado por jan (1 intervención) el 12/12/2005 23:04:47
Hola soy nuevo en ensamblador .
He hecho un programa de una matriz, que me pida dos coordenadas y un caracter. Posicionar dicho caracter en las coordenadas introducidas de la matriz.
Me podeis ayudar?
gracias.
.MODEL SMALL
.STACK 200h
.DATA
posx db 0
posy db 0
caracter db 'O'
texto1 db 13,10,'Introduce columna (0-20):$'
texto2 db 13,10,'Introduce fila (0-20):$'
texto3 db 13,10,'Introduce un caracter:$'
.CODE
MAIN PROC
mov ax, @DATA
mov ds, ax
mov ah, 0fh ;
int 10h
mov ah,00
int 10h
mov cx, 20
FOR1: mov posy,cl
mov cx, 20
FOR2: mov posx,cl
push cx
CALL PosicionaImprime
pop cx
LOOP FOR2
mov cl, posy
LOOP FOR1
mov ah, 02
mov bh, 0
;plano video
mov dh, 23 ;fila
mov dl, 0
int 10h
mov dx, OFFSET texto1
Mov ah, 9
int 21h
mov ah, 01h
int 21h
mov posy,al
mov dx, OFFSET texto2
Mov ah, 9
int 21h
mov ah, 01h
int 21h
mov posx,al
mov dx, OFFSET texto3
Mov ah, 9
int 21h
mov ah, 01h
int 21h
mov caracter,al
CALL PosicionaImprime
mov ah,07h
int 21h
mov ax, 4C00H
int 21h
MAIN ENDP
PosicionaImprime PROC
;rutina que imprime el carácter en las coordenadas posx, posy en pantalla
;límite de las coordenadas de pantalla: (0-24,0-79)
;gotoxy(posx,posy) ;Coloca el cursor en la posición posx,posy
mov bh,0 ;plano de video
mov dl,posy ;columna
mov dh,posx ;fila
mov ah,02h ;servicio 2
int 10h ;llamada al operativo, función 10h, servicio 2,
;coloca el cursor en una posición determinada
;putch(caracter) ;imprime carácter
mov al,caracter ;carácter a imprimir
mov cx,1 ;frecuencia de repetición
mov bh,0 ;plano de video
mov ah,0ah ;servicio 0ah
int 10h ;llamada al operativo, función 10h, servicio 0Ah,
;imprime un carácter en la posicion del cursor
RET
PosicionaImprime ENDP
END MAIN
He hecho un programa de una matriz, que me pida dos coordenadas y un caracter. Posicionar dicho caracter en las coordenadas introducidas de la matriz.
Me podeis ayudar?
gracias.
.MODEL SMALL
.STACK 200h
.DATA
posx db 0
posy db 0
caracter db 'O'
texto1 db 13,10,'Introduce columna (0-20):$'
texto2 db 13,10,'Introduce fila (0-20):$'
texto3 db 13,10,'Introduce un caracter:$'
.CODE
MAIN PROC
mov ax, @DATA
mov ds, ax
mov ah, 0fh ;
int 10h
mov ah,00
int 10h
mov cx, 20
FOR1: mov posy,cl
mov cx, 20
FOR2: mov posx,cl
push cx
CALL PosicionaImprime
pop cx
LOOP FOR2
mov cl, posy
LOOP FOR1
mov ah, 02
mov bh, 0
;plano video
mov dh, 23 ;fila
mov dl, 0
int 10h
mov dx, OFFSET texto1
Mov ah, 9
int 21h
mov ah, 01h
int 21h
mov posy,al
mov dx, OFFSET texto2
Mov ah, 9
int 21h
mov ah, 01h
int 21h
mov posx,al
mov dx, OFFSET texto3
Mov ah, 9
int 21h
mov ah, 01h
int 21h
mov caracter,al
CALL PosicionaImprime
mov ah,07h
int 21h
mov ax, 4C00H
int 21h
MAIN ENDP
PosicionaImprime PROC
;rutina que imprime el carácter en las coordenadas posx, posy en pantalla
;límite de las coordenadas de pantalla: (0-24,0-79)
;gotoxy(posx,posy) ;Coloca el cursor en la posición posx,posy
mov bh,0 ;plano de video
mov dl,posy ;columna
mov dh,posx ;fila
mov ah,02h ;servicio 2
int 10h ;llamada al operativo, función 10h, servicio 2,
;coloca el cursor en una posición determinada
;putch(caracter) ;imprime carácter
mov al,caracter ;carácter a imprimir
mov cx,1 ;frecuencia de repetición
mov bh,0 ;plano de video
mov ah,0ah ;servicio 0ah
int 10h ;llamada al operativo, función 10h, servicio 0Ah,
;imprime un carácter en la posicion del cursor
RET
PosicionaImprime ENDP
END MAIN
Valora esta pregunta


0