Sie sind auf Seite 1von 18

MATERIA: INFORMATICA BSICA

CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

PROFESOR: ING. JORGE RAMOS GARCIA.


GPO: B
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 12:30pm - 2:45pm

Cuatrimestre: Otoo 2014

ENSAMBLADOR 8086
TASM/MASM/EMU8086

PROGRAMACIN
PRCTICAS DE LABORATORIO

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806

Correo Electrnico: josh_ram@hotmail.com

Pagina 1 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Otoo 2014

PROFESOR: ING. JORGE RAMOS GARCIA.


GPO: B
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 12:30pm - 2:45pm

Introduccin

Estas prcticas se han elaborado para orientar a los alumnos de la materia de INFORMTICA BSICA en
el aprendizaje de algoritmos computacionales dentro del Lenguaje Ensamblador y el entorno TASM /
MASM / emu8086

Todas las prcticas de laboratorio estarn estructuradas de la siguiente forma:

Objetivo.
Recursos.
Teora.
Desarrollo de ejercicios y entrega de resultados

NOTAS:
EL RESULTADO DE CADA PROGRAMA DE ESTA PRCTICA, SE ENVIAR AL CORREO: PROF. ING. JORGE
RAMOS GARCIA, ensamblador8086_ugto@outlook.com (reporte lo que haya observado y sus conclusiones, adems los
archivos fuente .ASM cuando se realicen ejercicios propuestos)
REVISE Y ESTUDIE CADA EJERCICIO Y TRATE DE ENTENDERLOS PARA LOS EJERCICIOS QUE SE
REALIZARAN EN LAS SIGUIENTES PRACTICAS.
CUALQUIER DUDA O COMENTARIO FAVOR DE EXPRESARLO

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806

Correo Electrnico: josh_ram@hotmail.com

Pagina 2 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Otoo 2014

PROFESOR: ING. JORGE RAMOS GARCIA.


GPO: B
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 12:30pm - 2:45pm

PRACTICA NO. 02

programacin bsica

OBJETIVO:
1.
2.
3.

Rutinas para lectura de datos desde el teclado.


Rutinas para exhibir datos en pantalla.
Operaciones aritmticas bsicas en ensamblador (ADD,SUB,MUL,DIV)

RECURSOS:

Para implementar los ejercicios de programacin en lenguaje ensamblador se utilizarn las siguientes herramientas de
software:
Editor:
EDIT / NE / o cualquier otro que genere archivos ASCII.
Ensamblador: TASM.EXE
Enlazador:
TLINK.EXE
Emulador:

EMU8086.exe (entorno)

TEORIA.
Instrucciones bsicas
Hay una serie de instrucciones importantes y necesarias para cualquier programa en ensamblador. La ms importante es la instruccin
MOV.
MOV: mueve un valor de un lugar a otro.
MOV destino, origen
Ejemplos:
mov ax,10
mov bx,cx ;
mov dx,Number

; mueve un valor inmediato al registro ax


mueve en valor registro desde cx a bx
; mueve el valor memoria definido como Number a dx

INT: llama a una funcin del DOS o BIOS a travs de una subrutina para realizar un servicio especial, por ejemplo manipular el vdeo,
la pantalla, abrir un fichero, escribir en un puerto, etc. En este texto usaremos una de ellas, la salida a pantalla, que se corresponde con
la 21h. Las dems se pueden consultar en la bibliografa.
INT interrupt number
Ejemplos:
int 21h
int 10h

; Llama a la interrupcin nmero 21 (hexadecimal)


; Llama a la interrupcin del Video en la BIOS

Casi todas las interrupciones tienen asociados ms de un servicio, por ello es necesario pasar el nmero de servicio deseado. Se utiliza
para ello el registro AH. El ejemplo ms usado es escribir algo en la pantalla del monitor:
mov ah,9
int 21h

; el servicio nmero 9 (decimal) se pasa al registro AH


; llamada a la interrupcin 21

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806

Correo Electrnico: josh_ram@hotmail.com

Pagina 3 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Otoo 2014

PROFESOR: ING. JORGE RAMOS GARCIA.


GPO: B
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 12:30pm - 2:45pm

El servicio, o funcin, nmero 9 se corresponde a la impresin de caracteres en pantalla. Para ello, antes es necesario especificar qu
vamos a escribir en pantalla. Se hace uso de DS:DX que ser el puntero de la direccin fsica en memoria indicando dnde se
encuentra la cadena de caracteres a imprimir en pantalla. La cadena de caracteres se termina con el smbolo ($). Sera sencillo si
pudisemos escribir directamente en DS, como no es posible, tenemos que usar el registro AX para generar la direccin fsica. El
ejemplo es el siguiente:
mov dx,OFFSET Message ; DX contiene el offset de message
mov ax,SEG Message
; AX contiene el segmento del message
mov ds,ax
; DS:DX apunta a la direccin fsica del mensaje
mov ah,9
; carga el servicio 9 caracteres a pantalla
int 21h
; llamada a la interrupcin de DOS
Las directivas OFFSET y SEG indican al compilador que el segmento y el offset de Message se use para obtener la direccin fsica en
memoria la cadena de datos, para posteriormente escrib ir a pantalla. Hecho esto, podremos enviar el mensaje a la pantalla, escribiendo
previamente en el segmento de datos el mensaje con la etiqueta y la directiva DB de la siguiente forma:
Message DB "Estructura y Tecnologa de Computadores. Prctica 1$"
Ntese que la cadena de caracteres termina con el smbolo ($). DB es una directiva para asignar memoria a variables del tipo byte y el
contenido del mensaje en un array de bytes (ASCII). Adems de formato bytes (DB) se puede usar formatos tipo word (DW)
y doble word (DD).
Number1 db ?
Number2 dw ?
El smbolo (?) al final de la lnea indica que no hay inicializacin.
Number1 db 0
Number2 dw 1
En este caso Number1 es igual a 0 y Number2 es igual a 1. Hay que tener en cuenta el
tamao de los datos, por ejemplo:
mov al,Number1
mov ax,Number1
mov bx,Number2
mov bl,Number2

; ok
;error
; ok
; error

Lo que indica que, nicamente se pueden usar bytes en registros de 8 bits y palabras en
registros de 16 bits

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806

Correo Electrnico: josh_ram@hotmail.com

Pagina 4 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Otoo 2014

PROFESOR: ING. JORGE RAMOS GARCIA.


GPO: B
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 12:30pm - 2:45pm

RUTINAS EMPLEADAS EN LOS PROGRAMAS DE ESTA PRACTICA.

INT 21H Funcin 09H


Visualizacin de una cadena de caracteres
LLAMADA:
AH = 09H
DS:DX = Segmento: Desplazamiento de la cadena a visualizar (in DX - offset address of string in data segment)
DS debe apuntar al segmento donde se encuentra la cadena.
DX debe contener el desplazamiento de la cadena dentro de ese segmento.
Ejemplo: Definition of the message in Data segment
MSG DB "This is a message$" or "This...","$"
Program in Code segment
Mov AH, 09H
Mov DX, Offset MSG
Int 21 H
DEVUELVE: NADA.
EFECTO: Se enva una cadena de caracteres al dispositivo estndar de salida. Si no se ha redireccionado la salida, la cadena se enviar a la
pantalla.
INT 21H Funcin 01H
Entrada de Carcter con Eco ( salida)
LLAMADA:
AH = 01H
DEVUELVE:
AL = Cdigo ASCII del Carcter ledo y Echo a pantalla
(si AH =08H) es servicio sin Echo)
EFECTO: Se lee un carcter del dispositivo de entrada estndar, y se enva al dispositivo estndar de salida. Si al llamar a la funcin no haba
ningn carcter disponible, se esperar a que lo haya. Normalmente el dispositivo estndar de entrada es el teclado, y el dispositivo estndar de
salida es la pantalla.

INT 21H Funcin 02H


Salida de Carcter
LLAMADA:
AH = 02H
DL = Cdigo ASCII a enviar al dispositivo de salida.
DEVUELVE:
NADA.
EFECTO: Se enva el carcter depositado en el registro DL al dispositivo estndar de salida. La salida puede ser redireccionada hacia un fichero,
impresora, etc

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806

Correo Electrnico: josh_ram@hotmail.com

Pagina 5 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Otoo 2014

PROFESOR: ING. JORGE RAMOS GARCIA.


GPO: B
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 12:30pm - 2:45pm

APUNTES PARA LOS EJERCICIOS 3 y 4 DE ESTA PRCTICA.


ADD destino, origen (ADDition, sumar) {O,S,Z,A,P,C}
Suma origen y destino, guardando el resultado en destino. Si al sumar los dos
ltimos bits "me llevo una" el bit de carry se pone a 1 (y si no, a 0).
Instruccin ADD

Sumar
Sintaxis:
ADD reg,imm
Ejemplo: ADD BL, 10
BL= BL +10
ADD reg, reg Sumar el contenido del 2 registro al
contenido del 1.
Ejemplo: ADD BL, AL ; No cambia el valor de AL
BL= BL + AL
ADD reg,mem
ADD mem,reg
ADD mem, mem
ADD mem,imm
SUB destino, origen (SUBstract, resta) {O,S,Z,A,P,C}
Resta a destino lo que haya en origen

Instruccin SUB
Resta
Sintaxis: SUB reg, imm
SUB reg, reg
SUB reg,mem
SUB mem,reg
SUB mem, mem
SUB mem,imm

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806

Correo Electrnico: josh_ram@hotmail.com

Pagina 6 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

Cuatrimestre: Invierno 2014

RESUMEN DE INSTRUCCIONES.
AAA, AAD, AAM, AAS
ADD
ADC
CBW
CMP
CWD
DAA, DAS
DEC
DIV
IDIV
IMUL
INC
MUL
NEG
SBB
SUB

ajuste ASCII para suma, divisin, producto y resta


suma datos entre registros o la memoria y otro registro
suma con acarreo
convierte byte a palabra
compara los datos
convierte palabra a doble palabra
ajuste decimal en AL para una suma/resta en BCD
decrementa operando en 1
divisin sin signo
divisin con signo
multiplicacin con signo
incrementa operando en 1
multiplicacin sin signo
cambia el signo
resta con acarreo
resta datos entre los registros y la memoria u otro reg.

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 7 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

Cuatrimestre: Invierno 2014

DESARROLLO DE EJERCICIOS.
Cada uno de los ejercicios se pueden desarrollar ya sea utilizando TASM o EMU8086.

1.

PROGRAMA QUE RECIBE UN DATO DEL TECLADO Y LO EXHIBE EN PANTALLA.

- inicio

del

programa -

; archivo: TECLA.ASM
;----------------------a los nombres de los archivos asignelos de una a 8 letras,
;----------------------y la extension asignela con las letras .ASM
; Fecha:
; materia: informatica basica
; Universidad de Guanajuato. Campus Irapuato-Salamanca
;
.MODEL SMALL
.STACK
.DATA
_msg_titulo db 10,13,' PRESIONA UNA TECLA: $'
_TECLA DB ?
_msg_salida db 10,13,' USTED PRESIONO LA TECLA: $'
_msg_repeticion db 10,13,10,13,'***** repetido 3 veces ****** ',10,13,10,13,'$'

.CODE
_PROGRAMA:
;segmento de datos
mov ax,@data
mov ds,ax
;mensaje en pantalla
mov dx,offset _msg_titulo
mov ah,09h
int 21h
;entrada de dato desde teclado
MOV AH,01H
INT 21H
mov _tecla,al
;mensaje a pantalla
mov dx,offset _msg_salida
mov ah,09h
int 21h
;dato a pantalla
MOV DL,_TECLA
mov ah,02h
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 8 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Invierno 2014

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

int 21h
;mensaje a pantalla
mov ah,09h
mov dx,offset _msg_repeticion
int 21h
;datos repetidos
MOV DL,_TECLA
mov ah,02h
int 21h
int 21h
int 21h

_SALIR:
MOV AH,4CH
INT 21H
END _PROGRAMA
-fin del programa-

2.

PROGRAMA QUE RECIBE UN DATO Y VERIFICA QUE SEA SOLO NUMERO (0-9) EN CASO DE PRESIONAR UNA
TECLA QUE NO SE NUMERO EMITE UN ERROR EN PANTALLA.

-inicio del programa-

; archivo: NUMERO.ASM
;----------------------a los nombres de los archivos asignelos de una a 8 letras,
;----------------------y la extension asignela con las letras .ASM
; Fecha:
; materia: informatica basica
; Universidad de Guanajuato. Campus Irapuato-Salamanca
;
.MODEL SMALL
.STACK
.DATA
_msg_titulo db 10,13,' PRESIONA UNA TECLA: $'
_TECLA DB ?
_msg_salida db 10,13,' USTED PRESIONO LA TECLA: $'
_msg_ERROR db 10,13,10,13,'***** E R R O R, el dato no es NUMERO ****** ',10,13,10,13,'$'
_msg_numero db 10,13,' !! El dato dado SI es un Numero !! ',10,13,'$'
.CODE
_PROGRAMA:
;segmento de datos
mov ax,@data
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 9 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Invierno 2014

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

mov ds,ax
;mensaje en pantalla
mov dx,offset _msg_titulo
mov ah,09h
int 21h
;entrada de dato desde teclado
MOV AH,01H
INT 21H
mov _tecla,al
;mensaje a pantalla
mov dx,offset _msg_salida
mov ah,09h
int 21h
;dato dado enviado a pantalla
mov dl,_tecla
mov ah,02h
int 21h
;----------------------------------;checar la condicion de la tecla presionada
mov al,_tecla
cmp al,030h
jl _error
cmp al,039h
jg _error
;mensaje correcto de numero
mov dx,offset _msg_numero
mov ah,09h
int 21h
jmp _salir
;mensaje de error a pantalla
_error:
mov dx,offset _msg_error
mov ah,09h
int 21h
;----------------------------------_SALIR:
MOV AH,4CH
INT 21H
END _PROGRAMA
-fin del programa-

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 10 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

3.

Cuatrimestre: Invierno 2014

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

EN ESTE PROGRAMA SE DISEA EL ALGORITMO PARA EL CALCULO DE LA SUMA DE DOS VALORES


DADOS, CADA VALOR DADO ESTA ENTRE 0 Y 9
-inicio del programa-

; archivo: sumaXY.ASM
;----------------------a los nombres de los archivos asignelos de una a 8 letras,
;----------------------y la extension asignela con las letras .ASM
; Fecha:
; materia: informatica basica
; Universidad de Guanajuato. Campus Irapuato-Salamanca
;
.MODEL SMALL
.STACK
.DATA
_msg_titulo db 10,13,' --- Suma de dos numeros X + Y --- ',10,13,10,13,'$'
_X DB ?
_msg_X db 10,13,' DAR UN NUMERO X= $'
_Y db ?
_msg_Y db 10,13,' DAR UN NUMERO Y= $'
_suma db ?
_msg_salida db 10,13,' La suma es ===> $'

.CODE
_PROGRAMA:
;segemento de datos
mov ax,@data
mov ds,ax
;mensaje en pantalla
mov dx,offset _msg_titulo
mov ah,09h
int 21h
;entrada de dato X
MOV DX,OFFSET _MSG_X
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
mov _X,al
;al dato X se le resta 030h

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 11 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Invierno 2014

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

sub _x,30h

;entrada de dato Y
MOV DX,OFFSET _MSG_Y
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
mov _Y,al
;al dato y se le resta 030h
sub _y,30h
;----------------------------------;calculo de la suma de los dos numeros
MOV AL,_X
ADD AL,_Y
; SE SUMA X+Y
MOV _SUMA,AL
; RESULTADO DE LA SUMA
;mostrar resultado en pantalla
mov dx,offset _msg_salida
mov ah,9h
int 21h
mov dl,_suma
;SE AGREGA 030H al resultado para el valor ASCII
add dl,030h
mov ah,02h
int 21h
;----------------------------------_SALIR:
MOV AH,4CH
INT 21H
END _PROGRAMA

-fin del programa-

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 12 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Invierno 2014

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

4.

EN BASE AL EJERCICIO 3, INTENTE DISEAR EL ALGORITMO QUE CALCULE LA RESTA DE DOS NUMEROS.
SIGA LA LOGICA EN EL CLCULO DE LA SUMA. POSTERIORMENTE EN SALON SE EXPLICARA SU
DESARROLLO Y LOS DETALLES DE RESULTADO A PANTALLA.

5.

MEDIANTE EL ALGORITMO SIGUIENTE SE REALIZA LA OPERACIN DE MULTIPLICACIN (MUL) EN


ENSAMBLADOR. CHEQUE SU DISEO BSICO CON UN DIGITO. (Observacin: el ejercicio no tiene las condiciones
de proteccin para posibles errores como es la exhibicin correcta de los dgitos en pantalla o nmeros de ms de dos dgitos,
se analizara en clase dichas soluciones)
title multiplica
;*************************
; Fecha:
; Informatica Basica
; Universidad de Guanajuato, Campus Irapuato-Salamanca
; Prof. Ing Jorge Ramos Garcia
;*****************************************************
.MODEL SMALL
.STACK
.DATA
CRLF db 10,13,10,13,"$"
_comenta1 db 10,13,"Multiplicacion Basica de un digito $"
x db ?
y db ?
_comentaX db 10,13,"X= $"
_comentaY db 10,13,"Y= $"
_oper_mul db 0
_comenta2 db 10,13,10,13," Resulatdo es = $"
.CODE
_multiplica:
MOV AX,@DATA
MOV DS,AX
;------MOV DX,OFFSET _comenta1
MOV AH,09H
INT 21H
mov dx,offset _comentaX
mov ah,09h
int 21h
;entrada de valor X
MOV AH,01H
INT 21H
MOV X,AL
SUB X,30H

;titulo principal

mov dx,offset _comentaY


mov ah,09h
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 13 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Invierno 2014

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

int 21h
;entrada de valor Y
MOV AH,01H
INT 21H
MOV Y,AL
SUB Y,30H
mov ax,0
;limpiar registro AX
mov al,x
mul y
;asignar resultado
mov _oper_mul,al
;mandar a pantalla resultado
mov dx,offset _comenta2
mov ah,09h
int 21h
MOV DL,_oper_mul
ADD DL,30H
MOV AH,02H
INT 21H
_salir_DOS:
;------MOV AH,4CH
INT 21H
END _multiplica
6.

7.

BASNDOSE EN EL ALGORITMO DEL PUNTO 5, REALICE LA OPERACIN DE DIVISIN (DIV) EN


ENSAMBLADOR.

EJECUTE EL SIGUIENTE PROGRAMA.


title digitos
;-----------------------------; Trim
; Universidad de Guanajuato
; Prof. Ing Jorge Ramos Garcia
; Informatica Basica
; USO DE TASM
;-----------------------------.MODEL SMALL
.STACK
.DATA
n1 db ?
n2 db ?
linea db 10,13,'$'
coment1 db 10,13,'Introduce un digito: (0-9)? $'
coment2 db 10,13,'SU NUMEROS INGRESADOS SON: $'
.CODE

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 14 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Invierno 2014

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

PROG_1:
;SEGEMENTO DE DATOS
MOV AX,@DATA
MOV DS,AX
;------------------lea dx,coment1
mov ah,09h
int 21h
;lecctura de teclado sin echo
mov ah,08h
int 21h
mov n1,al
;aparece un simbolo asterisco
mov dl,'*'
mov ah,02h
int 21h
lea dx,coment1
mov ah,09h
int 21h
;lecctura de teclado sin echo
mov ah,08h
int 21h
mov n2,al
;aparece un simbolo asterisco
mov dl,'*'
mov ah,02h
int 21h
;mostrar digitos ingresados
;inserta una linea
lea dx, linea
mov ah,09h
int 21h
LEA DX,COMENT2
MOV AH,09H
INT 21H
mov dl,n1
mov ah,02h
int 21h
;----mov dl,'y'
mov ah,02h
int 21h
;----mov dl,n2
mov ah,02h
int 21h
;------------;REGReSO A D.O.S.
MOV AH,4CH
INT 21H
END PROG_1
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 15 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

8.

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

Cuatrimestre: Invierno 2014

DISEE UN PROGRAMA QUE SOLICITE 3 DIGITOS Y MUESTRE EN PANTALLA LAS COMBINACIONES COMO
EN EL EJEMPLO SIGUIENTE:
Ej. entrada de datos al programa
digito 1:? 4
digito 2:? 7
digito 3:? 3
salida de ternas a pantalla en forma vertical
473
437
743
734
347
374

9.

EL SIGUIENTE PROGRAMA SOLICITA LAS INCIALES DE SU NOMBRE Y LAS EXHIBE EN PANTALLA


ENTRE DOS LINEAS DEL CARCTER *. SE UTILIZAN LAS RUTINAS DADAS EN LA SECCION DE
TEORIA.
; ------------ Ejemplo de introducir datos y mostrarlos en pantalla --------.model small
.stack
.data
aster db 10,13,'**************************************** ',10,13,'$'
msg_nom db 10,13,'Dar la incial de tu nombre: $'
ini_nom db ?
msg_pat db 10,13,'Dar la incial de tu apellido paterno: $'
ini_ap_pat db ?
msg_mat db 10,13,'Dar la incial de tu apellido materno: $'
ini_ap_mat db ?
.code
programa:
mov ax,@data
mov ds,ax
;--------------------------

inicia programa principal ---

;---leer la inicial del nombre


mov dx,offset msg_nom
mov ah,09h
int 21h
mov ah,1h
int 21h
mov ini_nom, AL
;--- leer la inicial del apellido paterno
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 16 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Invierno 2014

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

mov dx,offset msg_pat


mov ah,09h
int 21h
mov ah,1h
int 21h
mov ini_ap_pat, AL
;--- leer la incial del apellido materno
mov dx,offset msg_mat
mov ah,09h
int 21h
mov ah,1h
int 21h
mov ini_ap_mat, AL
;---- mostrar iniciales en pantalla ------------------;imprimir asteriscos
mov dx,offset aster
mov ah,09h
int 21h
;iniciales en orden de Nombre_Apellidopaterno_Apellidomaterno
mov dl, ini_nom
mov ah,02h
int 21h
mov dl, ini_ap_pat
mov ah,02h
int 21h
mov dl, ini_ap_mat
mov ah,02h
int 21h

;nombre

;ap. paterno

;ap. materno

;imprimir asteriscos
mov dx,offset aster
mov ah,09h
int 21h
;--------------------------- terminan las instrucciones del programa
mov ah,4ch
int 21h
end programa

10. DISEE UN PROGRAMA QUE SOLICITE UN NUMERO ENTRE 0 Y 9. LUEGO IMPRIMA DICHO NUMERO Y LOS
DOS NUMEROS SIGUIENTES EN ORDEN CRECIENTE. (utilice las rutinas de lectura desde teclado y salida a pantalla,
adems de la operacin de suma ADD explicada en uno de los ejercicios arriba). Ejemplo:
Numero:? 5
Imprimir: 5 6 7

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

Correo Electrnico: josh_ram@hotmail.com

Pagina 17 / 18

MATERIA: INFORMATICA BSICA


CLAVE: CEI02.09
PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA
SALON: 309

Cuatrimestre: Invierno 2014

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086

PROFESOR: M. en ING. JORGE RAMOS GARCIA.


GPO: B
Email: josh_ram@hotmail.com
DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
HORARIO: MARTES y JUEVES de 10:15pm a 12:30pm

Correo Electrnico: josh_ram@hotmail.com

Pagina 18 / 18

Das könnte Ihnen auch gefallen