-
MATERIA: INFORMATICA BSICA PROFESOR: ING. JORGE RAMOS GARCIA.
CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS
IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
SALON: 309 Cuatrimestre: Otoo 2014 HORARIO: MARTES y JUEVES de
12:30pm - 2:45pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806 Correo
Electrnico: [email protected] Pagina 1 / 18
ENSAMBLADOR 8086 TASM/MASM/EMU8086
PROGRAMACIN PRCTICAS DE LABORATORIO
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: ING. JORGE RAMOS GARCIA.
CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS
IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
SALON: 309 Cuatrimestre: Otoo 2014 HORARIO: MARTES y JUEVES de
12:30pm - 2:45pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806 Correo
Electrnico: [email protected] Pagina 2 / 18
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,
[email protected] (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
mailto:[email protected]:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: ING. JORGE RAMOS GARCIA.
CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS
IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
SALON: 309 Cuatrimestre: Otoo 2014 HORARIO: MARTES y JUEVES de
12:30pm - 2:45pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806 Correo
Electrnico: [email protected] Pagina 3 / 18
PRACTICA NO. 02 programacin bsica
OBJETIVO:
1. Rutinas para lectura de datos desde el teclado. 2. Rutinas
para exhibir datos en pantalla. 3. 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 ; mueve un valor inmediato al registro ax
mov bx,cx ; mueve en valor registro desde cx a bx
mov dx,Number ; 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 ; Llama a la interrupcin nmero 21 (hexadecimal)
int 10h ; 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 ; el servicio nmero 9 (decimal) se pasa al registro
AH
int 21h ; llamada a la interrupcin 21
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: ING. JORGE RAMOS GARCIA.
CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS
IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
SALON: 309 Cuatrimestre: Otoo 2014 HORARIO: MARTES y JUEVES de
12:30pm - 2:45pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806 Correo
Electrnico: [email protected] Pagina 4 / 18
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 ; ok
mov ax,Number1 ;error
mov bx,Number2 ; ok
mov bl,Number2 ; error
Lo que indica que, nicamente se pueden usar bytes en registros
de 8 bits y palabras en
registros de 16 bits
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: ING. JORGE RAMOS GARCIA.
CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS
IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
SALON: 309 Cuatrimestre: Otoo 2014 HORARIO: MARTES y JUEVES de
12:30pm - 2:45pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806 Correo
Electrnico: [email protected] Pagina 5 / 18
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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: ING. JORGE RAMOS GARCIA.
CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de programacin.
DPTO.: COMUNICACIONES Y ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS
IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex.
SALON: 309 Cuatrimestre: Otoo 2014 HORARIO: MARTES y JUEVES de
12:30pm - 2:45pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/EMU806 Correo
Electrnico: [email protected] Pagina 6 / 18
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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 7 / 18
RESUMEN DE INSTRUCCIONES.
AAA, AAD, AAM, AAS ajuste ASCII para suma, divisin, producto y
resta ADD suma datos entre registros o la memoria y otro registro
ADC suma con acarreo CBW convierte byte a palabra CMP compara los
datos CWD convierte palabra a doble palabra DAA, DAS ajuste decimal
en AL para una suma/resta en BCD DEC decrementa operando en 1 DIV
divisin sin signo IDIV divisin con signo IMUL multiplicacin con
signo INC incrementa operando en 1 MUL multiplicacin sin signo NEG
cambia el signo SBB resta con acarreo SUB resta datos entre los
registros y la memoria u otro reg.
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 8 / 18
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.
- i n i c i o d e l p r o g r a m a -
; 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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 9 / 18
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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 10 / 18
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-
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 11 / 18
3. 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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 12 / 18
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-
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 13 / 18
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 ;titulo principal
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
mov dx,offset _comentaY
mov ah,09h
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 14 / 18
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. BASNDOSE EN EL ALGORITMO DEL PUNTO 5, REALICE LA OPERACIN DE
DIVISIN (DIV) EN ENSAMBLADOR.
7. 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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 15 / 18
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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 16 / 18
8. 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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 17 / 18
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 ;nombre
mov ah,02h
int 21h
mov dl, ini_ap_pat ;ap. paterno
mov ah,02h
int 21h
mov dl, ini_ap_mat ;ap. materno
mov ah,02h
int 21h
;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
mailto:[email protected]
-
MATERIA: INFORMATICA BSICA PROFESOR: M. en ING. JORGE RAMOS
GARCIA. CLAVE: CEI02.09 GPO: B PREREQUISITOS: Leguaje de
programacin. Email: [email protected] DPTO.: COMUNICACIONES Y
ELECTRNICA DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA
UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 309
Cuatrimestre: Invierno 2014 HORARIO: MARTES y JUEVES de 10:15pm a
12:30pm
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/MASM/emu80086 Correo
Electrnico: [email protected] Pagina 18 / 18
mailto:[email protected]://www.google.com.mx/imgres?imgurl=http://3.bp.blogspot.com/_RcrGybPkLNQ/SupBsb7hGFI/AAAAAAAAAJc/YiRMMRJ6vwA/s400/binary_clock.jpg&imgrefurl=http://pcpilloixa1.blogspot.com/2009_10_01_archive.html&usg=__m95kD8bBaD1HWIrCWE8Zk2YfO6M=&h=250&w=250&sz=15&hl=es&start=7&zoom=1&itbs=1&tbnid=9kYZfIRKSasj2M:&tbnh=111&tbnw=111&prev=/images%3Fq%3Dinformatica%2Bbinaria%26hl%3Des%26sa%3DG%26gbv%3D2%26tbs%3Disch:1&ei=Kdc8TdLCNpPGsAPxpbWGAw