Universidad Nacional de Ingeniería
UNI
Facultad de Electrotecnia y Computación
Carrera: Ingeniería en Computación
Departamento de Arquitectura de Sistemas y Aplicaciones
Asignatura: Arquitectura de Maquinas Computadoras II
LABORATORIO #1
ENTRADA/SALIDA ESTANDAR EN TAS
Objetivo:
Realiza programación en lenguaje ensamblador de la arquitectura R2 ix86, ix386 o ix64
para realizar operaciones de procesamiento matemático o textual sencillo aplicando
diferentes modos de direccionamiento.
Actividades:
1. Identifica los problemas a resolver en la lista que se provee en la sección
[Problemas].
2. Selecciona el entorno de desarrollo a emplear para codificar tu programa en
ensamblador. La opción propuesta es: GUI Turbo Assembler. No aplica el
EMU8086.
3. Planifica (algoritmiza) la solución a tu problema, codifica, prueba y valida tu
programa.
PROBLEMAS:
1. Captura básica de cadenas en TASM
Solución:
.model Small ;Indiaca el modelo de memoria
.stack ;Indica el modelo de pila
.data ;Indica el inicio del segmento de datos
msg db 10,13,"INGRESE LA CADENA: ","$"
cadena db 100 dup(' '),'$'
.code ;Inicia el segmento de codigo
main: ;Inicia el proceso de segmento de codigo
mov ax, seg @data ;Se asigna la localizacion del segmento de datos al registro
AX
mov ds, ax ;DS=AX
1
mov ah, 09h ;Para imprimir una cadena
lea dx, msg ;Para leer el mensaje
int 21h ;Imprime el texto de msg
;Codigo para la captura de la cadena
mov ah, 3FH
mov bx, 00
mov cx, 100
mov dx, offset[cadena]
int 21h
;Para imprimir la cadena introducida
mov ah, 09h
mov dx, offset[cadena]
int 21h
;SERVICIO DE FINALIZACION
MOV AH, 4cH
INT 21H
end main
2. Capturar números de 2 cifras en TASM.
Solución:
.MODEL SMALL
.STACK
.DATA
u DB 0 ;VARIABLE PARA ENTRADA 1
d DB 0 ;VARIABLE PARA ENTRADA 2
r DB 0 ;VARIABLE PARA RESULTADO
M1 DB 10,13,'Ingrese un Numero: ','$' ;VARIABLE DE MENSAJE 1
M2 DB 10,13,'Numero Ingresado: ','$' ;VARIABLE DE MENSAJE 2
.CODE
MAIN:
MOV AX, seg @DATA ;ACUMULAR DIRECCION DE DATA
MOV DS, AX ;MOVER LA DIRECCION A DS
MOV AH, 9 ;SERVICIO DE IMPRESION
LEA DX, M1 ;OBTIENE LA DIRECCION DE M1
INT 21H ;IMPRIME M1
;Para capturar el digito de las decenas
MOV AH, 01h
INT 21h
SUB AL, 30H
2
MOV d, AL
;Para capturar el digito de las unidades
MOV AH, 01h
INT 21h
SUB AL, 30H
MOV u, AL
;Une los dígitos de las unidades y decenas
mov al,d
mov bl,10
mul bl
add al,u
mov r,al
MOV AH, 9 ;SERVICIO DE IMPRESION
LEA DX, M2 ;OBTIENE LA DIRECCION DE M2
INT 21H ;IMPRIME M2
;PARA IMPRIMIR LOS 2 ENTEROS
mov al,r
AAM
mov bx,ax
mov ah,02h
mov dl,bh
add dl,30h
int 21h
mov ah,02h
mov dl,bl
add dl,30h
int 21h
;SERVICIO DE FINALIZACION
MOV AH, 4cH
INT 21H
END MAIN