Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá. ACTIVIDADES PARA LA PRÁCTICA 6 Num Ejer. Ejercicio 1 Introduce, ensambla y ejecuta con el Code View el código siguiente, presta atención especial al valor que tendrá el registro BL al final del programa: dosseg .model small. .stack 100h .data Texto DB ‘Introduce un número hexadecimal de cómo mucho dos cifras entre 0 y 9$’ .code Inicio: mov ax, @data mov ds, ax mov ah, 9 lea dx, Texto int 21h xor bl, bl mov ah, 1 int 21h mov cl, 4 mov bl, al sub bl, 30h shl bl, cl int 21h sub al, 30h add bl, al mov ah, 4Ch int 21h END Inicio 2 3 Modifica la actividad anterior para que lea un número de 4 cifras hexadecimales. Escribe, ensambla y ejecuta el código siguiente: dosseg .model small .stack 100h .data Numero DB 17h .code Inicio: mov ax, @data mov ds, ax mov bh, Numero mov cl, 4 shr bh, cl mov ah, 2 mov dl, bh add dl, 30h int 21h (Continúa) ACTIVIDADES Y PRACTICA 6 Página 1 de 1 Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá. (Continúa) mov dl, Numero and dl, 0Fh add dl, 30h int 21h 4 5 6 mov ah, 4Ch int 21h END Inicio ¿Que hace el programa anterior? Cambia el número 17h por los números 34h y 0Fh. ¿Qué ocurre? Escribe, ensambla y ejecuta con el Code View el código siguiente: dosseg .model small .stack 100h .data Texto1 DB "Este programa calcula una potencia", 13,10,'$' Texto2 DB "Introduzca Base < 255: ", 13,10,'$' Texto3 DB "Introduzca Exponente < 255: ", 13,10,'$' Base DB ? Exp DB ? Resul DW ? .code convierte proc sub al,30h ret convierte endp potencia macro LaBase, Exponente mov cx, Exponente mov ax, 1 jcxz cero otro: mul LaBase loop otro cero: endm Inicio: mov ax, @data mov ds, ax mov ah,9 lea dx,Texto1 int 21h lea dx,Texto2 int 21h mov ah,1 ;entrada desde teclado, devuelve en al el codigo ascii int 21h call convierte mov Base, al mov ah,9 lea dx,Texto3 int 21h (Continúa) ACTIVIDADES Y PRACTICA 6 Página 2 de 2 Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá. (Continúa) mov ah,1 ;entrada desde teclado, devuelve en al el codigo ascii int 21h call convierte mov Exp, al potencia Base, Exp mov Resul, ax mov ah, 4Ch int 21h END Inicio 7 Visualiza las variables Base, Exp y Resul ( Ej. En la línea de comandos del Code View > Wb Base l 1) ¿Es correcto el resultado? Visualiza el valor de la pila antes y después de hacer las llamadas al procedimiento ( Ej. En la línea de comandos del Code View > Wb SS:SP l 6) ¿Qué es lo que observas? ACTIVIDADES Y PRACTICA 6 Página 3 de 3 Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá. PRÁCTICA 6 Procedimientos y Macros Objetivos: Los objetivos de la práctica son familiarizar al alumno con la realización de código reutilizable, conjuntos de instrucciones que se pueden ejecutar varias veces en un programa. Medios: Para la programación se emplea el Microsoft Assembler 5.1. El software viene acompañado de un programa ensamblador (MASM) y su correspondiente enlazador (LINK) que generará un fichero ejecutable (.EXE) que será el que podrá ser ejecutado paso a paso mediante el simulador o ejecutado de golpe como se hace habitualmente. Práctica: Realizar un programa que lea un número de 3 digitos por teclado y que informe por pantalla si el nº es o no un nº primo. Realizar un procedimiento para convertir el nº de ASCII a decimal. Realizar una macro que verifique si el nº es o no un nº primo. (Nota: Un nº es primo si únicamente al dividirlo entre la unidad y entre si mismo da de resto 0, al dividirlo entre cualquier otro nº el resto es distinto de cero ). dosseg .model small .stack 100h .data Numero DB 30h, 30h, 30h Factor DB 10 primo DB “ES PRIMO”, 10, 13, ‘$’ no primo DB “ NO ES PRIMO”, 10, 13, ‘$’ .code CONVERTIR PROC . . (procedimiento) . CONVERTIR ENDP ANALIZA MACRO . . (Macro) . ENDM Inicio: mov ax, @data ACTIVIDADES Y PRACTICA 6 Página 4 de 4 Arquitectura y Tecnología de los Computadores. Departamento de Automática. Universidad de Alcalá. mov ds, ax mov ah, 1 int 21h mov Numero, al int 21h mov Numero[1], al int 21h mov Numero[2], al int 21h CALL CONVERTIR ANALIZA mov ah, 4Ch int 21h END Inicio ACTIVIDADES Y PRACTICA 6 Página 5 de 5