PROGRAMA USANDO EL MACROS PAQRA EMU 8086
CODIGO
TITLE Cadena que solicita una cadena y una posición para mostrarla
gotoxy macro fila,col
mov ah,02h
mov dh,fila
mov dl,col
mov bh,0h
int 10h ;instyruccion que despliega en video
endm
pantalla macro que
mov ah,02h
mov dl,que
int 21h ;interrumpimos al SO
endm
imprime macro eztryng
mov dx,offset eztryng
mov ah,9
int 21h ;interrumpimos al SO
endm
DATOS SEGMENT PARA PUBLIC
mensaje DB "INGRESE UN CARACTER: ",13,10,"$" ;escribimos un mensaje, le damos un salto de linea.
mensaje2 DB "INGRESE X del 0 al 9: ",13,10,"$" ;escribimos otro mensaje con un salto de linea y que nos regrese al inicio d ela linea
mensaje3 DB "INGRESE Y del 0 al 9: ",13,10,"$" ;escribimos otro mensaje.
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')
DATOS ENDS
CODIGO SEGMENT PARA PUBLIC 'code'
ASSUME CS:CODIGO,DS:DATOS
startup:
mov ax,DATOS
mov ds,ax ;movemos lo almacenado en ax a ds
imprime mensaje
mov si,00h
leer:
mov ax,0000
mov ah,01h
int 21h ;generamos una interrupcion
mov caracter[si],al
inc si
cmp al,0dh
ja leer
jb leer
mov dx,offset caracter
mov ah,0ah
int 21h ;utilizamos una interrupcion
imprime caracter
imprime mensaje2
mov ah,01h
int 21h ;otra interrupcion
sub al,30h
mov bl,al
mov varx,al
imprime mensaje3
mov ah,01h
int 21h ;generamos una interrupcion al sistema
sub al,30h
mov bl,al ;movemos lo almacdenado en al a bl.
mov vary,al
mov ax,0003h
int 10h
gotoxy vary,varx
pantalla caracter[0]
mov ah,01h
int 21h ;interrupcion
mov ax,4c00h
int 21h ;generamos una interrupcion
CODIGO ENDS ;terminamos las instrucciones d enuestro programa
end startup
gotoxy macro fila,col
mov ah,02h
mov dh,fila
mov dl,col
mov bh,0h
int 10h ;instyruccion que despliega en video
endm
pantalla macro que
mov ah,02h
mov dl,que
int 21h ;interrumpimos al SO
endm
imprime macro eztryng
mov dx,offset eztryng
mov ah,9
int 21h ;interrumpimos al SO
endm
DATOS SEGMENT PARA PUBLIC
mensaje DB "INGRESE UN CARACTER: ",13,10,"$" ;escribimos un mensaje, le damos un salto de linea.
mensaje2 DB "INGRESE X del 0 al 9: ",13,10,"$" ;escribimos otro mensaje con un salto de linea y que nos regrese al inicio d ela linea
mensaje3 DB "INGRESE Y del 0 al 9: ",13,10,"$" ;escribimos otro mensaje.
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')
DATOS ENDS
CODIGO SEGMENT PARA PUBLIC 'code'
ASSUME CS:CODIGO,DS:DATOS
startup:
mov ax,DATOS
mov ds,ax ;movemos lo almacenado en ax a ds
imprime mensaje
mov si,00h
leer:
mov ax,0000
mov ah,01h
int 21h ;generamos una interrupcion
mov caracter[si],al
inc si
cmp al,0dh
ja leer
jb leer
mov dx,offset caracter
mov ah,0ah
int 21h ;utilizamos una interrupcion
imprime caracter
imprime mensaje2
mov ah,01h
int 21h ;otra interrupcion
sub al,30h
mov bl,al
mov varx,al
imprime mensaje3
mov ah,01h
int 21h ;generamos una interrupcion al sistema
sub al,30h
mov bl,al ;movemos lo almacdenado en al a bl.
mov vary,al
mov ax,0003h
int 10h
gotoxy vary,varx
pantalla caracter[0]
mov ah,01h
int 21h ;interrupcion
mov ax,4c00h
int 21h ;generamos una interrupcion
CODIGO ENDS ;terminamos las instrucciones d enuestro programa
end startup