Sei sulla pagina 1di 4

Introduccin a los computadores Curso 2013-2014

Ejercicio 3 de Prcticas

Procedimientos de conversin Las interrupciones software de lectura por teclado y de impresin en pantalla slo permiten leer y mostrar cadenas de texto. As, para poder utilizar un nmero introducido por teclado, es necesario transformar la cadena leda en la magnitud que corresponda. El procedimiento Cadena_Numero se encarga de esta tarea, convirtiendo el contenido de la cadena de lectura disponi le en la varia le cadenaL en el nmero correspondiente. !ic"o nmero es devuelto en el registro AX. !e manera similar, el procedimiento Numero_Cadena, permite realizar la transformacin inversa necesaria para mostrar valores num#ricos en pantalla. Antes de llamar a este procedimiento, es necesario almacenar en el registro AX el valor a convertir. El procedimiento devuelve el resultado de la conversin en la varia le cadenaR. Adem$s, se encarga de finalizar la cadena con el car$cter %&', por lo que su contenido puede mostrarse en pantalla directamente utilizando la funcin (" de la interrupcin )*".

Ejercicio Resuelto
El siguiente programa en lengua+e ensam lador se encarga de leer por teclado ) nmeros, de dos dgitos como m$ximo, y mostrar el resultado de la suma por pantalla. data segment msj_pedirNumero1 DB "Introduzca el primer nmero:$" msj_pedirNumero2 DB "Introduzca el segundo nmero:$" msj_resultado DB "El resultado de la suma es:$" saltoLinea DB 1 ! 1"! #$# cadenaL DB $ D%&'() cadena* DB $ D%&'() num1 D+ ( num2 D+ ( ends stac, segment d12. dup' ) ends code segment ;Imprime una cadena por pantalla ;E: DX contiene la direccin de memoria de la cadena a imprimir Imprimir &*/0 pus1 a2 mo3 a1! 4 int 211 pop a2
*,-

Introduccin a los computadores Curso 2013-2014

Ejercicio 3 de Prcticas

ret Imprimir END& 5Lee una cadena por teclado 5E: D6 contiene la direcci7n de la cadena donde se almacenar8 la lectura Leer0adena &*/0 pus1 a2 mo3 a1! a1 int 211 pop a2 ret Leer0adena END& 50on3ierte una cadena a nmero 5E: 09DEN9L contiene la cadena 'caract: num;ricos) a con3ertir 5<: 96 almacena el resultado num;rico de la con3ersi7n 0adena_Numero &*/0 pus1 =2 pus1 c2 pus1 d2 pus1 si mo3 mo3 mo3 mo3 mo3 cl! cadenaL>1? c1! =2! 1 si! 2 a2!

cad_num: mul =2 mo3 dl! cadenaL>si? su= dl! # # mo3 d1! add a2! d2 inc si loop cad_num pop si pop d2 pop c2 pop =2 ret 0adena_Numero END& 50on3ierte un nmero a cadena 5E: 96 contiene el nmero a con3ertir 5<: 09DEN9* contiene la cadena 'caract: num;ricos) tras la con3ersi7n Numero_0adena &*/0 pus1 a2 pus1 =2 pus1 d2
),-

Introduccin a los computadores Curso 2013-2014

Ejercicio 3 de Prcticas

pus1 si pus1 di mo3 =2! 1 mo3 si! mo3 di! num_cad: 5Bucle para trans@ormar cada dAgito a car8cter mo3 d2! di3 =2 mo3 cadena*>si?! dl add cadena*>si?! # # inc si cmp al! jne num_cad mo3 cadena*>si?! #$# dec si in3ertir: 5Bucle para in3ertir la cadena mo3 al! cadena*>di? mo3 a1! cadena*>si? mo3 cadena*>si?! al mo3 cadena*>di?! a1 dec si inc di cmp di! si jl in3ertir pop di pop si pop d2 pop =2 pop a2 ret Numero_0adena END& start: mo3 a2! data mo3 ds! a2 mo3 es! a2 lea d2! msj_pedirNumero1 call Imprimir lea d2! saltoLinea call Imprimir lea d2! cadenaL mo3 cadenaL> ?! " call Leer0adena lea d2! saltoLinea call Imprimir call 0adena_Numero
.,-

Introduccin a los computadores Curso 2013-2014

Ejercicio 3 de Prcticas

mo3 num1! a2 lea d2! msj_pedirNumero2 call Imprimir lea d2! saltoLinea call Imprimir lea d2! cadenaL mo3 cadenaL> ?! " call Leer0adena lea d2! saltoLinea call Imprimir call 0adena_Numero mo3 num2! a2 mo3 a2! num1 add a2! num2 call Numero_0adena lea d2! msj_resultado call Imprimir lea d2! saltoLinea call Imprimir lea d2! cadena* call Imprimir mo3 a2! Bc int 211 ends end start 1

Ejercicio Propuesto
/e propone como e+ercicio modificar el cdigo anterior para que programa calcule y muestre el resultado de elevar el primer nmero al segundo. /i dic"o resultado no se puede representar a trav#s de ) ytes, se mostrar$ un mensa+e de error.

-,-

Potrebbero piacerti anche