Está en la página 1de 9

1) Dada la sección de datos analizar cada una de las sentencias en la sección de

código:

.DATA; Inicio del segmento de datos

NB BYTE 12; Se declara la variable NB del tipo BYTE y se le asigna el valor de 12

NW WORD 2547; Se declara la variable NW del tipo WORD y se le asigna el valor de 2547

ND DWORD 0; Se declara la variable ND del tipo DWORD y se le asigna el valor de 0

SB BYTE "PRACTICA DE REGISTROS",0; Se asigna la cadena a SB de tipo BYTE

.CODE; Inicio del segmento de codigo

REGX PROC; se inicia el procedimiento principal REGX

MOV EAX, FFAH; Se coloca a EDX FFA hexadecimal lo cual generaría un error porque el
valor debe de estar antecedido de un cero.

MOV DH,NW ; Se coloca a DH la dirección de memoria de la etiqueta NW lo que generaría


un error porque no son del mismo tamaño DH es de 8 bytes y NW es de 16 bytes

MOV ECX,ND ; Se coloca a ECX la dirección de memoria de la etiqueta ND

MOV EBX,0AAZH; Se coloca a EBX el valor de AAZ hexadecimal, lo cual es un error


porque Z no forma parte del sistema hexadecimal

MOV EDX,ND; Se coloca a EDX la dirección de memoria de la etiqueta ND

MOV EDX, 00000FFFFH; Se coloca a EDX el valor de FFFF

CALL WRITESTRING; Muestra en consola un mensaje del registro EDX, al no ser una
cadena de tipo BYTE se presentara un error lógico en la ejecución.

EXIT; Sale al sistema operativo

REGX ENDP; Fin del procedimiento REGX

END REGX; Fin del programa

Anotar lo que sucede en cada una de las sentencias anteriores. Tomar en cuenta que
si hay un error hay que solucionarlo y se debe de explicar el porqué de la corrección o
si está bien, decir también porqué cumple.

Página 1
Cuestionario y Ejercicios Propuestos

Un código funcional seria el siguiente:

TITLE prueba

INCLUDE IRVINE32.INC

.DATA

NB BYTE 12

NW WORD 2547

ND DWORD 0

SB BYTE "PRACTICA DE REGISTROS",0

.CODE

REGX PROC

MOV EAX,0FFAH

MOV DX,NW

MOV ECX,ND

MOV EBX,0AAH

MOV EDX,ND

MOV EDX,00000FFFFH

CALL DUMPREGS

EXIT

REGX ENDP

END REGX

Página 2
Cuestionario y Ejercicios Propuestos

2) Hacer un programa que pida dos números por consola y los muestre unidos,
concatenados. Ejemplo, si entro 15 y luego 89 la consola debe de mostrar 1589.

TITLE prueba2

INCLUDE IRVINE32.INC

.DATA

SB1 BYTE "Introduzca el primer numero: ",0

SB2 BYTE "Introduzca el segundo numero numero: ",0

SB3 BYTE "Los numeros concatenados son: ",0

.CODE

REGX PROC

CALL CRLF

MOV EDX,OFFSET SB1

CALL WRITESTRING

CALL READDEC

MOV EBX,EAX

CALL CRLF

MOV EDX,OFFSET SB2

CALL WRITESTRING

CALL READDEC

MOV ECX,EAX

CALL CRLF

MOV EDX,OFFSET SB3

CALL WRITESTRING

MOV EAX,EBX

CALL WRITEDEC

Página 3
Cuestionario y Ejercicios Propuestos

MOV EAX,ECX

CALL WRITEDEC

CALL CRLF

EXIT

REGX ENDP

END REGX

3) ¿Cuál es la diferencia entre una etiqueta de datos y una de instrucción?

Las etiquetas de datos se encuentran en la sección de código, y se les puede identificar


fácilmente porque son las variables definidas por el programador para uso dentro de su
programa.

Una instrucción es una ORDEN que se convierte en código objeto y ejecuta una acción
predeterminada

Página 4
Cuestionario y Ejercicios Propuestos

4) Explicar la sintaxis de cada una de los siguientes procedimientos:

1- READDEC

CALL READDEC

El procedimiento READDEC guarda en formato decimal lo digitado desde la ventana de


consola al registro EAX en formato decimal

2-WRITEDEC

CALL WRITEDEC

El procedimiento WRITEDEC muestra el contenido del registro EAX en formato decimal

3-WRITEHEX

CALL WRITEHEX

El procedimiento WRITEHEX muestra el contenido del registro EAX en formato


hexadecimal

4- WRITEBIN

CALL WRITEBIN

El procedimiento WRITEBIN muestra el contenido del registro EAX en formato binario

5- DUMPREGS

CALL DUMPREGS

El procedimiento WRITEDEC muestra el contenido de todos los registros.

6- WRITESTRING

CALL WRITESTRING

El procedimiento WRITEDEC muestra una cadena de caracteres del registro EDX

Página 5
Cuestionario y Ejercicios Propuestos

5- Escriba la plantilla de un programa en assembler

TODO programa en assembler está formado por la siguiente plantilla

TITLE NOMBRE DEL PROGRAMA

INCLUDE IRVINE32.INC

.DATA

.CODE

NOMBRE DE UN PROCEDIMIENTO PROC

; Instrucciones

EXIT

NOMBRE DE UN PROCEDIMIENTO ENDP

END D NOMBRE DE UN PROCEDIMIENTO

6- ¿Qué contiene los registros segmento?

hay una serie de registros llamados CS,SS,DS y ES que son los registros segmento y
que contienen cada uno de ellos la dirección en memoria en donde inicia cada
segmento

7- Hacer un programa que pida CUATRO números de forma secuencial y los


sume.

TITLE prueba3

INCLUDE IRVINE32.INC

.DATA

SB1 BYTE "Introduzca el primer numero a sumar: ",0

SB2 BYTE "Introduzca el segundo numero a sumar: ",0

Página 6
Cuestionario y Ejercicios Propuestos

SB3 BYTE "Introduzca el tercer numero a sumar: ",0

SB4 BYTE "Introduzca el cuarto numero a sumar: ",0

SB5 BYTE "La suma de los numeros es: ",0

.CODE

SUM PROC

CALL CRLF

MOV EDX,OFFSET SB1

CALL WRITESTRING

CALL READDEC

MOV EBX,EAX

CALL CRLF

MOV EDX,OFFSET SB2

CALL WRITESTRING

CALL READDEC

ADD EBX,EAX

CALL CRLF

MOV EDX,OFFSET SB3

CALL WRITESTRING

CALL READDEC

ADD EBX,EAX

CALL CRLF

MOV EDX,OFFSET SB4

CALL WRITESTRING

CALL READDEC

ADD EBX,EAX

Página 7
Cuestionario y Ejercicios Propuestos

CALL CRLF

MOV EDX,OFFSET SB5

CALL WRITESTRING

MOV EAX,EBX

CALL WRITEDEC

CALL CRLF

EXIT

SUM ENDP

END SUM

8- ¿Cuáles son los registros de la PILA?

ESP

EBP

9- Explique la división de un registro de propósito general

El registro EAX puede almacenar una dirección de 32 bits pero también puede dividirse
en solo registro de 16 bits llamado AX, dicho registro también puede dividirse en dos
registros más de 8 bits cada uno, AH que es una mitad superior y AL que es la otra
mitad del registro. Aplica también para los registros EBX, ECX, EDX.

Página 8
Cuestionario y Ejercicios Propuestos

10- ¿Qué significa INCLUDE IRVINE32.INC?

Significa que se incluye el fichero que contiene todos los procedimientos a utilizar en
nuestro programa

Página 9

También podría gustarte