Ensamblador - Primeras practicas

   
Vista:

Primeras practicas

Publicado por Jorge (2 intervenciones) el 28/02/2008 16:33:26
Hola a todos, como muchos de aqui tengo un problemilla con una practica que estoy realizando no es muy dificil pero ensamblador tampoco nos explican mucho la practica consiste en recoger una cadena de texto y devolverla todo va bien pero no consigo hacer el salto de linea y me sobreescribe la primera frase, si me pudieseis ayudar lo agradeceria. gracias

.MODEL small
.STACK 100h
.DATA
tamcadena EQU 100
ente EQU 0Dh

cadena DB 'Introduzca cadena de texto:',10,13,'$'
var1 DB tamcadena+1 DUP(?)

.CODE

startupcode
mov ax,@data
mov es,ax

mov dx,OFFSET cadena
mov ah,9h
int 21h

mov di,OFFSET var1
sub cx,cx
call leer_cadena
mov si,OFFSET var1
call mostrar_cadena

exitcode
leer_cadena:
cld

mov ah,01h
int 21h

cmp al,ente
je finalizar_entrada

stosb
inc cx
cmp cx,tamcadena
jge finalizar_entrada

jmp leer_cadena

finalizar_entrada:
mov al,00h
stosb

ret

mostrar_cadena:
cld
mov ah,2
escribe: lodsb
cmp al,00h
je finalmos
mov dl,al
int 21h
jmp escribe

finalmos: ret

END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Primeras practicas

Publicado por MSH (121 intervenciones) el 28/02/2008 18:26:27
Saludos:

espero sea de utilidad

.MODEL small
.STACK 100h
.DATA
tamcadena EQU 100
ente EQU 0Dh

cadena DB 'Introduzca cadena de texto:',10,13,'$'

;este salto de linea y retorno de carro que pones al iniciar el programa, es para que no coloques el mensaje en la misma linea donde tecleas el nombre del programa

var1 DB tamcadena+1 DUP(?)

.CODE

startupcode
mov ax,@data
mov es,ax

mov dx,OFFSET cadena
mov ah,9h
int 21h

mov di,OFFSET var1
sub cx,cx
call leer_cadena

;................Esta son las instrucciones faltantes..........................

mov ah,02h
mov dl,0ah ;salto de línea
int 21h
mov ah,02h
mov dl,0dh ;retorno de carro
int 21h
;.............................................................................................................

mov si,OFFSET var1
call mostrar_cadena

exitcode
leer_cadena:
cld

mov ah,01h
int 21h

cmp al,ente
je finalizar_entrada

stosb
inc cx
cmp cx,tamcadena
jge finalizar_entrada

jmp leer_cadena

finalizar_entrada:
mov al,00h
stosb

ret

mostrar_cadena:
cld
mov ah,2
escribe: lodsb
cmp al,00h
je finalmos
mov dl,al
int 21h
jmp escribe

finalmos: ret

END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Primeras practicas

Publicado por jorge (2 intervenciones) el 29/02/2008 09:48:05
Muchas gracias por la respuesta, al final lo he resuelto de otra manera he creado otra cadena llamada salto con 13,10 y me funciona, de todas formas gracias lo pongo por si lo quiere mirar alguien.

.MODEL small
.STACK 100h
.DATA
tamcadena EQU 100
ente EQU 0Dh

cadena DB "Introduzca una cadena de texto: $"
salto DB 13,10,"$"
var1 DB tamcadena+1 DUP(?)

.CODE

startupcode
mov ax,@data
mov es,ax

mov dx,OFFSET cadena
mov ah,9h
int 21h

mov di,OFFSET var1
sub cx,cx
call leer_cadena

mov dx,OFFSET salto
mov ah,9h
int 21h

mov si,OFFSET var1
call mostrar_cadena

exitcode
leer_cadena:
cld

mov ah,01h
int 21h

cmp al,ente
je finalizar_entrada

stosb
inc cx
cmp cx,tamcadena
jge finalizar_entrada

jmp leer_cadena

finalizar_entrada:
mov al,00h
stosb

ret

mostrar_cadena:
cld
mov ah,2
escribe: lodsb
cmp al,00h
je finalmos
mov dl,al
int 21h
jmp escribe

finalmos: ret

END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Primeras practicas

Publicado por Elio (1 intervención) el 12/08/2014 04:33:53
Muchas gracias por escribir tu solucion :) me ayudo con mi practica!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Primeras practicas

Publicado por IA (4 intervenciones) el 11/04/2015 21:09:20
Hola buenas tardes, tengo un problema! necesito crear un programa en ensamblador (en el command prompt de Windows XP) que imprima los numeros del 0 al 9 en forma descentente en forma de diagonal (izquierda a derecha), (dejare una imagen de como deberia quedar, solo es un ejemplo grafico hecho en bloc de notas):

Captura-de-pantalla-105

Se que se usa una instruccion llamada "LINE FEED" pero no la eh podido implementar. hasta ahorita solo eh podido imprimir los numeros asi: "9876543210" , este es mi codigo:

- a 100
-XXXX:XXXX mov cx,a
-XXXX:XXXX mov al,39
-XXXX:XXXX mov dl,al
-XXXX:XXXX mov ah,2
-XXXX:XXXX int 21
-XXXX:XXXX dec al
-XXXX:XXXX dec cx
-XXXX:XXXX jnz 105
-XXXX:XXXX int 20
-XXXX:XXXX
-g
9876543210
El programa ha terminado de forma normal


Espero tener su ayuda, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Primeras practicas

Publicado por Israel (4 intervenciones) el 11/04/2015 21:12:56
Hola buenas tardes, tengo un problema! necesito crear un programa en ensamblador (en el command prompt de Windows XP) que imprima los numeros del 0 al 9 en forma descentente en forma de diagonal (izquierda a derecha), (dejare una imagen de como deberia quedar, solo es un ejemplo grafico hecho en bloc de notas):

Captura-de-pantalla-105

Se que se usa una instruccion llamada "LINE FEED" pero no la eh podido implementar. hasta ahorita solo eh podido imprimir los numeros asi: "9876543210" , este es mi codigo:

- a 100
-XXXX:XXXX mov cx,a
-XXXX:XXXX mov al,39
-XXXX:XXXX mov dl,al
-XXXX:XXXX mov ah,2
-XXXX:XXXX int 21
-XXXX:XXXX dec al
-XXXX:XXXX dec cx
-XXXX:XXXX jnz 105
-XXXX:XXXX int 20
-XXXX:XXXX
-g
9876543210
El programa ha terminado de forma normal


Espero tener su ayuda, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Primeras practicas

Publicado por wilge ratahead_@hotmail.com (1 intervención) el 23/04/2015 07:08:47
================================================================
ES PERO QUE TE SIRVA
================================================================

C:\>debug
-a
0B1B:0100 mov cx,a --------- contador
0B1B:0103 mov bl,39 --------- bl ==> 39
0B1B:0105 mov ah,02 --------- funcion 02 de la interrupcion 21
0B1B:0107 mov dl,bl --------- muestra lo que tiene bl
0B1B:0109 int 21 --------- interrupcion 21
0B1B:010B dec bl --------- decremento de bl
0B1B:010D mov dl,0a --------- salto de linea
0B1B:010F int 21 --------- interrupcion 21
0B1B:0111 loop 105 --------- iterador que repite desd (0B1B:0105 mov ah,02)
0B1B:0113 int 3 --------- fin de programa
0B1B:0114
-g
9
8
7
6
5
4
3
2
1
0

AX=020A BX=002F CX=0000 DX=000A SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B1B ES=0B1B SS=0B1B CS=0B1B IP=0113 NV UP EI PL NZ AC PO NC
0B1B:0113 CC INT 3
-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar