Está en la página 1de 76

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin

Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

MANUAL DE PRCTICAS DE LENGUAJES DE INTERFAZ

OBJETIVO GENERAL: Que el alumno, al trmino de todas las actividades sea capaz de utilizar el Manual de prcticas para la Materia de Lenguajes de Interfaz que permita fortalecer los conocimientos sobre este lenguaje de programacin,
los cuales sern presentados de menor a mayor grado de dificultad, con la finalidad de crearle un mayor inters y permita aprender el correcto uso de cada una de las instruccines de que est compuesto, corroborar la sintaxis y utilidad al ejecutar las prcticas propuestas. Esperando que el alumno sea capaz de experimentar con nuevas rutinas que le permitir solucionar de una forma ms fcil los retos que se le presenten en el control de lel ordenador y los

perifricos estandarizados o no. SIGNIFICADOS: Lenguaje Ensamblador: Es un lenguaje simblico que permite programacin a bajo nivel, del hardware y software de un sistema de cmputo atraves de un conjunto de mnemnicos.

lo

cual

proporciona

control

total

Un ensamblador es una aplicacin de sistema que se encarga de traducir un archivo fuente escrito con mnemnicos, a un archivo objeto que contiene cdigo mquina, ejecutable directamente por la mquina para la que se

ha generado. Tipos de ensambladores:


Ensambladores bsicos. Son de muy bajo nivel y su tarea consiste bsicamente en ofrecer nombres simblicos a las distintas instruccines (mnemnicos) de la mquina apropiada, adems de ofrecer un formato de escritura cmodo para expresar los parmetros y cosas tales como los modos de direccinamiento. Adems, reconoce una serie de directivas (o meta instruccines) que indican ciertos

parmetros de funcionamiento del ensamblador. Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores

bsicos, fueron muy populares en las dcadas de los 50 y los 60, antes de la generalizacin de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador y adems proporcionan una

serie de directivas para definir e invocar macro instruccines invocamos a una macro, sta se expande al cuerpo que haigamos definido.

(o

simplemente, macros).

Cuando

Ensambladores modulares 32-bits. Pueden ser de alto y bajo nivel, pero solo emulado en 32bits. Microsoft an esta reproduciendo el Microsoft Macro Assembler, es reproducido por un paquete preparado. El ml 6.14 emula poderosos compilados en 32-bits, su sintaxis es mezcla de: C API,

ensamblador, y macros. HLA High-Level Assembler, es un lenguaje poderoso que soporta de bajo y altonivel pero solo en 32-bits. High-Level Assembler traducido a "Ensamblador de Nivel-Alto. Tiene un libro popular l amado "AOA" Art of Assembly Language traducido a "Arte del Lenguaje Ensamblador".

Tambien tiene fama de usar macros como los de masm. PRCTICA No. 1 NOMBRE: Introduccin OBJETIVO: - Que el alumno ubique los elementos y dispositivos que se encuentran dentro de un gabinete.
INTRODUCCIN:

Los elementos que podemos encontrar dentro de un gabinete son los siguientes: Fuente de poder AT, ATX; con voltajes de 6, 12 y 3.3. Unidades de disco e interfaces
En el mundo del PC hay dos grandes estndares, IDE y SCSI, aunque el primero est mucho ms extendido que el segundo, la tecnologa SCSI est presente en otras muchas plataformas, como los

Mac , sistemas Unix, AS/400, etc... Disco fijo, disco removible. Con conectores ATA,ULTRA ATA, SCSI.

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Tarjeta madre

Modulos de puertos Los ordenadores personales actuales conservan prcticamente todos los puertos heredados desde
que se dise el primer PC de IBM. Por razones de compatibilidad an se mantienen este tipo de puertos, pero poco a poco irn apareciendo nuevas mquinas en las que no conectores serie (DB9), paralelo(DB25), teclado(DIN), Video, etc... y en su lugar slo encontraremos tengan los tpicos

puertos USB, RJ45, RJ11 e Infrarrojo. Memoria MemoriaCach Todas las tarjetas madre Pentium deben tener en el as un cach de Nivel 2, de 256 a 512 Kb. Memoria RAM Todas las tarjetas madre Pentium y Pentium Pro deben emplear ya sea SIMMs (Modulo sencil o de memoria en lnea) de 72 pins o bien DIMMs(Mdulo Dual de Memoria en lneas) de 168 pins.
Debido al diseo de 64 bits de estas tarjetas, los SIMMs de 72 pins deben instalarse por pares,

mientras que los DIMMs se instalan uno a la ves uno por banco de 64 bits.
Considere con cuidado la cantidad total de memoria que puede manejar la tarjeta. Mientras que se considera que 16 Mb son apenas el mnimo para las aplicaciones consumidoras de memorias de hoy

en da, en realidad podra requerir mucho ms.


Las tarjetas madre Pentium deben de manejar un mnimo de 128 Mb, y muchas tarjetas Pentium II actuales manejan mas de 1 Gb. Una tarjeta madre debe contener por lo menos cuatro conectores de

memoria (de 72 o 168 pins, o una combinacin) y entre ms, mejor.


Para un mximo desempeo, busque sistemas que manejen SIMMs/DIMMs de tipo SDRAM (DRAM Sincrona) o EDO (salida de Datos Ampliada). Los SIMMs debern tener una velocidad de 70 ns o

ms.
Lo ideal en los sistemas de misin crtica es que usen SIMMs de paridad y asegurarse de que la tarjeta madre maneje por completo la verificacin de paridad o incluso tambin el ECC Cdigo de

correccin de errores. DDR (Double Data Rate) significa doble tasa de transferencia de datos en espaol. Son mdulos de memoria RAM compuestos por memorias sncronas (SDRAM), disponibles en encapsulado DIMM, que permite la transferencia de datos por dos canales distintos simultneamente en un mismo ciclo de reloj. Los mdulos DDR soportan una capacidad mxima de 1 GiB. DDR3 es un tipo de memoria RAM. Forma parte de la familia SDRAM de tecnologas de memoria de acceso aleatorio, que es una de las muchas implementaciones de la DRAM. El principal beneficio de instalar DDR3 es la habilidad de hacer transferencias de datos ocho veces mas rpido, entonces permitiendo velocidades pico de transferencia y velocidades de bus ms altas que las versiones DDR anteriores. Sin embargo, no hay una reduccin en la latencia, la cual es proporcionalmente ms alta. Adems la DDR3 permite usar integrados de 512 megabits a 8 gigabytes, siendo posible fabricar mdulos de hasta 16 Gb.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Pila Su funcin es la de proporcionar la energia para mantener los datos de configuracin del equipo. Bios AMI,Award, Phoenix, Equipo original. Ranuras de expansin EISA, MCA, ISA, PCI, AGP. Procesadores: Intel Atom Processor Z5xx Series Intel Core 2 Duo Processors for Embedded Computing Intel Core Duo Processors Quad-Core Intel Xeon processor 5400 series Quad-Core Intel Xeon Processor 5300 Series Dual-Core Intel Xeon Processor 5200 Series Dual-Core Intel Xeon Processor 5100 Series Dual-Core Intel Xeon Processors LV and ULV Intel Xeon Processors Intel Pentium Dual-Core Processor Intel Celeron Processor 440 Intel Pentium M Processors Intel Pentium 4 Processors Intel Pentium III Processors Intel Celeron M Processors Intel Celeron Processors Intel Pentium Processors with MMXTechnology La arquitectura de Intel IA-32 ofrece ocho registros de fines generales, cada uno de el os es un registro de 32 bits. La arquitectura de Intel EM64T ampla cada uno de esos registros a 64-bit, que entonces se refieren como RAX, RBX, RCX, RDX, RSP, RBP, RSI, y RDI. Tambin agrega ocho nuevos registros, nombrados R9 con R15. Cada uno de los registros es direccionable como un registro 64-bit, un registro de 32 bits, un registro de 16 bits y registro de 8 bits. Por ejemplo, R11 es la versin 64-bit, R11d es el de 32 bits ms bajo del mismo registro, R11w es los 16 pedacitos ms bajos del registro y R11l es el octeto ms bajo. Los registros ESPECIALMENTE, el EBP, ESI y el IED, que no son direccionables de 8 bits en IA-32, son direccionables de 8 bits en EM64T. Por ejemplo, el SL es los 8 pedacitos ms bajos de ESI. Los registros de 8 bits AH, BH, el CH y el ADO estn disponibles en EM64T. No pueden ser utilizados en las mismas instrucciones con los nuevos registros de 8 bits. AMD Athlon AMD Opteron AMD Turion AMD Phenomn SPARC64 VII CON 8 hilos de ejecucin UltraSPARC T1 32 hilos de ejecucin SPARC (del ingls Scalable Processor ARChitecture) es una arquitectura RISC big-endian. Es decir, una arquitectura con un conjunto reducido de instrucciones. Una de las ideas innovadoras de esta arquitectura es la ventana de registros que permite hacer fcilmente compiladores de alto rendimiento y una significativa reduccin de memoria en las instrucciones load/store en relacin con otras arquitecturas RISC. Las ventajas se aprecian sobre todo en programas grandes.

Procesador INTELPentium, SUN Sparc, APPLE POwerPC, IBM M68000, MPC7455, AMD Advanced Micro Devices Duron. Tamao de registro 8, 16, 32 y 64 bi ts
Cd. Victoria Tamaulipas, Mxico

Power,

ZILOG

Z80,

MOTOROLA

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.1 Introduccin

SUBTEMAS

PRCTICA No. 2 NOMBRE: Importancia del lenguaje OBJETIVO: - Que el alumno valorare la importancia uso en diferentes plataformas de hardware y software.
INTRODUCCIN:

de

conocer

este

lenguaje,

al

conocer

sus

aplicaciones

el

Este lenguaje da la facilidad y las herramientas necesarias para tomar el control de todo lo que la PC puede
realizar fsicamente. Como resultado de operaciones muy bsicas suministradas por el ensamblador tareas simples de transferencia de datos y operaciones lgicas, una pgina de cdigos en lenguaje ensamblador que realiza

palidece en comparacin con una pgina de cdigo en lenguaje de alto nivel. Ventajas:
Velocidad, control de hardware y sofware, todos los procesadores aceptan una variante de

ensamblador como su forma de programacin. Desventajas:


Dependiente de la plataforma en donde se desarrol , mayor costo en su ciclo de vida, peligro de

afectar recursos inesperadamente.


CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.2 Importancia del Lenguaje Ensamblador

SUBTEMAS

PRCTICA No. 3 NOMBRE: Historia de los procesadores OBJETIVO: - Que el alumno identifique mediante imgenes y fsicamente las marcas y modelos de procesadores.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales Institut oTecnolgico No 38

INTRODUCCIN:

Un microprocesador es un circuito integrado construido en un pedazo diminuto de silicio . Contiene miles, o


incluso mil ones, de transistores que se interconectan va los rastros extrafinos de aluminio. transistores es guardar y manipular datos juntos para que el microporcesador pueda realizar una gran variedad de La funcin de los

funciones. Calsificacin deacuerdo a su marca: Intel 8008,8088,80286,80386,Pentium. AMD K5, K6, Duron, Athlon. Cyrix MI, MII. Motorola M68000, MPC7455.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.3 Historia de los procesadores PRCTICA No. 5 NOMBRE: Diagrama de componentes internos OBJETIVO: - Que el alumno evalue los componentes internos de que constan los procesadores con diferente arquitectura.
INTRODUCCIN:

SUBTEMAS

Unidad Aritmtica Lgica

Bus de Direcciones

Componentes del microprocesador


Reloj

Unidad de Control

ROM

RAM

Puertos

Bus de Datos
Registros

Unidad de ejecucin Bus de Control

UNIDAD DE EJECUCIN Una vez que la unidad de decodificacin sabe cul es el significado de la instruccin leda
de memoria, se lo comunica a la unidad de ejecucin. Esta unidad ser la encargada de consumar la ejecucin y para el o activar las seales necesarias y en un orden determinado. Es decir, es la encargada de dar las rdenes

necesarias a las diversas partes del microprocesador para poder ejecutar cada una de las instruccines.
UNIDAD ARITMETICO LOGICA (ALU) La ALU Aritmethic Logic Unit es el bloque funcional del microprocesador encargado de realizar todas aquel as operaciones matemticas (suma, resta, multiplicacin y division). Las operaciones que realiza son las siguientes: suma, resta, multiplicacin, divisin y aquel as que trabajan con dgitos binarios (10 que se conoce como operaciones lgicas: AND, NOR, NOT, NAND, OR, X-OR, etc). En suma, saber cmo funciona un microprocesador, implica conocer cmo se van ejecutando cada una de las instruccines del programa que se almacena en memoria. Los pasos globales que se siguen a la hora de consumar una instruccin

son:
UNIDAD DE DECODIFICACION Se encarga de decodificar la instruccin que se va a ejecutar. Es decir, saber qu instruccin es. Cuando el microprocesador lee de memoria una instruccin, el cdigo de esa instruccin le l ega a esta unidad. Esta unidad se encarga de interpretar ese cdigo para averiguar el tipo de instruccin a realizar. Por ejemplo,

instruccines de suma, multiplicacin, almacenamiento de datos en memoria,etc.


Bsqueda de la intruccin Decodificacin de la intruccin Bsqueda de operandos Almacenamiento del resultado Ejecucin de la intruccin

UNIDAD DE CONTROL
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Es el

centro

nervioso

del ordenador,

ya

que

desde

el a

se

controlan

y gobiernan

todas

las

operaciones.

Cmo funciones bsicas tiene:


tomar las instruccines de memoria decodificar o interpretar las instruccines ejecutar las instruccines ( tratar las situaciones de tipo interno (inherentes a la propia CPU) y de tipo externo (inherentes a los perifricos). Para realizar su

funcin, la unidad de control consta de los siguientes elementos:


RELOJ SECUENCIADOR DECODIFICADOR PROGRAMA FUENTE

MICROORDENES

REGISTRO DE INTRUCCIONES

BUS INTERNO

Registro contador de programa Contiene permanentemente la direccin de memoria de la siguiente instruccin a ejecutar. Al iniciar la ejecucin de un programa toma la direccin de su primera instruccin. Incrementa su valor en
uno, de forma automtica, cada vez que se concluye una instruccin, salvo si la instruccin que se est ejecutando es de salto o de ruptura de secuencia, en cuyo caso el contador de programa tomar la direccin de la instruccin que se

tenga que ejecutar a continuacin; esta direccin est en la propia instruccin en curso. Registro de instruccin Contiene la instruccin que se est ejecutando en cada momento. Esta instruccin l evar
consigo el cdigo de operacin (un cdigo que indica qu tipo de operacin se va a realizar, por ejemplo una suma) y en su caso los operandos (datos sobre los que acta la instruccin, por ejemplo los nmeros a sumar) o las

direccines de memoria de estos operandos. Decodificador Se encarga de extraer el cdigo de operacin de la instruccin en curso (que est en el registro de instruccin), lo analiza y emite las seales necesarias al resto de elementos para su ejecucin a travs del secuenciador . ACUMULADOR Reloj Proporciona una sucesin de impulsos elctricos o ciclos a intervalos
constantes (frecuencia constante), que marcan los instantes en que han de

comenzar los pasos de que consta cada instruccin. Secuenciador En este dispositivo se generan rdenes muy elementales (micrordenes) que, sincronizadas por
los impulsos de reloj, hacen que se vaya ejecutando poco

BANDERAS

CIRCUITO OPERACIONAL

MICROINSTRUCCIONES

a poco la instruccin que est cargada en el registro de instruccin.


UNIDAD ARITMTICO-LGICA (ALU)
REGISTROS DE ENTRADA

Esta

unidad

se

encarga

de

realizar

las operaciones

elementales de
lgico

tipo

aritmtico (sumas, restas, productos, divisiones) y de tipo (comparaciones). A travs de un bus interno se comunica con la unidad de

control la cual le envia los datos y le indica la operacin a realizar . La ALU est formada a su vez por los siguientes elementos: Circuito operacional Contiene los circuitos necesarios para de operacin que debe realizar en cada momento (suma, resta, etc).

la

realizacin

de

las

operaciones

con

los

datos

procedentes de los registros de entrada (REN). Este circuito tiene unas entradas de rdenes para seleccionar la clase Registros de entrada (REN) En el os se almacenan los datos u operandos que intervienen en una instruccin antes de la realizacin de la operacin por parte del circuito operacional. Tambin se emplean para el almacenamiento de

resultados intermedios o finales de las operaciones respectivas.


Registro acumulador Almacena los resultados de las operaciones l evadas a cabo por el circuito operacional. Est conectado con los registros de entrada para realimentacin en el caso de operaciones encadenadas. Asimismo tiene

una conexin directa al bus de datos para el envo de los resultados a la memoria central o a la unidad de control.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Registro de estado (flags) Se trata de unos registros de memoria en los que se deja constancia algunas condiciones
que se dieron en la ltima operacin realizada y que habrn de ser tenidas en cuenta en operaciones posteriores. Por

ejemplo, en el caso de hacer una resta, tiene que quedar constancia si el resultado fue cero, positivo o negativo. Se conoce como set de instruccines al conjunto de instruccines que es capaz de un microprocesador.
En funcin del tipo de microprocesador, concretamente si es ms avanzado o no, podr entender y ejecutar ms o

entender

ejecutar

menos instruccines. Las instruccines se clasifican segn su funcin en: a).- Transferencia de datos. b).- Clculo. c).- Transferencia del control del programa. d).- Control.
a).- Instruccines de transferencia de datos Estas instruccines mueven datos (que se consideran elementos de entrada/salida) desde la memoria hacia los registros internos del microprocesador, y viceversa. Tambin se usan para pasar datos de un registro a otro del microprocesador. Existen algunas instruccines que permiten mover no slo un

dato, sino un conjunto de hasta 64 KBytes con una sola instruccin.


b).- Instruccines de clculo Son instruccines destinadas a ejecutar ciertas operaciones aritmticas, como por ejemplo sumar, restar, multiplicar o dividir, o ciertas operaciones lgicas, como por ejemplo ANO, OR, as como

desplazamiento y rotacin de bits.


c)._ Instruccines de transferencia del control del programa Permiten romper la secuencia lneal del programa y

saltar a otro punto del mismo. Pueden equivaler a la instruccin GOTO que traen muchos lenguajes de programacin.
d).- Instruccines de control Son instruccines especiales o de control que actan sobre el propio microprocesador. Permiten acceder a diversas funciones, como por ejemplo activar o desactivar las interrupciones, pasar rdenes al

coprocesador matemtico, detener la actividad del microprocesador hasta que se produzca una interrupcin, etc. Prcticamente todas las instruccines estn formadas por dos elementos: cdigo de operacin que indica el tipo de operacin se va a realizar operandos, que son los datos sobre los que acta. Por ejemplo, una instruccin que sume dos nmeros est formado por: cdigo de operacin que indique "sumar"; primer nmero a sumar y segundo nmero a sumar.
Existen instruccines que slo tienen un operando o incluso que no tienen ninguno, estando formadas solamente por

el cdigo de operacin. EJECUCIN DE LAS INSTRUCCINES


Para que un programa pueda ser ejecutado por un ordenador, ha de estar almacenado en (memoria RAM). El microprocesador tomar una a una las instruccines que lo componen e ir realizando las tareas la memoria central

correspondientes. Se denomina ciclo de instruccin al conjunto de acciones que se l evan a cabo en la realizacin de una instruccin. Se compone de dos fases: Fase de bsqueda y Fase de ejecucin . Fase de bsqueda En esta fase se transfiere la instruccin que se va a ejecutar desde la memoria central a la unidad de control. Fase de ejecucin Consiste en la realizacin de todas las acciones que conl eva la propia instruccin. BUSES Una forma de clasificar los microprocesadores es en
funcin de las instruccines que son capaces de ejecutar. Podemos encontrar dos tipos: microprocesadores:
CPU

MEMOR IA

Instruccin 1 Instruccin 2 Instruccin 3

Con

tecnologa CISC y RISC. CISC: Complex Instructions instruccines complejo.


RISC: Reduced Instructions Set

Set

Computer,

Ordenador
con

con
un

un

conjunto
de de

de

Instruccin

Computer,

Ordenador

conjunto conjunto

instruccines reducido.
Anteriormente hemos definido el set de instruccines como el instruccines que es capaz de entender y ejecutar un microprocesador. Si ese microprocesador entiende y ejecuta muchas instruccines (cientos de el as), se trata entonces de un microprocesador CISC. En cambio, si el microprocesador entiende y ejecuta muy pocas instruccines (decenas de el as), se trata entonces

de un microprocesador RISC.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

En principio, parece que la tecnologa CISC es mucho ms ventajosa que la RISC. Pero no es as: un micro CISC
tarda mucho tiempo en ejecutar cada una de esas instruccines. En cambio un micro RISC, como solo entiende unas cuantas, su diseo interno le permite ejecutarlas en muy poco tiempo, a una gran velocidad, mucho ms rpido que un

microprocesador CISC.
Cuando se desee que un microprocesador RISC ejecute cierta instruccin que no entiende, sta se descompondr en varias instruccines de las sencil as que s entiende. An as, descomponiendo una instruccin compleja en varias sencil as, es capaz de operar mucho ms rpido que el microprocesador CISC, el cual no tiene que descomponer esa

instruccin porque la entiende directamente.


Prcticamente, todos los microprocesadores que se utilizan en la fabricacin de ordenadores (microprocesadores fabricados por Intel) son de tecnologa CISC. Intel, poco a poco, va abandonando la tecnologa CISC y la sustituye por tecnologa RISC. As por ejemplo, un Pentium, sin dejar de pertenecer a la categoria CISC incorpora algunas caracteristicas de los micros RISC. Es de esperar que en un futuro, los micros fabricados sean de personales

tecnologa RISC; entonces los ordenadores sern muchsimo ms rpidos de lo que hoy los conocemos.
Intel no fabrica microprocesadores completamente RISC para no perder la compatibilidad con los microprocesadores

anteriores.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.5 Diagramas de componentes internos PRCTICA No. 6 NOMBRE: Descripcin de componentes OBJETIVO: - Que el alumno ejecute un programa observando los contenidos de los registros.
INTRODUCCIN:

SUBTEMAS

Los registros internos del microprocesador Registros de datos: AX = Acumulador. Es el registro principal utilizado en las instruccines aritmticas. BX = Utilizado como base. Lo utilizaremos para indicar el desplazamiento u offset. CX = Se utiliza como contador en los bucles y operaciones repetitivas. DX = Utilizado tambin para operaciones aritmticas. Estos registros son de 2 bytes y podemos referirnos a su parte baja y alta: AX -> AH y AL BX -> BH y BL CX -> CH y CL DX -> DH y DL Registros de segmentos: CS = Registro de segmento de cdigo. Contiene la direccin del segmento de cdigo, lo que son las instruccines del programa. DS = Registro de segmento de datos. Contiene la direccin del segmento de datos, es decir, el rea de memoria donde se encuentran los datos del programa. SS = Registro de segmento de pila. Contiene la direccin del segmento de pila. ES = Registro de segmento extra. El segmento extra es un segmento adicional que se utiliza para superar la limitacin de los 64 Kb del segmento de datos y para hacr la transferencia de datos entre segmentos. Registros punteros de pila: SP = Puntero de pila. Contiene la direccin relativa del segmento de pila. BP = Puntero base. Utilizado para fijar el puntero de la pila y poder acceder a los elementos de esta. Registros ndices: SI = ndice fuente (Source Index) DI = ndice destino (Destination Index) Registro puntero de instruccines: IP = Puntero de instruccin (Instruction Pointer)
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

* Todos los registros anteriormente mencionados son de una longitud de 16Bits. Los de 32Bits se les antepone la letra E de extendidos (EAX, EBX,EIP,...); para los procesadores 80386 y posteriores , hasta antes de los de 64 bits, que manejan registros RAX,RBX,.. R0,R1,... Registro de banderas: Se usa para registrar la informacin de estado y de control de las operaciones del microprocesador. Hay 9 banderas: * Banderas de estado: Registran el estado del procesador, normalmente asociado a una comparacin o una instruccin aritmtica. CF = Bandera de acarreo. Indica acarreo en las instruccines aritmticas (Carry Flag) OF = Bandera de desbordamiento aritmtico (Overflow Flag) ZF = Bandera de resultado cero o comparacin igual (Zero Flag) SF = Bandera de resultado o comparacin negativa (Sign Flag) PF = Bandera de paridad (Parity Flag) AF = Bandera auxiliar. Indica si hay necesidad de ajuste en las operaciones aritmticas con nmeros BCD (Auxiliar Flag) * Banderas de control: Registran el funcionamiento del procesador: DF = Bandera de direccin. Controla la direccin (hacia adelante o hacia atrs) en las operaciones con cadenas de caracteres incrementando o decrementando automticamente los registros ndices (SI y DI) (Direction Flag) IF = Bandera de interrupciones. Indica si estn permitidas o no las interrupciones de los dispositivos externos (Interrupt Flag) TF = Bandera de traza. Controla la operacin modo paso a paso (Trap Flag)
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.5.1 Descripcin de componentes

SUBTEMAS

PRCTICA No. 7 NOMBRE: Funcionamiento interno OBJETIVO: - Que el alumno observe los contenidos de los registros e introdusca un programa directamente en la memoria y lo ejecute.
INTRODUCCIN:

Cualquier amado

versin

del

sistema

operativo

DOS

Windows,

tiene

disponible

un

comando

externo

DEBUG.EXE, localizado en WINDOWS\SYSTEM32 y podra ser usado dando doble clic sobre el o dentro de una

ventana del Smbolo del Sistema, el cual es otro archivo del sistema l amado CMD.EXE. Aunque Debug es una herramienta antigua es una buena forma el

de

comenzar

familiarizarnos

con

ensamblador. Debug viene con el sistema operativo, es muy til y fcil de usar aunque tambin muy limitada, pero muy prctica y no es sensible al context (No hace diferencia entre MAYSCULAS y minsculas) y todos los nmeros

usados se consideran hexadecimales. Una vez ejecutado el comando DEBUG, podras utilizar las siguientes opciones: r Visualizar el contenido de los registros r(Registro) Visualiza y permite modificarlo q Salir g Ejecutar lo anteriormente escrito a(Direccin) Agregar a partir de Direccin a Agregar cdigo o Ensamblar Ejecutar el DEBUG dentro de una ventana del Smbolo del Sistema para alterar el contenido del Registro AX

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Para alterar el modo de video teclear lo siguiente, sin los comentarios que describen su funcionamiento. D:\Tasm>debug

-A100
MOV AH,0 MOV AL,0F INT 10
INT 20

Ensamblar a partir de la posicin 100 de memoria Funcin 0 Iniciar modo de video Seleccionamos el modo de video 640 X 350 grficos Ejecutar interrupcin 10 hex Termina programa y retornar Ejecutar

o 0D

-G

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.5.2 Funcionamiento interno

SUBTEMAS

PRCTICA No. 8 NOMBRE: Manejo de memoria OBJETIVO: - Que el alumno haga uso de diferentes tamaos de memoria en un programa.
INTRODUCCIN:
Memoria PRINCIPAL Memoria CACHE CPU

de
una

La memoria es una coleccin posiciones o celdas contiguas de


longitud de un byte cada una de

el as, totalmente direccinables.


Considerando la forma en que es accesada, se puede clasificar como RAM (Random Acces Memory Memoria de Acceso Aleatorio ) y SAM (Secuencial Acces Memory Memoria de Acceso Secuencial ) y tomando

encuenta los permisos de lectura y escritura en ROM (Read Only Memory

Memoria de Solo Lectura) y RWM (Read Write

Memory Memoria de Lectura/Escritura). Los EEPROM (Electric Erased Programmer Read Only Memory Memoria de Solo Lectura Programable Borrable Elctricamente ). Algunos de estos trminos son usados tanto en medios electrnicos (Circuitos

Integrados), como en medios magnticos o magntico-pticos (Disco o Cinta). La memoria virtual es una combinacin de memoria primaria y secundaria; sistema operativo, los cuales pueden trabajar en modo Real o Protegido. Este ltimo es Ordenador
personales, desde que apareci el procesador 286. En modo real es posible leer y escribir en cualquier parte de la

administrada posible usarlo

por en

un

memoria principal y en modo protegido cada programa; entre el os el sistema operativo usan reas de memoria independientes para trabajar; con la finalidad de no interferirse entre el os al momento de leer o escribir en memoria. Programacin con segmentos:
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

10

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Al crear un programa con segmentos, cada uno de el os pude ser de hasta 64 Kb , haciendo uso de
registros de 16 bits (IP,SS...) y en los de propsito general (AX...), pudiendo usar las mitades (AH...). Este tipo registros de 16 bits (IP,SS...) y en los de propsito general (AX...), pudiendo usar las mitades (AH...). Este tipo de

programacin es aceptada desde los procesadores 8008, hasta los actuales pentium. Pila SEGMENT PARA STACK STACK Datos SEGMENT PARA datos CodigoCodigo SEGMENT PASEGMENT PARA codgo codgo Programacin con secciones:
Al crear un programa con secciones lgicas es posible referenciar por programa hasta 4Gb, haciendo

uso de registros de 32 bits (EIP...) y los de propsito general (EAX...). el inicio de cada seccin determina el fin de uso de registros de 32 bits (EIP...) y los de propsito general (EAX...). el inicio de cada seccin determina el fin de la anterior. Existen dos seccines principales, la .CODE y .DATA; esta ltima puede ser dividida en dos categoras. .386 ; Procesador 80386 con registros de 32 bits. .286 ; Procesador 80286 con registros de 16 bits. .MODELL SMALL ; Modos para la compilacin TINY,SMALL,MEDIUM,COMPACT o LARGE .DATA ; Esta seccin contiene la informacin inicializada. .DATA? ; Esta seccin contiene la informacin no inicializada. .CONST ; Esta seccin contiene declaraciones de constantes. .CO.CODE ; Esta seccin contiene las instrucciones del programa. .STACK 64 ; Esta seccin contiene el espacio para la pila; por defautl es 64.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.6 Manejo de memoria

SUBTEMAS

PRCTICA No. 9 NOMBRE: Direccinamiento de datos implcito OBJETIVO: Que el alumno: Sea capaz de efectuar y entender el funcionamiento del direccinamiento implcito. Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrol o en la que codificar, grabar, ligar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

editar,

compilar,

Son todas las intrucciones que no l evan parmetros, que no accesan memoria, o bien que tienen una forma especfica de accesarla. Ejemplos: CLI, PUSHF, POPF, NOP En este modo se especifican los operandos en forma implcita en la definicin de la instruccin. Por ejemplo,
la instruccin "complementar acumulador" es la instruccin de modo implcito porque registro de acumulador esta implcito en la definicin de la instruccin. De hecho todas las instruccines de el operando en el

referencia a registro que utilizan un acumulador son instruccines de modo implcito. Las instruccines de direccin cero en un ordenador organizado con pila son instruccines de modo implcito porque esta implcito que los operandos estan en la parte superior de la pila.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.7 Direccinamiento de los datos ;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR1_7_1.ASM ;Direccinamiento implcito ;El operando sin operadores Pila SEGMENT PARA STACK DB 64 DUP(0) Pila ENDS

SUBTEMAS 1.7.1 Implcito

STACK

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

11

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

SEGMENT PARA Codigo Implcito PROC FAR ASSUME CS:Codigo,SS:Pila PUSHF POPF CLI NOP RET Implcito ENDP Codigo ENDS END Implcito Codigo PRCTICA No. 10 NOMBRE: Direccinamiento de datos inmediato OBJETIVO: Que el alumno: Sea capaz de efectuar y entender el funcionamiento del direccinamiento inmediato. Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Tiene dos operandos: un registro y una constante que se usa por su valor. El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer el "fetch" de la instruccin. Por tanto, es rpido aunque no tanto como
el modo registro; requiere ir al BIU por el dato. En este modo se especifica el operando en la instruccin misma. En otras palabras, una instruccin de modo inmediato tiene un campo de operando, en lugar de un campo de direccin. Un campo de operando contiene el operando real que se va a usar junto con la operacion

especificada

en

la

instruccin. Las instruccines de modo inmediato son utiles para Iniciar registros en un valor constante. El campo de direccin de una instruccin puede especificar una palabra de memoria o un registro de procesador. Cuando el campo de direccin especifica un registro de procesador se dice que la instruccin esta en modo de registro.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.7 Direccinamiento de los datos

SUBTEMAS 1.7.2 Inmediato

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR1_7_2.ASM ;Direccionamiento inmediato ;El operando fuente es el dato a mover al destino Pila SEGMENT PARA STACK DB 64 DUP(0) Pila ENDS Codigo SEGMENT PARA Codigo Inmediato PROC FAR ASSUME CS:Codigo,SS:Pila MOV AH,00 MOV AL,04 MOV AX,0FFFFH MOV AX,365 MOV AL, -30 MOV BL,35 MOV BH,-37 RET
Cd. Victoria Tamaulipas, Mxico

STACK

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

12

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Codigo

Inmediato ENDP ENDS


END Inmediato

.286 .model small .stack 64 .code Inmediato: MOV AH,00 MOV AL,04 MOV AX,0FFFFH MOV AX,365 MOV AL, -30 MOV BL,35 MOV BH,-37 MOV AX,4C00H INT 21H END Inmediato

PRCTICA No. 11 NOMBRE: Direccinamiento directo OBJETIVO: Que el alumno: Sea capaz de efectuar y entender el funcionamiento del direccinamiento directo. Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Uno de los operandos involucra una localidad especfica de memoria. El valor constante se tiene que buscar en memoria, en la localidad especificada. Es ms lento que los anteriores, pero es el ms rpido para ir a memoria, pues ya "sabe" la localidad, la toma de la instruccin y no la tiene que calcular. En este modo la direccin efectiva es igual a la parte de direccin de la instruccin. El operando reside en
memoria y su direccin la proporciona en forma directa el campo de direccin de la instruccin. En una instruccin de

tipo brinco el campo de direccin especifica la direccin de transferencia de control del programa real. Se presenta una prctica sencil a buscando que el alumno d un primer paso hacia el conocimiento del
lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten

estructurar la lgica que el programador desea implementar.


CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.7 Direccinamiento de los datos

SUBTEMAS 1.7.3 Directo

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR1_7_3.ASM ;Direccinamiento directo ;El operando fuente es una Variable que posee el dato a mover Pila SEGMENT PARA STACK STACK DB 64 DUP(0) Pila ENDS Datos SEGMENT Variable1 DB Variable2 DB Variable3 DW PARA Datos 25 0AFH 0A1FCH
Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

Cd. Victoria Tamaulipas, Mxico

13

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Datos Codigo Directo

ENDS SEGMENT PARA Codigo PROC FAR ASSUME CS:Codigo,DS:Datos,SS:Pila ; SE PREPARA EL REGRESO A DOS PUSH DS ; Almacena Direccin de Psp MOV AX,00 PUSH AX ; Almacena Desplazamiento MOV AX,Datos ; Se Inicializan Apuntadores de Segmentos MOV DS,AX ; Establece Direccinamiento Normal al rea De Datos MOV AL,Variable1 MOV BH,Variable2 MOV CX,Variable3 RET ENDP ENDS END Directo

Directo
Codigo

NOMBRE: Direccinamiento entre registros OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento entre registros. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Usa solamente registros como operandos. Es el ms rpido, pues minimiza los recursos necesarios (toda la informacin fluye dentro del EU del CPU).
En este modo, los operandos estan en registros que residen dentro de la CPU. Se selecciona el registro particular de

un campo de registro en la instruccin. Un campo K bits puede especificar cualquiera de 2k registros. Se presenta una prctica sencil a buscando que el alumno de un primer paso hacia el conocimiento del
lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten

estructurar la lgica que el programador desea implementar.


CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.7 Direccinamiento de los datos

SUBTEMAS 1.7.4 Registro

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR1_7_4.ASM ;Direccinamiento entre registros ;El operando fuente y destino a mover son registro o mitades respectivamente. Pila SEGMENT PARA STACK STACK DB 64 DUP(0) Pila ENDS SEGMENT PARA Codigo Codigo Registro PROC FAR ASSUME CS:Codigo,SS:Pila MOV AX,DS MOV AL,CL MOV AX,BX MOV DS,AX MOV ES,DS
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

14

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Codigo

Registro ENDS

MOV BL,AL RET ENDP END Registro

PRCTICA No. 13 NOMBRE: Direccinamiento registro indirecto OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento indirecto de registros. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

En este modo la instruccin especifica un registro en la CPU cuyo contenido proporciona la direccin del
operando en la memoria. En otras palabras, el registro seleccionado contiene la direccin del operando en lugar del operando mismo. Antes de utilizar una instruccin de modo indirecto por registro, el programador debe asegurarse de que la direccin de memoria del operando esta colocada en el registro del procesador con una instruccin previa. Entonces una referencia al registro es equivalente a especificar una direccin de memoria. instruccin de modo de registro indirecto es que el campo de direccin de la instruccin utiliza menos bits para

La

ventaja

de

una

seleccionar un registro de los que necesitaria para especificar una direccin de memoria en forma directa. Se presenta una prctica sencil a buscando que el alumno de un primer paso hacia el conocimiento del
lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten

estructurar la lgica que el programador desea implementar.


En este modo, el campo de direccin de la instruccin proporciona la direccin en que se almacena la direccin efectiva en la memoria. El control recupera la instruccin de la memoria y utiliza su parte de direccin para accesar la

memoria una vez mas con el fin de leer la direccin efectiva. Unos cuantos modos de direccinamiento requieren que el campo de direccin de la instruccin se sume al contenido de un registro especifico en la CPU. En estos modos la direccin efectiva se obtiene el calculo siguiente: Direccin efectiva = Parte de direccin de la instruccin + el contenido de registro de CPU
El registro de CPU utilizado en el calculo puede ser el contador de programa, un registro de ndice o un registro base.

En cualquier caso tenemos un modo de direccinamiento diferente que se utiliza para una aplicacion distinta.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.7 Direccinamiento de los datos

SUBTEMAS 1.7.5 Registro indirecto

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR1_7_5.ASM ; Direccinamiento indirecto de registros ; El operando fuente SI, DI, DX o BP poseen la direccin para referenciar el dato y debe estar entre corchetes. Pila SEGMENT PARA STACK STACK DB 64 DUP(0) Pila ENDS Datos
Datos

SEGMENT Variable3 DW ENDS

PARA Datos 0A1FCH

Codigo

SEGMENT PARA Codigo RegistroIndirecto PROC FAR ASSUME CS:Codigo,DS:Datos,SS:Pila


Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

Cd. Victoria Tamaulipas, Mxico

15

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

PUSH DS MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX LEA BX, Variable3 MOV AX,[BX] MOV SI, OFFSET Variable3 MOV AX,[SI] LEA DI,Variable3 MOV AX,[DI] MOV BP, OFFEST Variable3 MOV AX,[BP] RET RegistroIndirecto ENDP Codigo ENDS END RegistroIndirecto PRCTICA No. 14 NOMBRE: Direccinamiento registro relativo OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento registro relativo.
Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

Se familiarice con el ambiente de desarrol o programas que se presentan en el manual.

en el que codificar, grabar, editar, compilar y ejecutar los

INTRODUCCIN:

En este modo el contenido del contador de programa se suma a la parte de direccin de la instruccin para
obtener la direccin efectiva. La parte de direccin de la instruccin por lo general es un nmero con signo (en representacion de complemento a dos) el cual puede ser positivo o negativo. Cuando se suma este nmero al contenido del contador de programa, el resultado produce una direccin efectiva cuya posicin en la memoria es relativa a la direccin de la siguiente instruccin. Para hacer mas claro con un ejemplo, consideremos que el contador de programa contiene el nmero 200 y que la parte de direccin de la instruccin contiene el nmero 11. La instruccin en la posicin 200 se lee de la memoria durante la fase de recuperacion y el contador de programa se incrementa en uno a 201. El calculo de direccin efectiva para el modo de direccin relativa es 201 + 11 = 212. Esto es 11 posiciones de memoria adelante de la direccin de la siguiente instruccin. Con frecuencia se utiliza el direccinamiento relativo con instruccines de tipo brinco, cuando la direccin del brinco est en el rea que rodea la palabra de la instruccin misma. Esto da como resultado un campo de direccin ms pequeo en el formato de la instruccin porque la direccin relativa puede especificarse con una cantidad de bits que se necesitan para

representar la direccin de memoria completa. Se presenta una prctica sencil a buscando que el alumno d un primer paso hacia el conocimiento del
lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten

estructurar la lgica que el programador desea implementar.


CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.7 Direccinamiento de los datos

SUBTEMAS 1.7.6 Registro relativo

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR1_7_6.ASM ;Direccinamiento registro relativo Pila SEGMENT PARA STACK DB 64 DUP(0)
Cd. Victoria Tamaulipas, Mxico

STACK
Pgina de 74

Febrero 2013

Rogelio Guerrero Luna

16

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Pila Datos
Datos

ENDS SEGMENT Variable1 DB ENDS PARA Datos


HOLA ALUMNOS. ( ENSAMBLADOR)

Codigo

SEGMENT PARA Codigo RegistroRelativo PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX LEA MOV MOV MOV BX, Variable1 AL, [BX + 3] AL, 2[BX] AL, [BX] + 1 ; ; ; ; 0000000000000000 AL = A AL = L AL = O

RET RegistroRelativo Codigo ENDS END

ENDP

RegistroRelativo

STRUC - ENDS: permite definir registros al estilo de los lenguajes de alto nivel, para acceder de una manera ms elegante a los campos de una informacin con cierta estructura. Estos campos pueden componerse de cualquiera de los tipos de datos simples (DB 8 Bits, DW 16 Bits = 2 Bytes = 1 Palabra, DD 4 Bytes, DQ 4 Palabras) y pueden ser modificables o no en funcin de si son simples o mltiples, respectivamente: Sintaxis: alumno STRUC cont edadaltura peso otros telefono alumno ENDE DB DB DB DB DD '0123456789' 75,200 0 10 DUP(0) ? ; modificable ; no modificable ; modificable ; no modificable ; modificable

ejemplo

alumno <'Victoria',,101,,3130661> MOV LEA MOV AX,OFFSET ejemplo.telefono BX,ejemplo CL,[BX].peso ; equivale a [BX+12]

RECORD: similar a STRUC pero operando con campos de bits. Permite definir una estructura determinada de byte o palabra para operar con comodidad. Sintaxis: nombre RECORD nombre_de_campo:tamao[=valor],... Donde nombre permitir referenciar la estructura en el futuro, nombre_de_campo identifica los distintos campos, a los que se asigna un tamao (en bits) y opcionalmente un valor por defecto. registro RECORD a:2=3, b:4=5, c:1 La estructura registro totaliza 7 bits, por lo que ocupa un byte. Est dividida en tres campos que ocupan los 7 bits menos significativos del byte: el campo A ocupa los bits 6 y 5, el B los bits del byte: el campo A ocupa los bi1 al 4 y el C el bit 0: 65 4321 0
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

17

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

11 0101 ? La reserva de memoria se realiza, por ejemplo, de la siguiente manera: reg1 registro <2,,1> Quedando reg1 con el valor binario 1001011 (el campo B permanece inalterado y el A y C toman los valores indicados). Ejemplos de operaciones soportadas: MOV MOV MOV AL, B ; AL = 5 (desplazamiento del bit menos significativo de A) AL, MASK A ; AL = 01100000b (mscara de A) AL, WIDTH A ; AL = 2 (anchura de A)

PRCTICA No. 15 NOMBRE: Direccinamiento registro base indexado OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento base indexado. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

En este modo el contenido de un registro ndice se suma a la parte de direccin de la instruccin para obtener
la direccin efectiva. El registro ndice es un registro de CPU especial que contiene un valor ndice. Un campo de direccin de la instruccin define la direccin inicial del arreglo de datos en la memoria. Cada operando del arreglo se almacena en la memoria en relacion con la direccin inicial. La distancia entre la direccin inicial y la direccin del operando es el valor del ndice almacenado en el registro de ndice. Cualquier operando en el accesarse con la misma instruccin siempre y cuando el registro ndice contenga el valor de ndice correcto. El

arreglo

puede

registro ndice puede incrementarse para facilitar el acceso a operandos consecutivos.


Algunos ordenadores dedican un registro de CPU para que funcione exclusivamente como un registro ndice. De manera implcita este registro participa cuando se utiliza una instruccin de modo ndice. En los ordenadores con muchos registros de procesador, cualquiera de los registros de la CPU pueden contener el nmero de ndice. En tal

caso, el registro debe estar especificado en forma explicita en un campo de registro dentro del formato de instruccin. En este modo, el contenido de un registro base se suma a la parte de direccin de la instruccin para obtener
la direccin efectiva. Esto es similar al modo de direccinamiento indexado, excepto en que el registro se denomina ahora registro base, en lugar de registro de ndice. La diferencia entre los dos modos esta en la manera que se usan mas que en la manera en que se calculan. Se considera que un registro ndice contiene un nmero de ndice que se relaciona con la parte de direccin de la instruccin. Se considera que un registro base contiene una direccin base y que el campo de direccin de la instruccin proporciona un desplazamiento en relacion con esta direccin base. El modo de direccinamiento de registro base se utiliza en los ordenadores para facilitar la localizacion de los programas en memoria. Cuando se mueven datos y programas de un segmento de memoria a otro, como se requiere en los sistemas de multiprogramacin, los valores de direccin de las instruccines deben reflejar este cambio de posicin. Con un registro base los valores de desplazamiento de las instruccines no tienen que cambiar. Solo el valor del

registro base requiere una actualizacion para reflejar el comienzo de un nuevo segmento de memoria. Se presenta una prctica sencil a buscando que el alumno de un primer paso hacia el conocimiento del
lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten

estructurar la lgica que el programador desea implementar.


CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 1.7 Direccinamiento de los datos

SUBTEMAS 1.7.7 Registro base indexado

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR1_7_7.ASM ;Direccinamiento registro base indexado Pila SEGMENT PARA STACK 'STACK'
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

18

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

DB Pila ENDS

64 DUP(0)

Datos SEGMENT PARA 'Datos' Variable1 DB Lista DW Datos ENDS

5,4,3,2,1 DUP (5,6,7,8,9 DUP (5,4,3,2,1)) 10,20,30,40,50,60,70,80,90,100

CodigoSEGMENT PARA 'Codigo' PROC FAR RegistroBaseIndexado ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX MOV AX,00 MOV BX,8 MOV DI,2 MOV AL,Variable1[BX][DI] ; AL = 3 MOV MOV MOV BX,2 SI,14 AX,Lista[BX][SI]

; AX = 90

AX = 05A

RET RegistroBaseIndexado ENDP Codigo ENDS END RegistroBaseIndexado

PRCTICA No. 16 NOMBRE: Formato de un programa OBJETIVO: Que el alumno: - Conozca y cree un programa; el cual cuente con todos los segmentos y puntos principales de los que puede estar formado un programa. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.
Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los

programas que se presentan en el manual.


INTRODUCCIN:

Las ejemplo:

estructuras

de

programa

presentadas

posteriormente

tanto

para

segmentos

como

para

secciones,

pueden ser compilados y ligados con Macroassembler y Turbo para 16 bist, respetando la sintaxis para cada caso;

Un programa en lenguaje ensamblador es una serie de sentencias ejecutables que le dicen al ensamblador que operaciones tienen que realizar. Cada sentencia esta compuesta por cuatro campos Nombre Operacin Operando(s) Comentario 1.- Campo Nombre Todas las letras de la A a la Z . Dgitos del 0 al 9 . Smbolos Especiales . Variables, rtulos, Constantes, Nombre segmento, Nombre de procedimientos, Nombre de macros. Variables
Representa una posicin de memoria que
Cd. Victoria Tamaulipas, Mxico

es accesible por un programa y el contenido de


Rogelio Guerrero Luna
Pgina de 74

esta posicin puede cambiar durante la ejecucin del programa.


Febrero 2013
19

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Rtulo Son los nombres aplicados a instruccines ejecutables en los programas de aplicacin los cuales son referenciados como cdigo relativo un nombre o rotulo pudiendo tener 3 atributos. Direccin de Segmento Desplazamiento de segmento Descriptor de accesibilidad NEAR o FAR cuando no se especifica, se considera NEAR. Datos Pila Ciclo: Countador label near Final label far Constantes Binaria Consta de ceros 1/0 una seguida por la letra b. Ocho equ 00001000b Decimal Consta de series de dgitos del 0 al 9 y opcionalmente seguida por la letra D. Cuarenta equ 40D Treinta equ 30 Hexadecimal Consta de series de dgitos del 0 al 9 y A a la F; terminada por la letra H. Si el valor hexadecimal comienza con una letra entonces se antepone un cero. Nueve equ 9h Diez EQU 0AH Octal Serie de digitos del 0 al 7 terminados por la letra O o Q. Tres EQU 3O Siete EQU 7Q Carcter Puede tener cualquier smbolo del cdigo ASCII encerrado entre comil as simples o dobles si
contiene ms de dos caracteres la pseudo operacin DB (Define byte) debe ser utilizada si la cadena carcter contiene solo uno de dos caracteres, entonces solo pueden ser utilizadas las

pseudo operaciones DD, DQ, DT, DW . LetraB DD B Nombre DB Persona Flotante Representa valores en notacin cientfica . Flotante DD 3.1415E-1 Real Hexadecimal Digitos del 0 al 9 y de la A a la F y terminados por la letra R siguiendo las reglas de los datos hexadecimales. RelHexa DD 0FAB 12345R Nombre de Segmento Se da en el campo del nombre de la sentencia del segmento. Codigo SEGMENT PARA codigo 2.- Campo Operacin Este campo contiene un nemotcnico para ejecutar una instruccin del microprocesador. Mov AX, 0AF2Ah 3.- Campo Operando Este campo contiene la posicin o posiciones donde estan los datos que van a instruccin de la operacin . Mov AX, 8 4.- Campo Comentario
Es el ultimo de los 4 campos y es utilizado para documentar el programa internamente e inicia con un punto y

ser manipulados por la

coma. Mov AH, 43 ; Asigna un cuarenta y tres a la parte alta del registo AX

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.2 Formato de un programa


Cd. Victoria Tamaulipas, Mxico

SUBTEMAS
Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

20

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_2a.ASM ;Programa que ejemplifica el uso de segmentos con registros de 16 bist. ;El programa realmente no hace nada y es terminado con la instruccin RET. ;Nombre Operacin Operando(s) Comentario Tres EQU 3Q ;Constante octal Ocho equ 00001000b ;Constante binaria Pila SEGMENT PARA STACK 'STACK' ; Pila es nombre del segmento DB 64 DUP(0) Pila ENDS Datos SEGMENT PARA 'Datos' ; Datos es nombre de segmento Variable1 DB 5 Datos ENDS CodigoSEGMENT PARA 'Codigo' FormatoPrograma PROC FAR ;Procedimiento principal, punto de entrada del programa ASSUME CS:Codigo, DS:Datos, ES,Datos, SS:Pila PUSH DS ; Guardar el contenido del registro de Segmento de Datos en la pila MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX ;Operacin MOV con los operandos destino DS y fuente AX MOV ES,AX ;El segmento extra es requerido por algunas interrupciones ;Agrega la lgica necesaria por tu programa RET ;Retorno del procedimiento y fin del programa FormatoPrograma ENDP Codigo ENDS END FormatoPrograma ;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_2b.ASM ;Programa que ejemplifica el uso de secciones en procesadores con registros de 16 bist (80286). ;El programa realmente no hace nada, unicamente coloca el valor 4C00H en el registro AX, para que ; la interrupcin 21H termine el programa. .286
.MODEL SMALL

.CODE Programa: MOV AX,4C00H INT 21H .STACK 64 END Programa ;Agrega la lgica necesaria para tu programa ;Funcin para terminar programa ;Interrupcin para terminarlo

PRCTICA No. 17 NOMBRE: Proceso de compilado, ligado y ejecucin de un programa OBJETIVO: Que el alumno: - Practicar las diferentes formas de compilar, ligar y ejecutar un programa. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

21

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

INTRODUCCIN:

El cdigo fuente es un texto escrito generalmente por una persona que se utiliza como base para generar otro cdigo con un compilador o intrprete para ser ejecutado por una ordenador. Normalmente se refiere a la programacin de software. Un nico programador o un equipo de el os escriben el cdigo fuente en el lenguaje de programacin elegido. Posteriormente en un proceso de compilacin el cdigo fuente se traduce en cdigo objeto. A diferencia del cdigo objeto, el cdigo fuente es texto simple, capaz de ser ledo por cualquier editor de textos y lo que es ms importante, entendible por cualquier programador. En l estn escritas las instruccines que deber realizar la ordenador, segn la sintaxis de un lenguaje de programacin. Tener el cdigo fuente es vital si se necesita modificar un programa. El trmino de cdigo fuente tambin se usa para el cdigo de otros lenguajes, como los de marcado de textos, como el HTML, que posteriormente son interpretados por un programa especializado, en este caso el navegador web, para su lectura.
Fase 1 Fase 2 Fase 3

Cdigo Fuente

Cdigo Objeto No Ejecutable .OBJ

Cdigo Objeto Ejecutable .EXE

APLICACIONES

Edicin

Traduccin

Ligado

Bibliotecas

Editor

Compilador

L. Editor

Sistema Opertivo WIndows: A:\MASM>Masm Programa; A:\MASM>Link Programa A:\MASM>Programa A:\TASM>Tasm Programa Para compilar generando un .OBJ A:\TASM>Tlink Programa Para ligar generando un .EXE A:\TASM>Programa Para ejecutar A:\TASM>TD Programa Para depurar o debuger, siempre y cuando para compilar se haya utilizado Tasm /zi Programa y al ligar Tlink /v programa
/c Ensamblar si ligar /coff Archivo de cdigo objeto no

C:\masm32\bin\ml /c /coff /nologo Programa.asm

ejecutable /nologo Suprimir el mensaje de derechos de copia C:\\masm32\bin\Link /SUBSYSTEM:WINDOWS /MERGE:.rdata=.text Programa.obj > nul /SUBSYSTEM Entorno de ejecucin WINDOWS o CONSOLE /MERGE con quien se unir el programa Sistema Operativo Linix: #nasm f elf programa.asm Compilar #ld -s -c programa programa.o Ligar #./programa Ejecutar
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.2 Formato de un programa

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_2.ASM ;Definicin de un programa general para Macro Assembler
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

22

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

;Nombre

Operacin

Operando(s)

Comentario

PRCTICA No. 18 NOMBRE: Directivas de ensamble OBJETIVO: Que el alumno: - Pondr en prctica las directivas de precompilacin. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Es posible usar las directivas para programar en cualquier procesador y con cualquier versin de compilador. Solo basta con consultar la disponibilidad de las mismas para cada uno de el os.
.386 Tipo de procesador a usar, .MODEL Modelo de memoria a usar, .DATA Seccin para la definicin de datos, .CODE Seccin para la incorporacin del cdigo, .STACK Seccion para la definicin de la pila, .IF .ELSE .ENDIF

.ELSEIF Estatuto de decisin, .WHILE .ENDW Estatuto de repeticin Mientras, .BREAK un bloque de cdigo y se va hasta el final del mismo,

Suspende la ejecucin de

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.2 Formato de un programa

SUBTEMAS

PRCTICA No. 19 NOMBRE: Transferencia de datos OBJETIVO: Que el alumno: - Probar el funcionamiento de las instruccines que le permitan mover, referenciar e intercambiar datos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

LDS y LES Cargan

el puntero de 4 bytes, localizados en la posicin de memoria indicada por el segundo

operando, en un registro de segmento y uno de palabra. La primera palabra del sealizador (desplazamiento) se carga en el registro del primer operando; la ltima palabra del puntero se carga en el registro DS (para LDS) o ES (para

LES). XCHG Cambia el operando fuente byte o palabra con su operando destino al mismo tipo.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.5 Instruccines para transferencia de datos

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_5.ASM ;Transferencia de datos Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' 5 Variable1 DB Variable2 DD ? Variable3 DD 10,20,30,40,50
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

23

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Datos ENDS Codigo SEGMENT PARA 'Codigo' TransferenciaDatos PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV BL, Variable1 ;Copia el contenido del operando fuente en el destino LEA DX, Variable3 ;Tomar la direccin efectiva del Variable LDS SI, Variable3 ;Carga puntero de doble palabra en registro LES BX, Variable2 ;Carga puntero de doble palabra en registro XCHG BX, DX XCHG CL, Variable1 XCHG AL, CL RET TransferenciaDatos Codigo ENDS END

ENDP TransferenciaDatos

PRCTICA No. 20 NOMBRE: Aritmtica binaria OBJETIVO: Que el alumno: - Experimentar con las diferentes instruccines que le permitirn efectuar operaciones en aritmtica binaria. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Operaciones aritmticas sin signo. ADD Suma dos operandos, almacenando el resultado en el destino; Sealizadores afectados AF,CF,OF,PF,SF,ZF. SUB Resta el contenido del operando fuente al destino, dejando el resultado en el destino; sealizadores afectados OF,SF,ZF,PF,AF,CF. MUL Multiplica el contenido del operando fuente por el contenido de AL o AX, segn sea el caso, si el
operando fuente es de un byte, lo multiplica por el contenido de AL, dejando el resultado en AX; pero si el operando fuente es de una palabra, lo multiplica por el contenido de AX, dejando el resultado en DX:AX , dejando en DX el

resultado mas significativo del resultado. OF y Cf se ponen a cero si DX es cero, en caso contrario se ponen a uno. DIV Divide el contenido del operando de tipo byte, entre el contenido del registro AX, almacenando el
cociente en AL y el residuo en AH; cuando el divisor es una palabra, divide el contenido de DX:AX, dejando el cociente

en AX y el residuo en DX. INC Incrementa en una unidad el contenido del operando especificado, pudiendo ser un registro, mitad o una variable. Sealizadores afectados SF,OF,ZF,AF,PF. DEC Decrementa en una unidad el contenido del operando especificado, pudiendo ser un registro, mitad o una variable. Sealizadores afectados SF,OF,ZF,AF,PF.
ADC, SBB, NEG,CBW,CWD, IMUL, IDIV CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.6 Instruccines aritmticas

SUBTEMAS 2.6.1 Aritmtica binaria

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

24

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

;Fecha de creacin: Febrero 2013 ;PR2_6_1.ASM ; Instruccines aritmticas binarias Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' 4 Variable1 DB Variable2 DB 3 Variable3 Dw 10 Datos ENDS Codigo SEGMENT PARA 'Codigo' AritmeticaBinaria PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV AL,Variable1 MOV BL,Variable2 INC AL DEC BL ADD AL,Variable2 SUB AL,Variable2 MOV AX, Variable3 MUL Variable2 el resultado en AX RET AritmeticaBinaria Codigo ENDS END

; Incrementa en una unidad el contenido de AL ; Decrementa en una unidad el contenido de BL ; Suma el contenido de Variable2 al de AL, dejando el resultado en AL

Multiplica

el

contenido

de

AX

por

el

contenido

de

Variable2,

dejando

ENDP AritmeticaBinaria

PRCTICA No. 21 NOMBRE: Aritmtica empacada OBJETIVO: Que el alumno: - Podr apreciar y experimentar con las instruccines que se pueden efectuar antes o despus de las operaciones aritmticas. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.
Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los

programas que se presentan en el manual.


INTRODUCCIN:

Ajuste a ASCII el contenido de AL despus de:


AAA La suma, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero entre el La sustraccin, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero

0 y el 9.
AAS

entre el 0 y el 9. AAM La multiplicacin, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero entre el 0 y el 9.
AAD La divisin, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero entre

el 0 y el 9.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.6 Instruccines aritmticas


Cd. Victoria Tamaulipas, Mxico

SUBTEMAS 2.6.2 Aritmtica empacada


Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

25

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_6_2.ASM ;Transferencia de datos 'STACK' Pila SEGMENT PARA STACK DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' Variable1 DW 5 Datos ENDS Codigo SEGMENT PARA 'Codigo' AritmeticaEmpacada PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV BX,8 MOV AX,Variable1 ADD AX,BX AAA ;Ajuste ASCII despues de la suma RET AritmeticaEmpacada ENDP Codigo ENDS END AritmeticaEmpacada PRCTICA No. 22 NOMBRE: Manipulacin de banderas OBJETIVO: Que el alumno:
Apagar y encender las banderas.

Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.

INTRODUCCIN:

CLC borra el sealizador de arrastre. La sealizador. Sintaxis: CLC (no operando) Sealizadores afectados: CF = 0 Sealizadores no definidos: Ninguno CLD borra el sealizador de direccin.
CLD borra el sealizador de direccin, incrementa SI y DI. Ningn otro registro ni sealizador estn afectados. Despus de que se ejecuta CLD, las operaciones de cadena incrementa automticamente

operacin ni

CLC

pone

el

sealizador

de

arrastre

No

estn

afectados

ningn

registro

los registro ndice (SI y/o DI). Sintaxis: CLD ( no operando) Sealizadores afectados: DF Sealizadores no definidos: Ninguna CLI borra sealizador de interrupcin (inhabilita interrupciones). La instruccin CLI borra el sealizador de habilitacin de interrupcin. No es afectado ningn otro sealizador.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

26

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Sintaxis: CLI ( no operando) Sealizadores afectados: IF = 0 Sealizadores no defenidos: Ninguno CMC complementa sealizador de arrastre. Esta instruccin cambia el valor del sealizador de arrastre. Si el sealizador de arrastre esta a 1, se convierte en 0. Si esta a 0 se convierte en 1. Sintaxis: CMC Sealizador afectados: CF Sealizador no definidos: Ninguno. LAHF carga en AH los sealidadores. Esta instruccin carga SF, ZF, AF, PF, CF, ciertos bits del registro AH. AH SF ZF AF PF CF Las posiciones de los bits1, 3 y 5 del registro AH estn indefinidas. SAHF almacena el contenido del registro AH en los sealizadores SF, ZF, xx, AF, xx, PF, xx, CF. Los valores del registro AH se utilizan para cargar los sealizadores aqu listados desde los bits 7, 6, 4, 2 y 0, respectivamente. Sintaxis: SAHF (no operando) Sealizadores afectados: Ninguno Sealizadores no definido: Ninguno STC pone a 1 sealizador de arrastre. Sintaxis: STC (no operandos) Sealizadores afectados: CF = 1 Sealizadores no definidos: Ninguno STD pone a 1 sealizador de direccin. La instruccin STD pone a 1 el sealizador DF. Esto hace que las instruccines de cadena posteriores decremente los registros SI y/o DI. Sintaxis: STD (no operando) Sealizadores afectados: Ninguno Sealizadores no definidos: Ninguno STI pone a 1 sealizador de habilitacin de Interrupcin. Esto permite que sean facilitadas las interrupciones externas enmascarables despus de la ejecucin de la instruccin siguiente. Sintaxis: STI (no operando) Sealizadores afectados: CF = 1 Sealizadores no definidos: Ninguno.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.7 Instruccines de manipulacin de banderas

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_7.ASM ; Instruccines de manipulacin de banderas Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Codigo SEGMENT PARA 'Codigo' ManipulacinDeBanderas PROC FAR ASSUME CS:Codigo, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX STC ; Encender la bandera de acarreo CLC ; Apagar la bandera de acarreo
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

27

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

LAHF ;Cargar las banderas en la parte alta del registro AX RET ManipulacinDeBanderas ENDP Codigo ENDS END ManipulacinDeBanderas PRCTICA No. 23 NOMBRE: Comparacin y prueba OBJETIVO: Que el alumno: - Har uso de las instruccines que le permita comparar contenidos y verificarlos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

CMP Comparacin entre dos operandos, restndolos, lo cual afecta los sealizadores, contenido. Afectando los sealizadores OF,SF,ZF,AF,PF,CF. TEST Permite efectuar una comparacin lgica, haciendo uso de la intruccin AND lgica de bit a bit en los dos operandos. Afectando los siguientes sealizadores: OF =0, CF=0, SF, ZF, PF. Despus del uso de cualquiera de las anteriores intrucciones, generalmente se usa un salto, condicional o no.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

pero

no

su

TEMA 2.8 Instruccines de comparacin y prueba

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_8.ASM ; Instruccines de comparacin y prueba Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' 5 Variable1 DB Variable2 DD ? Variable3 DD 10,20,30,40,50 Datos ENDS Codigo SEGMENT PARA 'Codigo' ComparacinYPrueba PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX CMP JE Variable1,Variable2 Fin ; Comparacin entre dos operandos, restndolos

TEST AX,BX JNE Fin Fin:

; Comparacin lgica, haciendo uso de AND bit a bit en los dos operandos

RET ComparacinYPrueba ENDP Codigo ENDS END ComparacinYPrueba


Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

28

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

PRCTICA No. 24 NOMBRE: Saltos condicionales OBJETIVO: Que el alumno: - Har uso de las instruccines que le permitirn efectuar saltos dentro del mismo programa. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Una introduccin de salto se reduce a cambiar el contenido de IP y, eventualmente el de CS. Principalmente, existen dos tipos de instruccines de salto: aquel as que salto

especifican

la

direccin

de

inmediato despus del cdigo de operacin, es decir, especifican la etiqueta a la que hay que saltar (denominados saltos directos), y aquel as que especifican una direccin de memoria de la que hay que recoger la direccin a la que

saltar (denominadas saltos indirectos). Los bytes que componen una instruccin de salto directo incluyen en el cd. la operacin algunos bytes que especifican la direccin a la que se debe producir el salto. Saltos incondicionales:
Pero existen varios formatos posibles para la instruccines de salto directo. El primero se denomina SHORT JUMP (salto corto), y el nico dato que incluye la instruccin despus del cd. de operacin es un byte, que

representa en complemento a dos el valor a aadir a IP para seguir la ejecucin. Este byte se suma a IP, para lo que
primero es necesario extenderlo en signo (que el signo del primer byte ocupe el segundo byte) a 16 bits. As, el byte representa un desplazamiento entre -128 y +127 bytes (256 bytes), que es el rango que se puede especificar con un

bytes en complemento a dos. Si observamos el orden en el que el microprocesador l eva a cabo la ejecucin de una instruccin, veremos que el
desplazamiento se suma a IP despus de haber incrementado ste. Por tanto, el desplazamiento se toma desde la

direccin de comienzo de la siguiente instruccin al salto, y no desde la propia instruccin de salto.


El siguiente formato de salto directo es el NEAR JUMP o salto cercano. Este formato, la instruccin incluye dos bytes que forman la palabra a sumar a IP, tambin en complemento a dos. As, el rango de salto est entre -32768 y +32768 bytes (65535 bytes), que efectivamente permiten un salto a cualquier punto del segmento donde reside la instruccin de salto (en este formato CS tampoco es alterado por el salto). El ensamblador comprueba si el salto est

en el rango (-128, +127) para realizar un salto corto y si no lo est genera un salto cercano.
El ltimo tipo de salto se denomina FAR JUMP o salto lejano. Esta denominacin se debe a que ste formato de salto, cambia tanto CS como IP, pudiendo saltar a cualquier punto del megabyte direccinable (2 elevado a 20). En ste formato de salto, la instruccin l eva dos palabras con el desplazamiento y el segmento de la direccin a la que

hay que saltar (se utiliza para realizar un salto a otro segmento). Este tipo de salto copia directamente en IP y CS los valores dados por la instruccin, sin tener en cuenta el contenido previo de ambos.
Existen dos formatos de instruccines de indirecto: el primero, denominado NEAR JUMP o salto cercano, lee una palabra de la direccin de memoria especificada y carga el registro IP con sta. As, se puede saltar a cualquier punto del segmento donde resida la instruccin de salto. El otro tipo se denomina FAR JUMP o salto lejano, y toma de la

direccin especificada dos palabras, la primera de la cuales se introduce en IP, y la segunda en CS (Ya que el
ordenamiento INTEL siempre se almacenan primero los elementos de menor peso). De sta forma se puede saltar a

cualquier punto de la memoria direccinable con un salto indirecto.


JMP: El formato de la instruccin es JMP direccin. Provoca un salto incondicional, por lo que se utiliza para seguir la

ejecucin del programa en otro punto, que puede ser especificando una etiqueta o especificando una direccin (salto indirecto). Cuando incluimos instruccines de salto en el programa, indicamos la direccin del destino, y en caso de que el salto necesite especificar un valor a sumar a IP, el ensamblador se encarga de calcular el desplazamiento desde el punto donde se ejecuta el salto. En una
instruccin JMP; el propio ensamblador decide si debe generar un salto corto o lejano: en el caso de que

(salto

directo)

el destino est en el rango de un byte con signo, se genera un salto corto, en caso contrario, se genera un salto cercano. Saltos condicionales:
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

29

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Para los siguiente saltos, vamos a tener en cuenta significados de palabras inglesas que nos van a ayudar a definir el tipo de salto a realizar:
(Equal=igual, Not=no, Greater=mayor, Less=menor, Above=superior, Below=inferior, Carry=acarreo, -

Zero=cero, Overflow=desbordamiento, Sign=signo, Parity=paridad) JA: (Salto si superior). Es equivalente a JNBE (Salto si no inferior ni igual). El formato es: JA etiqueta si tanto el flag de acarreo CF como el flag de cero ZF est a cero (CF=0, ZF=0). Si CF=1 o ZF=1 no se transfiere el control. No se considera el signo. Ejemplo: CMP ax, bx ; Comparar AX con BX. JA etiqueta ; Saltar (Bifurcar) a ETIQUETA si AX>BX ; (sin considerar signo). ETIQUETA: JAE: (Salto si superior o igual). Es equivalente a JNB (Salto si no inferior). El formato es: JAE etiqueta. Salta a la etiqueta si el flag de acarreo es cero (CF=0). No se considera el signo. Ejemplo: CMP ax, bx ; Comparamos AX con BX. JAE etiqueta ; Bifurca a ETIQUETA si AX> o =BX ; (sin considerar el signo). ETIQUETA: JB: (Salto si inferior). Es equivalente a JNAE (Salto si no superior ni igual) y a JC (Salto sin acarreo). El formato es: JB etiqueta. Salta a la etiqueta si el flag de acarreo es uno (CF=1). No se considera el signo. Ejemplo: CMP ax, bx JB etiqueta ; Bifurca a ETIQUETA si AX < BX ; (sin considerar el signo). ETIQUETA: JBE: (Salto si inferior o igual). Es equivalente a JNA (Salto si no superior). El formato es: JBE etiqueta. Salta a la etiqueta si el flag de acarreo es igual a 1 o el flag de cero es igual a uno (CF=1 y ZF=1). Si CF=0 y ZF=0 no hay salto. No se considera el signo. Ejemplo: CMP ax, bx JBE etiqueta ; Bifurca a ETIQUETA si AX es = o < que BX ; (sin considerar el signo). ETIQUETA: JE: (Salto si igual). Es equivalente a JZ (Salto si cero). El formato es: JE etiqueta. Salta a la etiqueta si el flag de cero es igual a uno (ZF=1). Se considera nmero con signo y sin signo. Ejemplo: JZ etiqueta ; Bifurca a ETIQUETA si AX es cero. ETIQUETA: JG:(Salto si mayor). Es equivalente a JNLE (Salto si no menor ni igual). El formato es: JG etiqueta. Salta a la etiqueta
si el flag de cero es igual a cero y el flag de desbordamiento contiene el mismo valor que el flag de signo

(ZF=0 y SF=OF). Si ZF=1 o SF<>OF, no hay salto. Se considera el signo. Ejemplo: CMP ax, bx JG etiqueta ; Bifurca a ETIQUETA si AX > BX ETIQUETA: ; (considerando el signo).

JGE: (Salto si mayor o igual). Es equivalente a JNL (Salto si no menor). El formato es: JGE etiqueta. Salta a la etique ta si el flag de desbordamiento contiene el mismo valor que el flag de signo (SF=OF). Se considera el signo. Ejemplo: CMP ax, bx JGE etiqueta ; Bifurca a ETIQUETA si AX es > o = BX ; (considerando el signo). ETIQUETA: JLE: (Salto si menor o igual). Es equivalente a JNG (Salto si no mayor). El formato es: JLE etiqueta. Salta a la etique ta si el flag de cero est a uno o el flag de desbordamiento y el de signo contiene valores distintos (ZF=1 o SF distinto de OF). Si ZF=0 y SF=OF no se produce el salto. Se considera el signo.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

30

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Ejemplo: CMP ax, bx JLE etiqueta; Bifurca a ETIQUETA si AX es < o = BX ETIQUETA: ; (considerando el signo).

JNA, JNAE, JNB, JNBE, JNE, JNG, JNGE, JNL, JNLE: Estas instruccines comprueban exactamente las condiciones opuestas a sus anlogas sin la letra N. En
realidad no sera necesaria, porque son sinnimas de JBE, JB, JAE, JNZ, JLE, JL, JGE Y JE,

respectivamente. Pero el lenguaje ensamblador estndar las incluye para facilitar el trabajo del programador. JO:(Salto si desbordamiento). Formato es: JO etiqueta. Salta a la etiqueta si el flag de desbordamiento est a uno (OF=1). Ejemplo: ADD ax, bx ; AX=AX+BX JO etiqueta ; Bifurca a ETIQUETA si hay desbordamiento ; (Overflow). ETIQUETA:
JNO: (Salto si no desbordamiento). El formato es: JNO etiqueta. Salta a la etiqueta si el flag de desbordamiento est a

cero (OF=0). Ejemplo: ADD al, bl ; AL=AL+BL JNO etiqueta ; Bifurca a ETIQUETA si no hay desbordamiento ETIQUETA: ; (No overflow).

JS: (Salto si signo). El formato es: JS etiqueta. Salta a la etiqueta si el flag de signo est a uno (SF=1). Ejemplo: SUB ax, bx ; AX=AX-BX JS etiqueta ; Bifurca a ETIQUETA si signo, es decir, AX < 0 ; (en este caso, si AX es menor que BX). ETIQUETA: JNS: (Salto si no signo / si el signo es positivo). El formato es: JNS etiqueta. Salta a la etiqueta si el flag de signo est a cero (SF=0). Ejemplo: SUB ax, bx ; AX=AX-BX JNS etiqueta ; Bifurca a ETIQUETA si no signo, es decir, AX > o = que BX ; (en este caso, mayor o igual que BX). ETIQUETA: JP: (Salto si paridad). Es equivalente a JPE (salto sin paridad par). El formato es: JP etiqueta. Salta a la etiqueta si el flag de paridad est a uno (PF=1). Ejemplo: AND ax, bx ; AX=AX AND BX
JP etiqueta ; Bifurca a ETIQUETA si paridad par, es decir ; si el nmero de "unos (1)" que hay en AX es

si

AX

es

par. ETIQUETA:
JNP: (Salto si no paridad). Es equivalente a JPO (salto sin paridad impar). El formato es: JNP etiqueta. Salta a la

etiqueta si el flag de paridad est a cero PF=0). Ejemplo: AND ax, bx ; AX=AX AND BX JNP etiqueta ; Bifurca a ETIQUETA si paridad impar, es decir AX es impar. ETIQUETA: ; si el nmero de "unos (1)" que hay en

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.9 Instruccines de salto 2.9.1 Condicionales

SUBTEMAS

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

31

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_9_1.ASM ; Instruccines de salto 'STACK' Pila SEGMENT PARA STACK DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Codigo SEGMENT PARA 'Codigo' Saltos PROC FAR ASSUME CS:Codigo,SS:Pila PUSH DS;Guarda la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV MOV
INICIO: INC

DEC CMP JE

AX,00 BX,10 AX BX AX,BX FIN

; Incrementa en una unidad el contenido de AX ; Decrementa en una unidad el contenido de BX ; Compara el contenido de AX con el de BX ; Si los contenidos comparados son iguales salta al FIN ; Siempre que llegue a este punto salta al INICIO SALTO

SALTO

CONDICIONADO JMP INICIO INCONDICIONAL

FIN:

RET Saltos ENDP Codigo ENDS END Saltos

PRCTICA No. 25 NOMBRE: Ciclos OBJETIVO: Que el alumno: - Pondr en prctica las instruccines que le permitirn hacer uso de cuatro tipos de ciclos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Esta instruccin permite realizar "bucles" utilizando el registro CX como contador (CX en un contador que va decrementndose). Un bucle es un conjunto de instruccines que se ejecutan una serie de veces. Esta instruccin equivale al par: DEC CX // JNZ etiqueta. El formato es: LOOP etiqueta. LOOPE: Esta instruccin al igual que LOOP, permite realizar "bucles" utilizando el registro CX como contador (CX en un contador que va decrementndose) pero adems el flag de cero debe estar a uno (ZF=1). Es equivalente a LOOPZ (Bucle si cero). Esta instruccin equivale al par: JNE FIN // LOOP OTRO. El formato es: LOOPE etiqueta. LOOPNE: Esta instruccin al igual que LOOP, permite realizar "bucles" utilizando el registro CX como contador
(CX en un contador que va decrementndose) pero adems el flag de cero debe estar a cero (ZF=0). Es equivalente a LOOPNZ (Bucle si no cero). Esta instruccin equivale al par: JE FIN //

LOOP:

LOOP OTRO. El formato es: LOOPNE etiqueta.


CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.10 Instruccines de ciclos

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin


Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

32

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_10.ASM ; Instruccines de ciclos Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' Vector DB 1,2,3,4,5,0 Cuantos DW 5 Datos ENDS Codigo SEGMENT PARA 'Codigo' InstruccinesDeCiclos PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV
ETIQUETA: LOOP ETIQUETA

CX,Cuantos

; CX = 5 El cul ser el nmero de veces del bucle ; Aqu estaran las instruccines que estn dentro del bucle. ; CX = CX 1 y bifurca a ETIQUETA mientras CX diferente de cero

BL,00 ;Asegurar que BL tenga cero, para usalo como acumulador SI,OFFSET Vector ; Mover a SI el Inicio del Vector SI ; Decrementar el contenido del registro para poder generalizar dentro del ciclo INICIO: INC SI ; Incrementar en una unidad el contenido del registro SI ADD BL,Vector[SI] ; Aqu estaran las instruccines que estn dentro del bucle. CMP Vector[SI],0 ; Comparar elemento del vector con cero para determinar si es el final LOOPNE INICIO ; Regresa a INICIO mientras no sea igual acero RET InstruccinesDeCiclos ENDP Codigo ENDS END InstruccinesDeCiclos PRCTICA No. 26 NOMBRE: Operaciones lgicas OBJETIVO: Que el alumno: - Har uso de las cuatro instruccines lgicas en programas separados. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

MOV MOV DEC

EInstruccines Lgicas: NEG, NOT, AND, OR, XOR NEG: Esta instruccin calcula el complemento a dos del operando, y lo almacena en el
mismo lugar. Esto es, efectivamente,
Datos de entrada Compuerta lgica Datos de salida

equivalente a cambiar de signo el operando de la instruccin. MOV AX, 4 ; Mover un cuatro al registro AX. NEG AX ; Se haya el complemento a 2 de AX y se guarda en AX (AX = - 4). NEG BYTE PTR ES:[BX+SI+2] ; Se haya el complemento a 2 de la posicin del Segmento Extra) indicada por el ; de "BX+SI+2"
Cd. Victoria Tamaulipas, Mxico

de

memoria

(dentro

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

33

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales Instit utoTecnolgico No 38

NOT: Se realiza el NOT lgico del operando bit a bit. El NOT consiste en invertir cada bit del operando (pasar los 0 a 1 y los 1 a 0; 10100 Tabla de verdad S E S=E 0 1 1 0 NOT SI NOT WORD PTR ES:[0] los 1 a 0. ; Del valor que tenga SI pasa los 0 a 1 y los 1 a 0. ; La palabra apuntada al inicio del segmento extra, se pasa los 0 a 1 y

AND: Operacin "y lgico" a nivel de bit entre los dos operandos. El resultado se almacena en el destino. Formato AND destino, fuente. Permite apagar un bit o asegurarnos que se encuentra apagado en la posicin que lo agreguemos en el operando fuente. Tabla de verdad E1 E2 S 0 0 0 S = E1 * E2 0 1 0 1 0 0 1 1 1 AND AX.BX AND ES:[0], DX
AND DI, ES:[SI]

; AND lgico entre AX y BX. El resultado queda en AX. ; Lo mismo pero con posiciones de memoria. ; Lo mismo pero con valores inmediatos.

AND BYTE PTR[9], 3

OR:Operacin "o lgico exclusivo" a nivel entre los dos operandos. El resultado se almacena en el destino. Formato OR destino, fuente. Permite encender un bit o asegurarnos que se encuentra encendido en la posicin que lo agreguemos en el operando fuente. Tabla de verdad E1 E2 S 0 0 0 S = E1 + E2 0 1 1 1 0 1 1 1 1 OR AL, AH ; Las mismas operaciones que con AND pero utilizando el OR. OR [DI], CH OR CL, [BP+4] OR BYTE PTR ES:[SI], 1 XOR: Operacin "o lgico exclusivo" a nivel de bit entre los dos operandos. El resultado se almacena en destino. Formato XOR destino, fuente. Tabla de verdad E1 E2 S 0 0 0 S = E1 * E2 + E1 * E2 0 1 1 1 0 1 1 1 0
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

34

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales Instituto Tecnolgico No 38

XOR AX, AX de AX (AX=0).

; El XOR entre dos bits con el mismo valor es siempre 0, independientemente del valor previo

; Las ventajas de hacerlo as son dos: la ejecucin de XOR reg, reg es ms rpida que la de MOV reg, o que la de MOV ax,0 , y la codificacin de la ; primera ocupa menos bytes que la ;segunda; Esta tcnica no puede utilizarse para poner a cero los registros de segmento. XOR BYTE PTR[55AAh], 4 XOR AL, 00AAh
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.11 Instruccines lgicas

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_11.ASM ; Instruccines lgicas Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' Variable1 DB 10 ;10 Decimal es equivalente a 00001010B Variable2 DB 11011101B Variable3 DW 1010101010101011B Datos ENDS Codigo SEGMENT PARA 'Codigo' InstruccinesLogicas PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX 00001010 Variable1 AND 11011101 BL MOV AX, Datos 00001000 BL MOV DS, AX MOV AND MOV
OR

BL,Variable2 BL, Variable1 AX, 0A5FFH


Variable3, AX

OR

1010101010101011 AX 1010010111111111 Variable3


1010111111111111 Variable3

RET InstruccinesLogicas ENDP Codigo ENDS END InstruccinesLogicas PRCTICA No. 27 NOMBRE: Desplazamiento circular OBJETIVO: Que el alumno: - Pondr en prctica y apreciar el efecto de los desplazamientos circulares. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

RCL (rotacin a la izquierda con acarreo) Sintaxis: RCL destino, contador


Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

35

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Rotar a la izquierda los bits del operando destino junto con el indicador de acarreo CF el nmero de bits
especificado en el segundo operando. Si el nmero de bits a desplazar es uno, se puede especificar directamente, en

caso contrario el valor debe cargarse en CL y especificar CL como segundo operando. No es conveniente que CL sea mayor de siete, en bytes; quince, en palabras.
RCL RCL RCL AX,1 AL,CL DI,1

RCR (rotacin a la derecha con acarreo)


especificado en el segundo

Sintaxis: RCR destino, contador CF el nmero de bits

Rotar a la derecha los bits del operando destino junto con el indicador de acarreo contrario su valor debe cargarse en CL y especificar CL como segundo operando:

operando. Si el nmero de bits es uno se puede especificar directamente; en caso


RCR RCR BX,CL BX,1

ROL (rotacin a la izquierda)

Sintaxis: ROL destino, contador

Rota a la izquierda los bits del operando destino el nmero de bits especificado en el segundo operando, que puede ser uno CL previamente cargado con el valor del nmero de veces.
ROL ROL DX,CL AH,1

ROR (rotacin a la derecha)

Sintaxis: ROR destino, contador

Rota a la derecha los bits del operando destino el nmero de bits especificado en el segundo operando. Si el nmero de bits es uno se puede poner directamente, en caso contrario debe ponerse a travs de CL.
ROR ROR CL,1 AX,CL

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.12 Instruccines de rotacin y desplazamiento

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_12a.ASM ; Instruccines de rotacin y desplazamiento Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' 5 Variable1 DB Variable2 DW 0101001101010001B Datos ENDS Codigo SEGMENT PARA 'Codigo' RotacionYDesplazamiento PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

36

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

MOV CL,Variable1 MOV AX,Variable2 RCL AX,1 ;Rotacin a la izquierda con acarreo un bit RCL AX,CL RET RotacionYDesplazamiento ENDP Codigo ENDS END RotacionYDesplazamiento PRCTICA No. 28 NOMBRE: Desplazamiento lneal OBJETIVO: Que el alumno: - Pondr en prctica y apreciar el efecto de los desplazamientos lneales. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

SAL,SHL,SAR,SHR SAL/SHL (desplazamiento aritmtico a la izquierda)

Sintaxis: SAL/SHL destino, contador

Desplaza a la izquierda los bits del operando el nmero de bits especificado en el segundo operando que debe ser CL si es mayor que uno los bits desplazados.

SAR (desplazamientoaritmtico a la derecha)

Sintaxis: SAR destino, contador

Desplaza a la derecha los bits del operando destino el nmero de bits especificado en el segundo operando. Los bits de la izquierda se rel enan con el bit de signo del primer operando. Si el nmero de bits a desplazar es 1 se puede especificar directamente, si es mayor se especifica a travs de CL.
SAR SAR AX,CL BP,1

SHR (desplazamiento lgico a la derecha)

Sintaxis: SHR destino, contador

Desplaza a la derecha los bits del operando destino el nmero de los bits especificados en el segundo operando. Los bits de la izquierda se l ena con cero. Si el nmero de bits a desplazar es 1 se puede especificar directamente en el caso en que no ocurra se pone el valor en CL:
SHR SHR AX,CL CL,1

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.12 Instruccines de rotacin y desplazamiento

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_12b.ASM
; Instruccines de rotacin y desplazamiento

Pila

SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' 5 Variable1 DB
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

37

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Variable2 DW 0AH Datos ENDS Codigo SEGMENT PARA 'Codigo' RotacionYDesplazamiento PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV CL,Variable1 MOV AX,Variable2 SAL AX,1 SHL AX,CL RET RotacionYDesplazamiento ENDP Codigo ENDS END RotacionYDesplazamiento PRCTICA No. 29 NOMBRE: Manipulacin de la pila OBJETIVO: Que el alumno: - Pondr en prctica las instruccines que le permitan introducir y extraer datos de la pila. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

La estructura de una PILA es similar a un montn de libros apilados: los elementos se van ordenando cada uno
detrs del ltimo en l egar (es decir, los libros se van apilando cada uno encima del anterior), pero al sacarlos de la estructura se empieza por el ltimo en l egar, acabando por el primero (al retirar los libros se comienza por el superior,

y se acaba por el que queda abajo del todo). A la operacin de introducir un elemento en una pila se le suele dar el nombre de empujar un elemento (PUSH en ingls). La operacin de extraer un elemento de una pila se le denomina POP. Los elementos que puede almacenar la pila del microprocesador son valores de 16 bits, con lo cual el puntero de
pila se debe incrementar o decrementar 2 unidades a la hora de sacar o introducir valores en la pila (a meter un valor de 16 bits en la pila el puntero de la pila se decrementa en dos unidades, y a la hora de sacar un elemento de la pila el

puntero se incrementa en dos unidades; la pila crece hacia abajo en lugar de hacia arriba). El microprocesador tiene dos registros que se utilizan para gestionar la pila: el SS (Segmento de Pila) y el SP (Puntero de Pila). El par SS:SP da la direccin donde se encuentra el ltimo valor empujado en la pila.
PUSH: Decrementa en 2 unidades el puntero de la pila, es decir, decrementa en 2 unidades el registro SP, y a continuacin almacena en la cima de la pila la palabra especificada en el operando origen asociado a la

instruccin. Formato PUSH origen Ejemplo: PUSH ax ;es equivalente a: SP = SP-2 // MOV ss:[sp], ax El operando origen no puede ser un operando inmediato (ni el registro de segmento CS). POP: Esta instruccin toma una palabra de la cima de la pila y la siten asociado a la instruccin, incrementando, a continuacin, en 2 unidades el puntero de la pila. Formato POP origen Ejemplo: POP ax ; es equivalente a: AX = SS:[SP] // SP = SP + 2
Cuando una instruccin PUSH o POP se ejecuta en un cdigo de programa con el tamao de registro de 32

el

operando

destino

bits, el ensamblador utiliza como valor de transferecencia 4 bytes en lugar de 2 bytes (una palabra), y las operaciones realizadas con ESP se efectan sobre unidades de 4 elementos.
PUSHF: Esta instruccin decrementa en 2 unidades el puntero de la pila y a continuacin, almacena en la cima de la

pila el registro de indicadores (FLAGS). No tiene ningn operando.


POPF: Esta instruccin almacena en el registro de indicadores (FLAGS) la palabra situada en la cima de la pila

aumentando en 2 unidades, a continuacin, el puntero de la pila. No tiene ningn operando.


PUSHAy POPA: Estas instruciones almacenan y sacan de la pila la informacin contenida en los registros siguientes y en el orden siguiente: AX, CX, DX, BX, SP, BP, SI y DI. El valor de SP es guardado en la pila antes de
Pgina de 74

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

38

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

que el primer registro sea guardado. En el caso de utilizar registros de 32 bits la instruccines seran: PUSHAD y POPAD. Todo lo que entra en la pila, tiene que salir de la pila, en orden inverso a como entr. Para situar y sacar palabras de la pila es el siguiente: PUSH AX PUSH BX PUSH CX PUSH DX Rutina del programa POP DX POP CX POP BX POP AX
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 2.13 Instruccines para el stack

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR2_13.ASM ; Instruccines para el stack Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' 5 Variable1 DB Variable2 DD ? Variable3 DD 10,20,30,40,50 Datos ENDS Codigo SEGMENT PARA 'Codigo' InstruccinesParaElStack PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX PUSH ES POP ES PUSHA POPA ; Introduce en la pila el contenido del Segmento Extra ; Extrae de la pila un dato de 16 bist, el cual es guardado en el Segmento Extra ; Introduce los registros en la pila ; Extrae los registros de la pila

RET InstruccinesParaElStack ENDP Codigo ENDS END InstruccinesParaElStack

PRCTICA No. 30 NOMBRE: Definicin de cadenas OBJETIVO: Que el alumno: - Definir diferentes cadenas en el segmento de datos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

39

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Se familiarice con el ambiente de desarrol o programas que se presentan en el manual.

en la que codificar, grabar, editar, compilar y ejecutar los


Direccin Direccin Carcter DECIMAL HEXADECIMAL ASCII 0 0 I 1 1 N 2 2 F 3 3 O 4 4 R 5 5 M 6 6 A 7 7 T 8 8 I 9 9 C 10 A A 11 B $ Carcter BINARIO 1001001 1001110 1010000 1001111 1010010 1001101 1000001 1010100 1001001 1000011 1000001 100100 Carcter DECIMAL 73 78 70 79 82 77 65 84 73 67 65 36

INTRODUCCIN:

STRING o CADENA Ms de un carcter contiguo, referenciado por una variable y almacenado en alguna localidad de memoria. Para poder almacenar una cadena en memoria es necesario definirla utilizando la siguiente sintaxis : NombreVariable Directiva Dato
Carrera1 INFORMTICA$ DB

Carrera2 DB SISTEMAS,$ Se utiliza (DB) como directiva para definir una variable string y el signo de pesos, como delimitador de la cadena. Al escribir la cadena ser almacenada en la memoria en forma binaria, utilizando un byte por cada carcter, siendo estos de tipo ASCII.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 3.1 Definicin de string

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_1a.ASM ; Definicin de string y desplegado en pantalla 'STACK' Pila SEGMENT PARA STACK DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' INFORMTICA$ Variable1 DB Variable2 DB SISTEMAS,$ Datos ENDS Codigo SEGMENT PARA 'Codigo' DefinicinDeString PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos ;Asignar la direccin de los datos del programa en AX MOV DS, AX ;Copiar la direccin de AX al registro de segmento de datos DS LEA DX, Variable1 ; Tomar la direccin efectiva de Variable1 en DX LEA DI, Variable2 ; Tomar la direccin efectiva de Variable2 en DI RET DefinicinDeString ENDP ;Fin del procedimiento principal Codigo ENDS ;Fin del segmento de cdigo END DefinicinDeString ;Fin del programa ;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_1b.ASM
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

40

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

;Programa similar al anterior que despliega en pantalla dos cadenas utilizando directivas ;en modo texto y con registros de 16 bits .286 .MODEL SMALL ;Modelo de compilacin pequeo .CODE ;Inicio del codigo Principal: MOV AX, @DATA ;Asignar la direccin de los datos del programa en AX MOV DS, AX ;Copiar la direccin de AX al registro de segmento de datos DS LEA DX, Texto ;Tomar la direccin de la variable Texto en DX MOV AH, 9 ;Mover un nueve en AL que es la funcin para desplegar una cadena INT 21H ;Provocar la interrupcin veintiuno MOV AX,4C00H ;Moverle 4C en AH que es la funcin para terminar el programa INT 21H ;Provocar la interrupcin veintiuno .DATA ;Inicio del sgmento de datos Texto DB 'Hola$' ;Variable Texto de tipo BYTE inicializada con Hola el $ indica el fin de la cadena ;Inicio del segmento de pila de tamao por defecto de 64Kb .STACK END Principal ;Fin del programa ;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_1c.ASM ;Programa similar al anterior que despliega en pantalla dos cadenas utilizando directivas ;en modo grfico y con registros de 32 bits .386 .model flat, stdcall ;Modelo plano con llamadas estandar option casemap :none ; Sensible al contexto ; Incorporacin de cdigo fuente (inc) y cdigo mquina no ejecutable (lib) include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .code Principal: jmp @F szDlgTitle db "Programa Mnimo en MASM32",0 ;Ttulo de la caja de mensaje szMsg db " I n f o r m a t i c a ",0 ;Texto dentro de la caja @@: push MB_OK push offset szDlgTitle push offset szMsg push 0 call MessageBox push 0 call ExitProcess end Principal ;Fin del programa ;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_1d.ASM ;Programa similar al anterior que despliega en pantalla dos cadenas utilizando directivas ;en modo grfico y con registros de 32 bits .386 .model flat, stdcall ;Modelo plano con llamadas estandar
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

41

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

option casemap :none

; Sensible al contexto ; Incorporacin de cdigo fuente (inc) y cdigo mquina no ejecutable (lib) include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .code Principal: jmp @F szDlgTitle db "Programa Mnimo en MASM32",0 ;Ttulo de la caja de mensaje szMsg db " I n f o r m a t i c a ",0 ;Texto dentro de la caja @@: push MB_OK ;MB_OK constande ANSI igual a cero existe dentro de WINDOWS.INC invoke MessageBox,0,ADDR szMsg,ADDR szDlgTitle,MB_OK invoke ExitProcess,0 end Principal ;Fin del programa PRCTICA No. 31 NOMBRE: Almacenamiento en memoria de cadenas OBJETIVO: Que el alumno: - Guardar cadenas en memoria. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

STOS : Almacenar una cadena de caracteres. STOS/ STOSB/ STOSW (80286/80386) Almacena AL (byte) o AX (palabra) en ES: [DI] La instruccin STOS transfiere el contenido del registro AL o del AX al byte de memoria o palabra de memoria sealada por ES:DI. El operando destino debe ser direccinable desdel registro ES, no se permite anulacin de segmentos. Sintaxis : STOS destino _ cadena STOSB STOSW EJEMPLO: MOV ECX , 0FFCCAAH (solo 80386)
LEA MOV EDI , VARIABLE AX , -

REP

STOSB

STOS : Almacena los contenidos del registro AL, AX, EAX en un byte, palabra o palabra doble en memoria, la direccin de memoria siempre est sujeta a los registros ES:DI. Dependiendo de la bandera de direccin, STOS incrementa o disminuye el registro DI en 1 para byte, 2 para palabra y 4 para palabra doble. Un uso prctico de STOS con un prefijo REP es para iniciar el rea de datos a cualquier valor especfico, tal como limpiar el rea de despliegue a blancos. Puede establecer el nmero de bytes, palabras o palabras dobles en el EX. Con el siguiente programa se borra la zona de memoria : En este otro ejemplo se ilustra la misma tarea excepto que el contador cambia a un 5 y se repite la instruccin STOSW en vez de la instruccin STOSB. Adems, tambin se utiliza el registro AX en vez del registro AL.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 3.2 Almacenamiento en memoria

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria


Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

42

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_2.ASM ; Definicin de string 'STACK' Pila SEGMENT PARA STACK DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' "INFORMTICA$" Variable1 DB Variable2 DB "SISTEMAS","$" Datos ENDS Codigo SEGMENT PARA 'Codigo' DefinicinDeString PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos,ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV ES, AX LEA MOV CLD MOV REP LEA MOV CLD MOV REP DI, Variable1 CX,10 AL,'R' STOSB DI, Variable2 CX,4 ; Tomar la direccin efectiva de Variable1 en DX ; Al contador se le asigna un diez ; Borrar sealizador de direccin para autoincremento de DI ; Asigna a la parte baja del registro AX el dato R 52H ; Asigna el byte almacenado en Al a la direccin de DI ; Tomar la direccin efectiva de Variable2 en DI ; Al contador se le agina un cuatro ; Borrar sealizador de direccin para autoincremento de DI ; Asigna al registro AX el dato E 45H ; Asigna una palabra almacenado en AX a la direccin de DI

AX,'E' STOSW

RET DefinicinDeString Codigo ENDS END

ENDP DefinicinDeString

PRCTICA No. 32 NOMBRE: Movimiento de cadenas OBJETIVO: Que el alumno: - Har uso de las instruccines que le permitan efectuar movimientos a distintos lugares en la memoria. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

MOVS : Mover una cadena de caracteres. MOVS / MOVSB / MOVSW ( 80286 / 80386) Descripcin : Desplaza byte / palabra DS:[SI] o ES:[DI] Desplaza byte / palabra DS:[ESI] o ES:[EDI] Las instruccines MOV copian el byte o palabra en [SI] al operando destino byte o palabra en ES:[DI]. El operando destino debe ser direccinable desdel registro ES. Los segmentos anulados no son posibles para el operando destino, pero el operando fuente puede utilizar un segmento anulado.

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

43

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Sintaxis :

MOVS CadenaDestino, CadenaFuente MOVSB MOVSW Formas de la instruccin MOVS MOVSB [DI] = [SI] : DI = DI 1 ; SI = SI 1 (byte transferido) MOVSW [DI] = [SI] : DI = DI 2 ; SI = SI 2 (palabra transferida) MOVSD [DI] = [SI] : DI = DI 4 ; SI = SI 4 (doble palabra transferida) MOVS BYTE1, BYTE2 [DI] = [SI] : DI = DI 1 ; SI = SI 1 (si BYTE 1 y BYTE 2 son bytes) MOVS WORD1, WORD2 [DI] = [SI] : DI = DI 2 ; SI = SI 2 (si WORD1 y WORD 2 son palabras) MOVS DWORD 1, DWORD2 [DI] = [SI] : DI = DI 4 ; SI = SI 4 (si DWORD1 Y DWORD2 son dobles) MOVS : Combina con un prefijo REP y una longitud en el CX puede mover cualquier nmero de caracteres donde usted no codifica los operandos, la instruccin se parece a esto : [ETIQUETA: ] REP MOVS [ ES : DI, DS :SI] Para la cadena receptora, los registros segmento: desplazamiento son ES:DI; para la cadena emisora los registros Segmento: desplazamiento son DS:SI, como resultado al inicio de un programa .EXE inicia el registro ES junto con el registro DS, y antes de ejecutar el MOVS, utilice LEA para iniciar los registros DI y SI. Dependiendo de la bandera de direccin, MOVS incrementa o disminuye los registros DI y SI en 1 para un byte, en 2 para una palabra y en 4 para palabra doble. SINTAXIS : MOVS cadena destino, cadena_ fuente MOVSB (transfiere un byte) con prefijo de repeticin REP, es ideal para esta tarea como se ilustra en el siguiente programa :
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 3.3 Instruccines para manipulacin

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_3a.ASM ; Mover una cadena de caracteres Pila ENDS Datos SEGMENT PARA 'Datos' Variable1 DW 5 Variable2 DB "Sistemas e Informatica$" Variable3 DB "Departamento$" Datos ENDS Codigo SEGMENT PARA 'Codigo' InstruccinesParaManipulacion PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX
;===========================

MOV LEA LEA CLD REP

CX, Variable1 DI, Variable2 SI, Variable3 MOVS

; Num De byte/palabras ; Direccin de Variable2 ; Direccin de Variable3 ; borrar direccin Variable2, Variable3

;===========================

;Empleo de la instruccin MOVSB LEA DI, Variable2 ; direccinar Variable2 LEA SI, Variable3 ; direccinar Variable3 CLD ; borrar direccin
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

44

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

MOV REP

CX,5 MOVSB

; cargar contador ; transferir 5 bytes

;===========================

RET ENDP InstruccinesParaManipulacion Codigo ENDS END InstruccinesParaManipulacion PRCTICA No. 33 NOMBRE: Comparacin entre cadenas OBJETIVO: Que el alumno: - Har uso de las instruccines que le permitirn efectuar comparaciones entre cadenas. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

CMPS : Comparar cadenas. CMPS/CMPSB/CMPSW (80286/80386) Compara bytes / palabras ES:[DI] o DS:[SI] de DS:[ESI] Sintaxis : CMPS fuente _ cadena , destino _ cadena CMPSB CMPSW CMPS : Compara el contenido de una localidad de memoria (direccinada por DS:SI) con la que otra localidad de memoria (direccinada por ES:SI) dependiendo de la bandera de direccin, CMPS disminuye tambin los registros SI y DI en 1 para bytes, 2 para palabras y cuatro para palabras dobles. Proporciona una comparacin alfanumrica, una comparacin de acuerdo a los valores ASCII. Considere la comparacin de dos cadenas que contienen JEAN y JOAN. Una comparacin de izquierda a derecha. J :J iguales E : O diferentes A : A iguales N : N iguales Una comparacin de los cuatro bytes termina con una comparacin de N con N (iguales).
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 3.3 Instruccines para manipulacin

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_3b.ASM ; Comparacin entre cadenas Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' "INFORMATICA$" Variable1 DB Variable2 DB "INFORMATICA$" Datos ENDS Codigo SEGMENT PARA 'Codigo' ComparacionEntreCadenas PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

45

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX MOV ES,AX


;===========================

MOV SI, OFFSET Variable1 DI, OFFSET Variable2 CLD CX, 12 MOV REPE CMPS Variable1 , Variable2
MOV ;=========================== MOV

MOV SI, OFFSET Variable1 DI, OFFSET Variable2 CMPS Variable1 , Variable2 CMPS DS:BYTE PTR [SI], ES:[DI] LEA
LEA

;===========================

SI , Variable1 DI , Variable2 CMPS Variable1 , Variable2

RET ComparacionEntreCadenas ENDP Codigo ENDS END ComparacionEntreCadenas

PRCTICA No. 34 NOMBRE: Carga de cadenas OBJETIVO: Que el alumno: - Har uso de las instruccines que le permitan tomar la direccin de las cadenas. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

LODS : Carga una cadena de caracteres. Formas de la instruccin LODS. Simblica Funciones LODSB AL = [SI] ; SI = SI 1 LODSW AX = [SI] ; SI = SI 2 LODSD EAX=[SI] ;SI=SI 4 LODS LIST AL = [SI] ;SI=SI 1 (si LISTA es un byte) LODS DATA1 AX = [SI] ; SI = SI 2 (si DATO1 es una palabra) LODS DATA4 EAX= [SI] ; SI = SI 4 (si DATO es una doble palabra) Sintaxis : LODS CadenaFuente LODSB LODSW LODS : Carga al AL con un byte, el AX con una palabra o el EAX con una palabra doble desde la memoria : la direccin de memoria est sujeta a los registros DS:SI, aunque puede pasar por alto el SI, dependiendo de la bandera de direccin, la operacin tambin incrementa o disminuye el SI en 1 para byte, en 2 para palabra y en 4 para palabra doble. Ya que una operacin LODS l ena el registro ; no existe razn prctica para utilizar con el a el prefijo REP, para la mayor parte de los propsitos, una sencil a instruccin MOV es adecuada. SCAS : Rastrear cadenas. SCAS / SCASB / SCASW (80286 / 80386)

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

46

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales In stitutoTecnolgico No 38

SCAS : Esta instruccin compara el registro AL con un bloque de bytes de memoria, al registro AX con un bloque de palabras de la memoria o al registro EAX con un bloque de dobles palabras de memoria, SCAS resta la localidad de memoria de AL, AX o EAX sin alterar ni el registro ni la localidad de la memoria. Difiere de CMPS en que SCAS busca una cadena por un valor de byte, palabra o palabra doble especificada. SCAS compara el contenido de la localidad de memoria (direccinada por ES:DI) con el contenido de registro AL. AX, EAX. Dependiendo de la bandera de direccin, SCAS tambin incrementa o disminuye el registro DI en 1 para bytes, 2 para palabras y cuatro para palabras dobles. AL final de la ejecucin, SCAS establece las banderas AF, CF, DF, PF, SF y ZF. Cuando se combina con el prefijo REP y una longitud en el CX, SCAS puede buscar en cadenas con cualquier longitud.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 3.3 Instruccines para manipulacin

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_3c.ASM ; Carga de cadenas Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' "INFORMTICA$" Variable1 DB Variable2 DB ? Datos ENDS Codigo SEGMENT PARA 'Codigo' CargaDeCadenas PROC FAR ASSUME CS:Codigo, DS:Datos,ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX ;========================Copiar los caracteres del uno al once de Variable1, desde la posicin de MOV CX,11 ;Variable2 mas once, hasta que CX igual a cero (Quedando invertida la cadena) LEA SI, Variable1 ;SI toma la direccin efectiva de donde inicia Variable1 LEA DI, Variable2+11 ;DI toma la direccin efectiva de donde inicia Variable2 ms 11 bytes CLD ;Se borra la bandera de direccin Repite: LODSB ;Carga un byte en AL de la direccin que tiene SI MOV [DI],AL ;El contenido de AL es copiado a la direccin de DI DEC DI ;Decrementa en una unidad la direccin de DI LOOP Repite ;Regresa a la etiqueta Repite en tanto CX diferente de cero
;===========================

RET CargaDeCadenas Codigo ENDS END

ENDP CargaDeCadenas

PRCTICA No. 35 NOMBRE: Interrupciones de E/S de cadenas OBJETIVO: Que el alumno: - Practicar con las interrupciones y sus funciones, que le permitirn leer o escribir cadenas. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

47

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales In stitutoTecnolgico No 38

Se familiarice con el ambiente de desarrol o programas que se presentan en el manual.

en la que codificar, grabar, editar, compilar y ejecutar los

INTRODUCCIN:

Existen tres tipos de interrupciones; BIOS Sistema Bsico de Entrada/Salida (Basic Imput Otput System),
S.O. Sistema Operativo, comnmente l amado DOS por Sistema Operativo de Disco (Disk Operation System) y las de Hardware que son las que se provocan entre si los dispositivos electrnicos para l amar la atencin entre el os Procesador,Memoria,Teclado,.... En este manual seran usadas solamente las de BIOS y S.O; siendo a mbas

provocadas AH,AL.

por

la

instruccin INT

NmeroInterupcin

en

donde

previamente

se

le

asign

los

registros

especificados para esa funcin, los datos que necesite y a la mitad superior del registro AX la funcin que debe l evar acabo la interrupcin, de existir una subfuncin deber estar asignada en la parte baja del mismo registro

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 3.4 Interrupciones para e/s de strings

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR3_4.ASM ; Interrupciones para e/s de strings Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' Variable2 DB "SISTEMAS",0AH,0DH,"$" ;0AH Avance de lnea 0DH Retorno carro Variable1 DB "INFORMATICA$" ;$ Fin de la cadena Datos ENDS Codigo SEGMENT PARA 'Codigo' InterrupcionesParaESDeStrings PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX ;=========================== Desplegar en pantalla la cadena ubicada en Variable2 MOV DX,OFFSET Variable2 ;Tomar en DX el desplazamiento de donde inicia Variable2 MOV AH,9 ;La funcin 9 indica desplegar una cadena, cuya direccin se encuentra en DX INT 21H ;Provocar la interrupcin 21H del S.O. ;=========================== Desplegar en pantalla la cadena ubicada en Variable1 LEA DX,Variable1 ;Tomar en DX La direccin de donde inicia Variable1 MOV AH,9 ;La funcin 9 indica desplegar una cadena, cuya direccin se encuentra en DX INT 21H ;Provocar la interrupcin 21H del S.O. RET InterrupcionesParaESDeStrings ENDP Codigo ENDS END InterrupcionesParaESDeStrings PRCTICA No. 36 NOMBRE: Manipulacin del disco con interrupciones de S.O. OBJETIVO: Que el alumno: - Podr leer y escribir datos en un archivo.
Cd. Victoria Tamaulipas, Mxico

de

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

48

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.

INTRODUCCIN:
****************************************************** ************************************************************

****************************

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 4.1 Definicin de interrupciones

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR4_1.ASM ; Lectura de un sector de un disco removible de 1.4Mb Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' Variable1 DB 512 DUP ('R'),"$" Datos ENDS Codigo SEGMENT PARA 'Codigo' ManipulacionDisco PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX
;===========================

; Asegurarse de que exista un medio removible BL 0 Defecto, 1 A, 2 B, etc ; Despus de la interrupcin si AX = 00H el dispositivo es removible y si AX = 01FH ; siempre y cuando la bandera de carro no se encuentre encendida, despus de la interrupcin. MOV BL,1 ; Unidad A MOV AX,4408H ; Funcin 4408H Dedectar si el equipo cuenta con la unidad INT 21H
;===========================

es fijo;

; Lectura de unsector del disco MOV AH,44H ; Funcin Lectura MOV AL,04H ; Subfuncin lectura MOV BL,1 ; Unidad 0 Default, 1 A, etc. LEA DX,Variable1 ; Direccin donde se dejar lo leido INT 21h ; Provocar la interrupcin, para hacer lo anterior especificado
;===========================

MOV AH,9 ;Funcin desplegar cadena LEA DX,Variable1 ; Direccin donde se encuentra la cadena INT 21H ; Provocar la interrupcin, para hacer lo anterior especificado RET ManipulacionDisco ENDP Codigo ENDS END ManipulacionDisco

PRCTICA No. 37 NOMBRE: Manipulacin del disco con interrupciones de BIOS OBJETIVO:
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

49

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Que el alumno: - Podr leer y escribir uno o ms sectores en el disco. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

La interrupcin 17H del BIOS permite leer, escribir, formatear y verificar el estado de los discos. El uso de esta interrupcin puede ocasionar el deterioro de los datos del disco, cuando se especifica la funcin de formateo o escritura sin tener el cuidado suficiente. Se recomienda usar solamente unidades removibles, con la finalidad de que puedan ser formateadas para restableser su funcionamiento. La mayora de las funciones de la interrupcin 13H alteran la bandera de acarreo, si hubo un xito o fracaso, regresando el cdigo de error en el registro AH. El BIOS mantiene en su rea de datos informacin acerca de cada dispositivo y su Estado. 40:41H para el rea de datos de unidades de disco flexible y en 40:74H para discos duros. Si una operacin sobre el disco regresa un error, este podr ser restablecido con la funcin 00H y se podr reintentar
la operacin nuevamente. Si el error persiste se deber mostrar un mensaje de error en donde se especifique el

problema y la posible solucin. Cdigo Estado 00H Sin error 01H 02H
03H 04H 05H 06H

Comando incorrecto, no reconocido controlador Marca de direccin en disco no encontrada Intento de escribir en un disco protegido Pista/sector no vlido Fal o en la operacin de restablecer Se retir el disco flexible desde acceso Parmetros de la unidadd erroneos Acceso directo a memoria (DMA) rebasado

Cdigo Estado 09H Intento de DMA de cruzar una frontera de 64K el L/E por el 10H Encontr un Control Cclico Redundante (CRC) incorrecta 20H Fal o del controlador (Hardware) 40H Fal o en operacin de bsqueda (Hardware) 80H Fal o en el dispositivo al responder (Tiempo excedido, no Existe disco, puerta abierta) el ltimo 0AAH Unidad no preparada 0BBH 0CCH Error no definido Fal o al escribir

07H
08H

Para restablecer el sistema de disco flexible: MOV AH,00H; Funcin para restablecer el disco MOV DL,80H ;Disco duro INT 13H
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 4.3 Tipos de Interrupciones

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR4_3.ASM ; Programa que permite leer el primer sector de un disco ubicado en la unidad A Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' 512 DUP(R) ;Reserva un espacio de 512 bytes iniciados con R Variable1 DB Datos ENDS Codigo SEGMENT PARA 'Codigo'
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

50

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

ManipulacionDico PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV MOV MOV MOV MOV MOV LEA ; Funcin para leer uno o ms sectores del disco AH,2 AL,1 ; Cantidad de sectores (1...) CH,0 ; Nmero de la PISTA, en este caso es la CERO (0...) CL,1 ; Nmero de la SECTOR, en este caso es la UNO (1...) DH,0 ; Nmero de la CARA, en este caso es la CERO ( 0 ...) DL,0 ; Nmero de la UNIDAD, en este caso es la CERO (0 Defecto, 1 A, 2 B, 3 C) BX,Variable1 ; Direccin donde se dejaran los datos leidos, ; dejando en AH el resultado de la operacin y en AL la cantidad de sectores leidos 13H ; Interrupcin de BIOS para manipular medios de almacenamiento secundarios

INT (Discos)

RET ManipulacionDico Codigo ENDS END

ENDP ManipulacionDico

PRCTICA No. 38 NOMBRE: Manipulacin del video con interrupciones de BIOS OBJETIVO: Que el alumno: - Podr introducir y extraer datos de la memoria de video, haciendo uso de interrupciones . - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

La pantal a es una mal a de posiciones direccinables, en donde puede ser posicionado el cursor o carcter,
en la memoria de video y posteriormente es reflejada en el monitor, normalmente tiene 25 renglones y 80 columnas en modo texto y en mdo grfico 800 columnas y 600 renglnes en donde cada posicin es un pxel, punto o dot.

Para hacer referencia a la esquina superior Izquierda es el rengln cero y columna cero.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 4.3.2 Interrupciones enternas del BIOS


MATERIAL Y EQUIPO NECESARIO:

SUBTEMAS

Ordenador con 3 o posterior para 16 bits.


METODOLOGIA:

sistema

operativo

DOS

posterior,

con

el

MACRO

y TURBO

ASSEMBLER

versin

1. El alumno crear y ejecutar el programa PR4_3_2a.ASM. En caso de que por error al transcribir el texto, el
alumno cometiese errores de sintaxis indicados por el compilador, deber corregirlos hasta lograr la correcta

ejecucin del programa. 2. El maestro explicar la funcin de las instruccines utilizadas en el programa. 3. El alumno almacenar una cadena, tomada desde el teclado, para finalmente desplegarla. 4. El alumno modificar el programa PR4_3_2a.ASM. 5. El alumno analizar los resultados. 6. El alumno elaborar un reporte.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

51

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales Inst itutoTecnolgico No 38

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR4_3_2a.ASM ;Programa para borrar toda la pantalla haciendo uso de interrupcin de BIOS Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Codigo SEGMENT PARA 'Codigo' InterrupcionesParaESDeStrings PROC FAR ASSUME CS:Codigo, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX ; Borrado de pantalla usando interrupcin del BIOS MOV CX,0000 ;Esquina superior izquierda MOV DX,2479H ;Esquina inferior derecha MOV BH,7 ;Atributo normal (Blanco sobre negro) MOV AH,6 ;Funcin enrollar pantalla hacia arriba MOV AL,0 ;Toda la pantalla, puede especificarse el nmero de lneas INT 10H ;Funcin para manipulacin del VIDEO RET InterrupcionesParaESDeStrings ENDP Codigo ENDS END InterrupcionesParaESDeStrings PRCTICA No. 39 NOMBRE: Manipulacin del teclado con interrupciones de BIOS OBJETIVO: Que el alumno: - Podr introducir y extraer datos del teclado y el bfer, haciendo uso de interrupciones. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN: La interrupcin 16H permite efectuar operaciones bsicas con el teclado, proporcionando diferentes funciones

especificadas en el octeto de AH. 00H Lectura de un carcter de las 83 teclas disponibles; La operacin verifica el bfer del teclado en busca de un carcter. Si ninguno est presente, la operacin espera a que el usuario presione alguna tecla, si se encuentra alguna, lo regresa en AL y su cdigo de rastreo en AH. Si el carcter pulsado es extendido AL contiene 00. 01H Determina si un carcter est presente. Es similar a la anterior, pero con la diferencia de que si un carcter es ingresado en el bfer del teclado, la operacin pone a cero la bandera ZF; si no est presente ningn carcter la operacin pone a uno la bandera ZF y no espera. 02H Regresa el estado actual de la tecla SHIFT. Esta operacin regresa en AL el estado de la tecla shift desde el rea de datos del BIOS, ubicada en la localidad 417H(40:17H). Si el shift izquierdo esta presionado, en AL el bit uno, si el shift derecho esta presionado, en AL el bit cero. 05H Escritura en el teclado. Permite que desde un programa se pueda incertar caracteres en el bfer del
teclado, sin tener que presionar ninguna tecla, hasta que se l ene. Cargue el carcter ASCII en CH y el cdigo

de rastreo en CL. 10H Lectura de un carcter del teclado. La operacin es similar a la funcin 00, pero aceptando caracteres
extendidos, como F11, F12...Verifica el estado del bfer del teclado para determinar si se ha ingresado un

carcter. Si ninguno est presente, la operacin espera que el usuario presione una tecla. Si tiene un carcter
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

52

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolg ico No 38

lo regresa en AL y su cdigo de rastreo en AH. Si la tecla pulsada es una funcin extendida, el carcter en AL es 00, para Inicio y F1, F11 Y F12; pero en las teclas duplicadas como Inicio y RePg, regresa E0H.
11H 12H Determina si se encuentra un carcter. Es parecida a la funcin 01H, excepto que reconoce el teclado Regresa el estado actual del Shift. Es similar a la funcin , excepto que puede regresar el estado del

ampliado. shift extendido en AL. Teclas de funcin extendida y cdigo de rastreo. Una tecla de funcin extendida como F1 o Inicio solicitan una accin en lugar de enviar un carcter. . Como programador se puede especificar que presionando la tecla Inicio se coloque el cursor en la esquina superior izquierda Tecla AH AL Cada tecla tiene un cdigo de rastreo ,
empezado con 01 para Esc. Pormedio de stos cdigos un programa puede determinar el origen de cualquier tecleo. Provocando la interrupcin 16H con la funcin 10H y pulsando el carcter,
A * * Ins 1EH 09H Arruba 29H Tec. Nm. 52 41H 2AH 29H Cero o E0 Ampliado

retorna lo siguiente:
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 4.3.2 Interrupciones enternas del BIOS

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR4_3_2b.ASM ; Manipulacin del teclado con interrupciones (BIOS) Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' ;$ Fin de la cadena Msg DB "Pulsaste la tecla uno$" Datos ENDS Codigo SEGMENT PARA 'Codigo' ManipulacinDelTeclado PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV AH,10H ; funcin para leer un carcter INT 16H CMP AL,31H; Compara si el carcter pulsado es un uno JE PRESIONADO ; Si es igual Salta a la etiqueta PRESIONADO JMP FIN PRESIONADO:LEA DX, Msg MOV AH,9 INT 21H ; Desplegar la cadena de shift presionado FIN: RET ManipulacinDelTeclado ENDP Codigo ENDS END ManipulacinDelTeclado PRCTICA No. 40 NOMBRE: Manipulacin del puerto paralelo con interrupciones de BIOS OBJETIVO: Que el alumno:
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

53

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Podr introducir y extraer datos del puerto paralelo, haciendo uso de interrupciones . Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.

INTRODUCCIN:

La impresora debe entender la seal enviada desde el procesador, por ejemplo, para saltar una pgina,
avanzar lnea o tabular. El procesador tambin debe entender las seales enviadas desde la impresora, como si se encuenta encendida, si tiene papel, si esta en lnea. Desafortunadamente los diferentes tipos de impresoras envian

seales diferentes, lo cual hace que el crear la interfaz entre el programa y el ordenador tenga que ser ms verstil.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 4.3.2 Interrupciones externas del BIOS

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR4_3_2c.ASM ;Envio de una cadena de caracteres a la impresora, haciendo uso del archivo lgico del S.O. LPT1 con interrupciones de BIOS Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' "INFORMATICA$" Variable1 DB ;$ Fin de la cadena Datos ENDS Codigo SEGMENT PARA 'Codigo' InterrupcionesParaESDeStrings PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX LEA BX, Variable1 ; Rutina para enviar un carcter a la vez al archivo LPT1 MOV DX,0 ; LPT1 MOV AH,1 ; Funcin para indicar el inicio INT 17H ; Interrupcion de BIOS para Inicia la impresora REPITE: MOV AL,Variable1[BX] ; Mover el contenido de la Variable1 en la posicin BX a AL CMP AL,$ ; Comparar si el contenido de AL es el carcter usado como fin de la cadena JE FIN ; Si es IGUAL salta a la etiqueta FIN MOV AH,0 INT 17H INC BX JMP REPITE ; Fin del procedimeiento principal, regresando el control a quien lo llam FIN: RET InterrupcionesParaESDeStrings ENDP Codigo ENDS END InterrupcionesParaESDeStrings PRCTICA No. 41 NOMBRE: Definicin de macros internas OBJETIVO: Que el alumno: - Experimentar con la definicin de macros internas.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

54

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales Insti tutoTecnolgico No 38

Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.

INTRODUCCIN:

Las macros son una forma de subprogramacin al igual que los procedimientos, con la diferencia que stas en
cada punto en donde son l amadas durante el proceso de compilacin, se incorpora el cdigo completo de la macro, deben de especificarse fuera de cualquier segmento del programa, se les l ama internas porque se encuentran en el mismo archivo en donde reside el programa que las usa, su ejecucin es ms rpida que un procedimiento, pero el cdigo objeto generado es de mayor tamao, para l amarlas slo basta con usar su nombre y de existir parmetros, estos debern ser separados por al menos un blanco, cuando son definidas las macros con parmetros, cada uno es separados por una coma entre el os, todas las etiquetas usadas dentro de una macro debern ser declaradas como locales, todos los registros usados en una macro deben de ser guardados en la pila al iniciar y antes de terminar deben de ser restaurados en orden inverso a como fueron almacenados, con la finalidad de no alterar en nada la

lgica del programa que las l ama.


CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

5.1 Definicin Ensamble

TEMA 5.2 Parmetros y etiquetas

5.3

SUBTEMAS 5.4 Ventajas y desventajas

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR5_1a.ASM ; Definicin de macros internas ClrScr MACRO ;Borra toda la pantalla no requiere parmetros PUSH AX ;Guardar contenido de los registros en la pila
PUSH BX PUSH CX PUSH DX

MOV AH,6 MOV AL,0 MOV BH,07


MOV CH,00

MOV CL,00
MOV DH,25

MOV DL,80 INT 10H POP DX POP CX POP BX POP AX ENDM

;Funcin Enrolla pantalla activa hacia arriba ;Nmero de lneas, cero para toda la pantalla ;Atributo usado para borrar ;Fila esquina superior izquierda ;Columna esquina superior izquierda ;Fila esquina inferior derecha ;Columna equina inferior derecha ;Interrupcin de video ;Extraer contenido de los registros de la pila

;Fin de la macro ClrScr

WRITEXY MACRO X, Y, Cadena ;Escribe el contenido de Cadena en Renglon Y Columna X PUSH AX PUSH DX MOV AH,15 ;Funcin obtener pantalla actual INT 10H ;Funcin posicionar cursor MOV AH,2 MOV DH,Y ;Fila MOV DL,X ;Columna INT 10H MOV AH,9 ;Funcin Desplegar cadena LEA DX,Cadena ;Direccin de cadena a desplegar INT 21H ;Interrupcin del Sistema Operativo POP DX
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

55

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

POP AX ENDM
WRITE MACRO

Msg

;Escribe el contenido de Msg que llega como parmetro

PUSH AX
PUSH DX

MOV AH,9 LEA DX,Msg INT 21H POP DX POP AX ENDM Delay MACRO TIEMPO
LOCAL CICLO1,CICLO2 ;CICLO1,CICLO2 SON ROTULOS LOCALES

PUSH PUSH MOV CICLO2:

CX ;GUARDA VALORES DX Y CX ORIGINAL EN PILA DX DX,TIEMPO MOV CX,0FFFFH CICLO1: DEC CX CMP CX,0 ;Comparar el contenido de CX con Cero JNE CICLO1 ;Saltar si la comparacin anterior no es igual DEC DX ;Decrementar en una unidad el contenido de DX CMP DX,0
JNE CICLO2

POP POP ENDM Pila

DX CX

SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' "INFORMATICA","$" ;$ Fin de la cadena Variable1 DB Variable2 DB "SISTEMAS","$" Datos ENDS Codigo SEGMENT PARA 'Codigo' MacrosInternas PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX ClrScr WriteXY 1 1 Variable1 ;Escribir el contenido de Variable1 en rengln 1 columna 1 Delay 0FFFFH ;Retardo de FFFFh tiempos Write Variable2 ;Desplegar el contenido de Variable2 en la posicin donde cursor el Delay 0FFFFH Writexy 0ah 0AH Variable2 Delay 0FFFFH Write Variable1 RET Codigo MacrosInternas ENDP ENDS END MacrosInternas

se

encuentre

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

56

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

PRCTICA No. 42 NOMBRE: Definicin de macros externas OBJETIVO: Que el alumno: - Experimentar con la definicin de macros externas. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Se les l ama macros externas, debido a que el cdigo de las macros existe en un archivo diferente al que las
usa, permitiendo que se puedan agrupar en archivos, macros que realizan funciones parecidas y as formar una biblioteca de macros. Requiriendo la siguente directiva de pre compilacin para incorporar el cdigo de las macros en el achivo que las usar: #INCLUDE NoArMa.INC Lo cual significa Nombre Del Archivo de Macros y es opcional la extencin y la ruta, si sta es omitida se considera que el achivo que se incluira se encuentra en la unidad y directorio

desde donde se efectua la compilacin. Para el usuario la compilacin, internas o

ligado

ejecucin;

seran

idnticas

haber

util izado

macros

externas; pero en el momento de la compilacin se tardar unas fracciones de tiempo ms al usar las macros externas

y es resultado de la bsqueda e incorporacin del archivo de macros en el programa que las usar.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

5.1 Definicin Ensamble

TEMA 5.2 Parmetros y etiquetas

5.3

SUBTEMAS 5.4 Ventajas y desventajas

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;NoArMa.INC Nombre del Archivo de Macros Incluido ;Puede ser guardado con cualquier nombre e incorporado a cualquier programa ; que demande el uso de alguna de las macros existentes en este archivo ;Macros existentes ClrScr, WriteXY, Write, Dalay ClrScr MACRO ;Borra toda la pantalla no requiere parmetros PUSH AX ;Guardar contenido de los registros en la pila
PUSH BX PUSH CX PUSH DX

MOV AH,6 MOV AL,0 MOV BH,07


MOV CH,00

MOV CL,00
MOV DH,25

MOV DL,80 INT 10H POP DX POP CX POP BX POP AX ENDM

;Funcin Enrolla pantalla activa hacia arriba ;Nmero de lneas, cero para toda la pantalla ;Atributo usado para borrar ;Fila esquina superior izquierda ;Columna esquina superior izquierda ;Fila esquina inferior derecha ;Columna equina inferior derecha ;Interrupcin de video ;Extraer contenido de los registros de la pila

;Fin de la macro ClrScr

WRITEXY MACRO X, Y, Cadena ;Escribe el contenido de Cadena en Rengln Y Columna X PUSH AX PUSH DX MOV AH,15 ;Funcin obtener pantalla actual INT 10H ;Funcin posicionar cursor MOV AH,2 MOV DH,Y ;Fila
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

57

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

MOV DL,X INT 10H MOV AH,9 LEA DX,Cadena INT 21H POP DX POP AX ENDM
WRITE MACRO

;Columna ;Funcin Desplegar cadena ;Direccin de cadena a desplegar ;Interrupcin del Sistema Operativo

Msg PUSH AX PUSH DX MOV AH,9 LEA DX,Msg INT 21H POP DX POP AX ENDM

;Escribe el contenido de Msg que llega como parmetro

Delay MACRO TIEMPO


LOCAL CICLO1,CICLO2 ;CICLO1,CICLO2 SON ROTULOS LOCALES

PUSH PUSH MOV CICLO2:

CX ;GUARDA VALORES DX Y CX ORIGINAL EN PILA DX DX,TIEMPO MOV CX,0FFFFH CICLO1: DEC CX CMP CX,0 ;Comparar el contenido de CX con Cero JNE CICLO1 ;Saltar si la comparacin anterior no es igual DEC DX ;Decrementar en una unidad el contenido de DX CMP DX,0
JNE CICLO2

POP POP ENDM

DX CX

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR5_1b.ASM programa del tema cinco y subtema uno ;Programa que har uso de las macros externas, localizadas en ;el archivo que se incluye a continuacin
INCLUDE NoArMa.INC

Pila

SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' "INFORMATICA","$" ;$ Fin de la cadena Variable1 DB Variable2 DB "SISTEMAS","$" Datos ENDS Codigo SEGMENT PARA 'Codigo' MacrosExternas PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX ClrScr WriteXY 1 1 Variable1
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

58

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales Ins titutoTecnolgico No 38

Delay 0FFFFH Write Variable2 Delay 0FFFFH Writexy 0ah 0AH Variable2 Delay 0FFFFH Write Variable1 RET ENDP MacrosExternas Codigo ENDS END MacrosExternas PRCTICA No. 43 NOMBRE: Definicin de procedimientos internos OBJETIVO: Que el alumno: - Experimentar definiendo procedimientos internos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN: Los procedimientos son secciones de cdigo que se ejecutan desde varios lugares en un programa mediante l amadas a el os. Cada vez que se l ama a un procedimiento se ejecuta las instruccines

que

forman

ese

procedimiento, y despus se devuelve el control al programa que l am o programa principal. Una declaracin de procedimiento comienza y termina con el par de directivas PROC y ENDP e incluye bien una opcin NEAR o FAR. Estos atributos informan al ensamblador de que tipo de bifurcacin o instruccin de l amada generan cuando van a esa posicin particular . La instruccin CALL sirve para l amar a procedimiento. Esta guarda direccin instruccin siguiente, transfiere control.
La instruccin CALL hace que la direccin de la siguiente instruccin se almacene en pila; entonces el control del programa se transfiere al operando parmetro. Cuando se completa el procedimiento l amado, continua la ejecucin

del programa que l amo en la instruccin que sigue a la instruccin CALL Sintaxis: CALL parmetro_ operando. Sealizadores afectados: Ninguno (excepto cuando se presenta

una

conmutacin

de

tarea).

CALL Cercana: Esta instruccin tiene 3 bytes de longitud; el primer byte contiene el cdigo y el segundo y tercero contienen el desplazamiento o distancia. Cuando se ejecuta un CALL cercano, primero salva en la pila la direccin de

desplazamiento de la siguiente instruccin.


Esa direccin est en el apuntador de instruccines ( IP o EIP). por qu salvar IP o EIP en la pila?. El apuntador de instruccines siempre apunta a la siguiente instruccin en el programa. Para la instruccin CALL, se salva el

contenido de IP o EIP dentro de la pila, con lo cual el control del programa pasa a la instruccin que sigue al CALL despus de que termina un procedimiento. CALL Lejana: Esta instruccin puede l amar a un procedimiento almacenado en cualquier localidad de la memoria
en el sistema. La instruccin Cal lejana tiene 5 bytes y tiene un cdigo de operacin seguido por el valor de los registros IP y CS. Los bytes 2 y 3 contienen el nuevo contenido de IP y los bytes 4 y 5 contienen el nuevo contenido

de CS. La instruccin Cal lejana salva el contenido de IP y CS en la pila antes de brincar a la direccin indicada por los
bytes 2 a 5 de la instruccin. Esto permite que la Cal lejana l ame a un procedimiento ubicado en cualquier lugar en la

memoria y que retome desde el procedimiento. Instruccin Cal con operandos registros: Las instruccines Call, al igual que las JMP pueden un operando registro y un ejemplo es la instruccin Cal BX. Esta instruccin salva el contenido de IP dentro de la pila.
Despus, brinca a la direccin de desplazamiento de 16 bits almacenada en cualquier registro de 16 bits, excepto los

contener

registros

de

segmento.

La instruccin Cal tambin puede referenciar apuntadores lejanos si la instruccin aparece como CALL FAR PTR
[SI]. Esta instruccin recupera una direccin de 32 bits en la memoria del segmento de datos direccinada por SI y la

utiliza Los

como Procedimientos

direccin pueden ser

para considerados
Febrero 2013

un procedimiento lejano. como NEAR (intrasegmento) o FAR (intersegmento).


Rogelio Guerrero Luna
Pgina de 74

Estos

Cd. Victoria Tamaulipas, Mxico

59

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

atributos en un procedimiento ayudan al microprocesador a determinar el tipo de instruccin CALL a generar cuando el procedimiento es requerido. Tambin deben ser establecido un camino para la vuelta desde el procedimiento. Este
camino de instruccines difiere dependiendo del atributo NEAR o FAR. Si el procedimiento tiene el atributo NEAR, el

IP es guardado en la pila; si tiene el atribuo FAR, ambos CS e IP son guardados en la pila.


CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA
6.1 Definicin de procedimientos 6.2 Paso de

6.3 internos

SUBTEMAS Instruccin para l amada

6.4

Procedimientos

parmetros

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR6_1.ASM ; Definicin de procedimientos internos Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos' "INFORMATICA$" Variable1 DB Variable2 DB "SISTEMAS$" Datos ENDS Codigo SEGMENT PARA 'Codigo' ProcedimientoInterno PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX LEA DX,Variable1 CALL DesNL ;Llamando al procedimiento Desplegar cadena con Nueva Lnea LEA DX,Variable2 CALL Des ;Llamada a procedimiento desplegar sin cambio de lnea RET ProcedimientoInterno ENDP Des PROC NEAR ;Guardar contenido del registro que se alterar PUSH AX MOV AH,9 ;Funcin para desplegar cadena ubicada en DX INT 21H POP AX ;Recuperar contenido del registro antes de entrar al procedimiento RET Des ENDP DesNL PROC NEAR ;Guardar contenido del registro que se alterar PUSH AX MOV AH,9 ;Funcin para desplegar cadena ubicada en DX INT 21H MOV AH,2 ;Funcin para deplegar un carcter MOV DL,0AH ;Carcter a desplegar Avance de lnea INT 21H ;Carcter a desplegar Retorno de carro MOV DL,0DH INT 21H POP AX ;Recuperar contenido del registro antes de entrar al procedimiento RET DesNL ENDP Codigo ENDS END ProcedimientoInterno

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

60

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

PRCTICA No. 44 NOMBRE: Definicin de procedimientos externos OBJETIVO: Que el alumno: - Experimentar definiendo procedimientos externos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

Los procedimientos externos se ubican en un segmento de cdico de programa independiente al principal,


l amndosele a estos biblioteca de procedimientos, los cuales pueden estar organizados, tomando en cuenta sus capacidades o rea de aplicacin. Los cuales pueden ser incorporados al programa principal al momento del enlace o LINK (LINK NoProPr + Bibliot). El nombre del Programa Principal y la Biblioteca deben de encontrarse compilados y en el archivo de Bibloteca los procedimientos l evaran la directiva FAR, ya que son externos al segmento de codigo

que los l amar, especificado lambien la pseudo operacin PUBLIC. En el programa principal se especificar que se trata de procedimientos externos, mediante pseudo operacin EXTRN y los l amados a cada procedimiento sera atravs de la pseudo operacin CALL. La pseudo operacin EXTRN identifica smbolos o variables utilizadas en el archivo del programa actual, cuyos atributos se definen en otro archivo. Sintaxis EXTRN Nombre : Tipo En donde tipo puede ser FAR para los procedimientos y BYTE, WORD,DWORD,QWORD,DQWORD oTBYTE para las variables. La pseudo operacin PUBLIC permite especificar los procedimientos o variables que se ponen a disposicin de otros programas que se enlazarn a ste. Sintaxis PUBLIC Nombre1,Nombre2 Cuando se especifiquen ms de uno debern ser separados por una coma en ambos casos. Pasos para compilar y ligar: Tasm BPE Tasm PR6_5 Tlink PR6_5 + BPE

la

Compila y genera un BPE.OBJ Compila y genera un PR6_5.OBJ Liga PR6_5.OBJ con BPE.OBJ y genera PR6_5.EXE

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 6.5 Procedimientos externos

SUBTEMAS

;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ; BPE.ASM BPE.ASM ; Biblioteca de Procedimientos Externos EXTRN Cadena : BYTE ;Se especifica que la variable Cadena se encuentra en otro archivo CodigoSEGMENT PARA PUBLIC 'Codigo' PUBLIC Clrscr,Despliega ;Se declaran pblicos los procedimientos ClrScr y despliega ASSUME CS:Codigo ClrScr PROC FAR ;Procedimiento para borrar toda la pantalla MOV AH,7 ;Desplazar el contenido de ventana hacia abajo para borrarla MOV AL,00 ;Indica que ser toda la ventana MOV BH,7 ;Atributo a usar para borrar MOV CH,0 ;Renglon superior izquierdo MOV CL,0 ;Columna superior izquierda MOV DH,24 ;Rengln inferior derecho MOV DL,80 ;Columna inferior derecha INT 10H ;Interrupcin BIOS Manipulacin Video RET ;Retorna a una intruccin despus de dnde fue llamado ClrScr ENDP ;Fin del procedimiento Despliega PROC FAR MOV AH,9 LEA DX,Cadena
Cd. Victoria Tamaulipas, Mxico

;Procedimiento para desplegar una cadena ubicada en la variable cadena

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

61

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

INT 21H RET Despliega ENDP Codigo ENDS END ;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Rogelio Guerrero Luna ;Fecha de creacin: Febrero 2013 ;PR6_5.ASM ; Programa Principal desde donde se llamaran los procedimientos Externos EXTRN ClrScr:FAR,Despliega:FAR ;Se especifica que los procedimientosClrScr y Despliega se encuentra en otro archivo Pila SEGMENT PARA STACK 'STACK' DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA PUBLIC 'Datos' Cadena DB "SISTEMAS",0AH,0DH,"$" ;0AH Avance de lnea 0DH Variable1 DB "INFORMATICA$" ;$ Fin de la cadena Datos ENDS CodigoSEGMENT PARA
PUBLIC Cadena

Retorno de carro

'Codigo'
;Se declara pblica la variable Cadena, para poder ser usada en otro archivo

(Segmento) ProcedimientosExternos PROC FAR ;Procedimiento principal ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS ; Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos ;Tomar la direccin en AX de donde existen los datos de este programa MOV DS, AX ;Asignarle la direccin de datos guardada en AX al Registro de Segmento de Datos DS CALL ClrScr ;Borrar toda la pantalla con procedimiento externo CALL Despliega ;Desplegar la cadena SISTEMAS con procedimiento externo MOV AH,9 ;Funcin para desplegar cadena LEA DX,Variable1 ;Tomar la direccin de la cadena INT 21H ;Desplegar la cadena INFORMATICA desde este segmento RET ProcedimientosExternos ENDP ;Fin del procedimiento principal Codigo ENDS ;Fin del segmento END ProcedimientosExternos ;Fin del programa PRCTICA No. 45 NOMBRE: Programacin a bajo nivel con Pascal OBJETIVO: Que el alumno: - El alumno practicar, programando a bajo nivel en el lenguaje de programacin Pascal. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

El lenguaje de programacin Pascal es posible provocar interrupciones, haciendo uso de la librera DOS, en
la cual se encuentran diferentes procedimientos que se pueden consultar desde la ayuda, en esta prctica se usa el

intr. y los registros de 8 y 16 bits; el pascal es ejecutado desde una ventana con el smbolo del sistema. Declaracin: procedimiento Intr(IntNo: Octeto; var Regs: TRegisters); donde: - IntNo es el nmero de la interrupcin del software (0... 255). - TRegisters es un procedimiento definido en la libreria DOS.
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

62

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 7.1Pascal y ensamblador

SUBTEMAS

(*Instituto Tecnolgico de Ciudad Victoria Departamento de Sistemas y Computacin Autor: Rogelio Guerrero Luna Fecha de creacin: Febrero 2013 PR7_1a.ASM *) PROGRAM PR7_1a; USES CRT, (* Librera requerida para poder usar el WRITELN,...*) DOS; (* Librera requerida para poder provocar interrupciones, usar los registros y declarar variables de ese tipo*) VAR Msg : String; Fecha, Anio, Mes, Dia : string; Regs : Registers; (* Declaracion de la variable Regs como de tipo Registers*) BEGIN Msg := 'Hola'; Writeln(msg); Regs.ah := $2a; (* Funcin para tomar la fecha del BIOS *) intr($21,regs); (* Provocar la interrupcion 21 hexadecimal *) WITH Regs do BEGIN str(CX , Anio); (* Convertir a cadena el dato contenido en CX *) str(DH , Mes); str(DL , Dia); END; Fecha := Dia + '/' + Mes + '/' + Anio; (* Concatenar en Fecha las cadenas contenidas en Dia, Mes y Ao*) writeln('La Fecha es: ', Fecha); END. PRCTICA No. 46 NOMBRE: Cdigo Ensamblador inmerso en un programa en Pascal. OBJETIVO: Que el alumno: - Incorporar cdigo en ensamblador en un programa en Pascal o Delphi. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

El lenguaje de programacin Pascal, como tal ya no existe, ha evolucionado a el manejador de base de datos
l amado Delphi de Borland y es en l en donde se crea el ejemplo de programacin a bajo nivel con codigo inmerso en

ensamblador, lo cual es parecido a haberlo hecho en Turbo pascal. Los comentarios en una declaracin del asm deben estar en el estilo de Delphi. Un punto y coma no indica que el resto de la lnea es un comentario En general, las reglas del uso del registro en una declaracin del ASM son iguales que las de un procedimiento o de una funcin externo. Una declaracin del asm debe preservar el EDI, ESI, los registros ESPECIALMENTE, de EBP, y de EBX, pero puede modificar libremente los registros de EAX, de ECX, y de EDX. En entrada a una declaracin del asm, EBP seala al marco actual del apilado y seala ESPECIALMENTE a la tapa del apilado. A excepcin de ESPECIALMENTE y EBP, una declaracin del asm no puede asumir nada sobre contenido del registro en entrada a la declaracin Usted puede escribir procedimientos y funciones completos usando cdigo en lnea del lenguaje ensamblador, sin incluir una declaracin del final del comenzar.... Por ejemplo,
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

63

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

function LongMul(X, Y: Integer): Longint; asm MOV EAX,X IMUL Y end; El recopilador realiza varias optimizaciones en estas rutinas: parmetros cuyo tamao no es de 1, 2, o 4 octetos. Dentro de la rutina, tales parmetros deben ser tratados como si fueran parmetros del var. A menos que una funcin vuelva una secuencia, una variante, o una referencia de la interfaz, el recopilador no asigna una variable del resultado de la funcin; una referencia al smbolo de @Result es un error. Para las secuencias, variantes, y los interfaces, el l amador asigna siempre un indicador de @Result. El recopilador genera solamente los marcos de la pila para las rutinas jerarquizadas, para las rutinas que tienen parmetros locales, o para las rutinas que tienen parmetros en la pila. El cdigo automticamente generado de la entrada y de la salida para la rutina seria esto: PUSH MOV SUB ... MOV POP RET EBP EBP,ESP ESP,Locals ESP,EBP EBP Params ; Presente si Locales <> 0 o Parmetro <> 0 ; Presente si Locales <> 0 o Parmetro <> 0 ; Presente si Locales <> 0 ; Presente si Locales <> 0 ; Presente si Locales <> 0 o Parmetro <> 0 ; Siempre presente

El lenguaje ensamblador regresa alguno de los siguientes resultados. Los valores ordinales se regresan en AL(8 bits), AX (16 bits), o EAX (32 bits). Los valores reales son regresados en el ST(0) e el registro de la pila del procesador. (Los valores actuales son escalados por 10000.) Apuntador a cadena largas regresado en EAX. Cadena corta es regresado en un apuntador de localizacin temporal @Result.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 7.1Pascal y ensamblador

SUBTEMAS

(*Instituto Tecnolgico de Ciudad Victoria Departamento de Sistemas y Computacin Autor: Rogelio Guerrero Luna Fecha de creacin: Febrero 2013 PR7_1b.ASM*) PROGRAM PR7_1b;
{$APPTYPE CONSOLE}

USES SysUtils; VAR Msg : String;


{$R *.res}

FUNCTION SumPas(X, Y: Integer): Integer; BEGIN Result := X + Y; END; FUNCTION Sum(X, Y: Integer): Integer; stdcall; BEGIN ASM MOV EAX,X ADD EAX,Y MOV @Result,EAX END; END; FUNCTION LongMul(X, Y: Integer): Longint;
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

64

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

ASM MOV IMUL END;

EAX,X Y

(* Multiplica el contenido de Y por el de EAX*)

BEGIN Msg := 'Hola'; Writeln(msg); Writeln('Multiplica entero largo con ensamblador : ',LongMul(2,3)); Writeln('Suma enteros con ensamblador : ',sum(3,5)); Writeln('Suma enteros con Delphi : ',SumPas(8,9)); END. PRCTICA No. 47 NOMBRE: Programacin a bajo nivel con lenguaje C OBJETIVO: Que el alumno: - El alumno practicar, programando a bajo nivel en el lenguaje de programacin C. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

El lenguaje de programacin C permite provocar interrupciones y as poder tener un control de hardware y software, hasta la versin de windows 95. En versiones posteriores de sistema operativo, al programa ejecutable generado se debe especificar que mantenga la compatibilidad con el 95. Esto puede hacerse con el Explorador de windows, pulsando el botn derecho del ratn, cuando el apuntador del mismo se encuentre sobre el programa ejecutable generado; en la opcin de propiedades. Las interrupciones desde el lenguaje C o Ensamblador no pueden ser provocadas en versiones de Windows 2000 o posteriores, al estar haciendo estos uso de la memoria protegida, que es permitida manejarla desde procesadores 286.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 7.2 C Ensamblador

SUBTEMAS

//Instituto Tecnolgico de Ciudad Victoria //Departamento de Sistemas y Computacin //Autor: Rogelio Guerrero Luna //Fecha de creacin: Febrero 2013 //PR7_2a.CPP // #include <stdio.h> /*Librera que permite hacer uso de la impresin con formato y borrado de pantalla */ #include <dos.h> /*Librera que permite disponer de los registros y las interrupciones void main (void) { char msg1[]={"Informatica"}; /*Inicio de msg1, sin especificar su longitud con cadena Informatica char msg2[9]={"Sistemas$"}; /*Inicio de msg2, de nueve posiciones con cadena Sistemas$ union REGS regs; /*Declaracion de la variable regs para poder accesar los registros y sus mitades */ printf (msg1); getchar(); /*detener la ejecucin del programa hasta pulsar el ENTER regs.x.cx = 000; regs.x.dx = 0x2479; regs.h.bh = 7; regs.h.ah = 6; int86(0x10,&regs,&regs); /*Borrado de toda la pantalla haciendo uso de interrupcion diez de BIOS getchar(); clrscr();
Cd. Victoria Tamaulipas, Mxico

*/

*/ */

*/

*/

/*Borrado de la pantalla haciendo uso de la funcin de C para ello


Febrero 2013
Rogelio Guerrero Luna
Pgina

*/
de 74

65

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

getchar(); printf (msg2); getchar(); }

/*Impresin con formato haciendo uso de la funcin de C

*/

PRCTICA No. 48 NOMBRE: Cdigo Ensamblador inmerso en lenguaje C OBJETIVO: Que el alumno: - Incorporar cdigo en ensamblador en un programa en C. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

El lenguaje C es sin duda el ms apropiado para la programacin de sistemas, pudiendo sustituir al ensamblador en muchos casos. Sin embargo, hay ocasiones en que es necesario acceder a un nivel ms bajo por razones de operatividad e incluso de necesidad (programas residentes que economicen memoria, algoritmos rpidos para operaciones crticas, etc.). Es entonces cuando resulta evidente la necesidad de poder emplear el ensamblador y el C a la vez.
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA 7.2 C Ensamblador

SUBTEMAS

//Instituto Tecnolgico de Ciudad Victoria //Departamento de Sistemas y Computacin //Autor: Rogelio Guerrero Luna //Fecha de creacin: Febrero 2013 //PR7_2b.CPP // #include "stdafx.h" */ Librera para poder utilizar printf */ #include "iostream.h" */ Librera para poder utilizar cout */ long int Suma(long int X,long int Y); int SumaC(int X,int Y); long int LongMul(int X,int Y); int main(int argc, char* argv[]) /* Funcin principal del programa */ { printf("Operacin matemticas desde C y Ensamblador\n");/* Funcin Impresin con formato */ cout << "X = 3 Y = 4\n"; /* Objeto para desplegado */ cout << "SumaC = " << SumaC(3,4) << "\n"; cout << "LongMul = " << LongMul(3,4) << "\n"; cout << "Suma = " << Suma(3,4) << "\n"; return 0; } int SumaC(int X,int Y) { return(X + Y); } long int Suma(long int X,long int Y) { _asm // Block con cdigo ensamblador { mov eax,X add eax,Y mov X,eax } return (X);
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

66

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

} long int LongMul(int X,int Y) { _asm mov


_asm imul _asm mov

eax,X // Codificacin asm lnea por lnea Y X,eax

return (X); }

//Instituto Tecnolgico de Ciudad Victoria //Departamento de Sistemas y Computacin //Autor: Rogelio Guerrero Luna //Fecha de creacin: Febrero 2013 //PR7_2d.CPP //Elaborado en Turbo C++ y el ejecutable con conpatibilidad para Windows95 // #include <conio.h> /* Consola Input / Output o de Entrada/Salida */ #include <stdio.h> /*Librera que permite hacer uso de la impresin con formato y borrado de pantalla */ #include <dos.h> /*Librera que permite disponer de los registros y las interrupciones */ void main (void) { char msg1[]={"Informatica"}; /*Inicio de msg1, sin especificar su longitud con cadena Informatica */ char msg2[9]={"Sistemas$"}; /*Inicio de msg2, de nueve posiciones con cadena Sistemas$ */ union REGS regs; /*Declaracion de la variable regs para poder accesar los registros y sus mitades */ printf (msg1); getchar(); /*detener la ejecucion del programa hasta pulsar el ENTER */ asm{ mov cx,0000 /* Block con cdigo ensamblador para especificar los parmeros del borrado mov dx,0x2479 /*Renglon 24 Columna 79 mov bh,7 /*Atributo del carcter normal mov ah,6 /*Funcin para borrar hacia arriba mov al,0 /*Toda la pantalla } int86(0x10,&regs,&regs); /*Borrado de pantalla con interrupcin de BIOS desde C getchar(); asm{ mov ah,9 lea dx,msg2 int 0x21 /*Provocar la interrupcin 21 desde ensamblador inmerso en el cdigo C } getchar(); printf (msg2); getchar(); } PRCTICA No. 49 NOMBRE: Programacin a bajo nivel con lenguaje Basic OBJETIVO: Que el alumno: - El alumno practicar, programando a bajo nivel en el lenguaje de programacin Basic. - Se familiarice con el ambiente de desarrol o en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.
INTRODUCCIN:

*/ */ */ */ */ */

*/

El lenguaje BASIC
CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA
Cd. Victoria Tamaulipas, Mxico

SUBTEMAS
Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

67

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

7.2 Basic Ensamblador

ANEXO No. 1
REPORTE DEL ALUMNO

El

maestro

definir

los

lneamientos

mnimos

de

documentacin

que

debern

contener

las

actividades

relacionadas con cada prctica. Se sugieren seleccionar de entre los siguientes aspectos los que se consideren

convenientes en funcin del tamao y complejidad de la prctica.

1. Portada:
de

2. 3. 4. 5.

Nombre del Instituto y Departamento Acadmico, nmero y nombre de la prctica, la asignatura y maestro que la imparte, nombre del alumno, carrera y nmero de control, lugar y fecha de entrega. Introduccin. Finalidad de la prctica y sntesis del contenido. Marco terico. Definicines , conceptos,... Desarrol o de la prctica. Impresin del cdigo fuente de cada una de los programas que se derivan de las actividades propias de sta
prctica indicando el nombre y la funcin general del programa, autor y fecha de modificacin), para cada mdulo se explicar brevemente su funcin especfica, los parmetros de entrada y/o elaboracin (o

nombre

ltima

valores de salida.

6. Impresin de los resultados arrojados por la ejecucin del programa. 7. Recomendaciones tcnicas: especifica los mdulos o archivos
8.

que componen requeridas, la estructura y mtodo de acceso a las tablas o archivos de entrada y/o salida.

el

programa,

las

utileras

Conclusiones. Algunas prcticas requieren que el alumno realice investigacin de temas, elaboracin de tablas, comparacin de resultados, mediciones de tiempos, etc. El alumno escribir para esos casos las conclusiones a

las que l ega.

9. Bibliografa. La que el estudiante para planear y elaborar la prctica.


10. Anexos. Tablas, formatos, Dibujos, Diagramas, fotografas,...
11. Todo los programas compilados y ligados; con los nombres especificados en el manual sern entregados en un

disco. ANEXO No. 2 BIBLIOGRAFA 1.Autor(es) KIP R. IRVINE Ttulo LENGUAJE ENSAMBLADOR PARA COMPUTADORAS BASADAS EN INTEL QUINTA EDICIN Editorial PEARSON Prentice Hal Autor(es) WILLIAN H. MURRAY III, CHRIS H. PAPPAS Ttulo PROGRAMACIN EN LENGUAJE ENSAMBLADOR 80386/80286 Editorial Osborne/McGraw-Hil Mxico Autor(es) PETER ABEL Ttulo LENGUAJE ENSAMBLADOR Y PROGRAMACIN PARA PC IBM Y COMPATIBLES Editorial Pearson Educacin, Mxico Autor(es) PETER NORTON RICHARD WILTON Ttulo THE NEW PETER NORTON PROGRAMMERS GUIDE TO THE IBM PC & PS/2 Editorial Microsoft http://masm32.com/ http://webster.cs.ucr.edu/
Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

2.-

3.-

4.-

5.-

Cd. Victoria Tamaulipas, Mxico

68

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

ANEXO No. 3 BIOS DOS


CISC RISC

ALU CPU BIU Firmware ROM

GLOSARIO Sistema Bsico de Entrada y Salida Sistema Operativo en Disco Complex Instructions Set Computer, Ordenador con un conjunto de instruccines complejo Reduced Instructions Set Computer, Ordenador con un conjunto de instruccines reducido Unidad Aritmtico-Lgica Unidad de proceso central Basic Interface Unit Unidad de Interfaz Bsica Programacin en Firme, es un bloque de instrucciones de programa para especficos, grabado en una memoria tipo ROM Read Only Memory Memoria de solo lectura

propsitos

ANEXO No. 4 INTERRUPCIONES Las interrupciones constituyen quiz el mecanismo ms importante para la conexin del microcontrolador con el mundo exterior, sincronizando la ejecucin de programas con acontecimientos externos. El funcionamiento de las interrupciones es similar al de las subrutinas de las cuales se diferencian principalmente en los procedimientos que las ponen en marcha. As como las subrutinas se ejecutan cada vez que en el programa aparece una instruccin CALL, las interrupciones se ponen en marcha al aparecer en cualquier instante un evento externo al programa, es decir por un mecanismo hardware. Las interrupciones del procesador, hardware y software son invocadas de diferente manera: Procesador: Las interrupciones del procesador o interrupciones lgicas son invocadas por el procesador como consecuencia de un resultado inusual del programa, tal como un intento de divisin por cero. Hardware: Las interrupciones de hardware son invocadas por mecanismos perifricos estos fijan sus respectivas lneas de peticin de interrupcin (IRQ). Cada vez que una tecla es presionada, por ejemplo, el teclado genera una interrupcin. Las interrupciones de hardware son vectoreadas a rutinas de servicio de interrupcin (ISRs) estas generalmente residen en el BIOS. Software: Las interrupciones de software son invocadas a travs de la instruccin INT del 8086. La mayora de las interrupciones de software son vectoreadas a (DSRs) localizado en el BIOS, o en programas de aplicacin.

Nota: Los usuarios de Linux pueden consultar las interrupciones utilizadas en el sistema en el fichero /proc/interrupts mediante el comando cat /proc/interrupts. Tambin mediante la utilidad dmesg en la forma dmesg | grep -i irq

Servicios de la interrupcin 0x21 del DOS

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

69

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

Funcin o Servicio 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C

Descripcin de la accin Termina Programa. Entrada de Teclado Salida de carcter a video Entrada por el dispositivo Aux. estndar Salida por el dispositivo Aux. estndar Salida a impresora Consola E/S Entrada de consola sin eco Entrada de consola sin eco sin checar ^C Imprime cadena Lee cadena Checa el estado de la entrada Limpia el buffer del teclado e invoca el servicio Reset del disco Selecciona disco Abre archivo existente Cierra archivo Busca el primer archivo con algn atributo en el nombre Busca el siguiente archivo con algn atributo en el nombre Borra archivos Lectura secuencial Escritura secuencial Crea archivo Renombra archivo Servicio interno de DOS Busca el disco actual Habilita una localidad DTA Informacin FAT del disco por omisin Informacin FAT de un disco especfico

0x1D - 0x20 Servicio interno de DOS 0x21


0x22 0x23 0x24 0x25
Cd. Victoria Tamaulipas, Mxico

Lectura aleatoria Escritura aleatoria Tamao de archivo Habilita un campo de registro aleatorio Habilita nueva direccin en el vector de interrupciones
Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

70

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

0x26
0x27 0x28 0x29

Crea un nuevo PSP Lectura de bloque aleatoria Escritura de bloque aleatoria Busca el nombre de archivo Obtiene la fecha Actualiza la fecha Obtiene la hora Actualiza la hora Habilita o inicializa el switch verify Obtiene el DTA actual Obtiene el nmero de versin de DOS Termina un proceso y lo mantiene residente Servicio interno de DOS Checa por ^BREAK Servicio interno de DOS Obtiene una direccin del vector de interrupciones Obtiene el espacio libre en disco Servicio interno de DOS Regresa la informacin dependiente a un pas Crea un subdirectorio Borra un subdirectorio Cambia de directorio actual Crea un archivo Abre un archivo Cierra un manejador de archivo Lee de un archivo o dispositivo Escribe a un archivo o dispositivo Borra un archivo Mueve apuntador de lectura / escritura Cambia los atributos de un archivo Control de E/S Duplica un manejador de archivo Forza la duplicacin de un manejador de archivo Obtiene el directorio actual en una unidad de disco especfico Asigna memoria Libera memoria asignada Habilita Bloque
Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

0x2A
0x2B

0x2C
0x2D

0x2E 0x2F 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B
0x3C 0x3D

0x3E 0x3F 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4A
Cd. Victoria Tamaulipas, Mxico

71

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

0x4B 0x4C
0x4D

Carga o ejecuta un programa Salir (este servicio puede terminar un programa) Obtiene el cdigo de regreso de un subproceso Encuentra el primer archivo con algn atributo en el nombre Encuentra el siguiente archivo con algn atributo en el nombre

0x4E 0x4F

0x50 - 0x53 Servicio interno de DOS 0x54


0x55 0x56 0x57 0x58 0x59

Obtiene estado de verificacin Servicio interno de DOS Renombre archivo Obtiene o actualiza la fecha y hora de un archivo Servicio interno de DOS Obtiene error extendido de DOS 3+ Crea un archivo sencil o DOS 3+ Crea un nuevo archivo DOS 3+ Acceso a un archivo DOS 3+ Obtiene el nombre de una mquina DOS 3+ Habilita impresora para DOS 3+ Obtiene impresora para DOS 3+ Redirecciona un servicio de DOS 3+ Cancela la redireccin DOS 3+ Obtiene el segmento de un programa DOS 3+ Habilita manejador de contador DOS 3.30

0x5A
0x5B

0x5C 0x5E00 0x5E02 0x5E03 0x5F03 0x5F04 0x62


0x67 0x68

Asigna archivo DOS 3.30

Apndice II - TABLA DE INTERRUPCIONES DEL SISTEMA

INT 00: INT 01: INT 02: INT 03: INT 04: INT 05: INT 06: INT 07: INT 08: INT 09: INT 0A: INT 0B: INT 0C: INT 0D: INT 0E:
Cd. Victoria Tamaulipas, Mxico

Divisin por cero Ejecucin paso a paso No Enmascarable (NMI) Puntos de ruptura Desbordamiento (INTO) Volcar pantal a por impresora (BIOS) Cdigo de operacin incorrecto Reservada IRQ 0: Contador de hora del sistema (BIOS) IRQ 1: Interrupcin de teclado (BIOS) IRQ 2: canal E/S, segundo 8259 del AT IRQ 3: COM2 IRQ 4: COM1 IRQ 5: disco duro XT, LPT2 en AT, retrazo vertical PCjr IRQ 6: Controlador del disquete
Febrero 2013
Rogelio Guerrero Luna
Pgina de 74

72

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgico No 38

INT 0F: INT 10:


INT 11:

IRQ 7: LPT1 Servicios de vdeo (BIOS)


Listado del equipo (BIOS)

INT 12: Tamao de memoria (BIOS) INT 13: Servicios de disco (BIOS) INT 14: Comunicaciones en serie (BIOS) INT 15: Servicios del sistema (BIOS) INT 16: Servicios de teclado (BIOS) INT 17: Servicios de impresora (BIOS) INT 18: IBM Basic (ROM del BASIC) INT 19: Arranque del sistema (BIOS) INT 1A: Fecha/hora del sistema INT 1B: Accin de CTRL-BREAK (BIOS) INT 1C: Proceso peridico del usuario (Usuario) INT 1D: Parmetros de vdeo (BIOS) INT 1E: Parmetros del disquete (BIOS) INT 1F: Tabla de caracteres grficos (BIOS) INT 20: Fin de programa (DOS) INT 21: Servicio del sistema operativo (DOS) INT 22: Direccin de terminacin (DOS) INT 23: DOS CTRL-BREAK (DOS) INT 24: Manipulador de errores crticos (DOS) INT 25: Lectura absoluta de disco (DOS) INT 26: Escritura absoluta en disco (DOS) INT 27: Terminar permaneciendo residente (DOS) INT 28: DOS Idle (programas residentes que usan funciones DOS) INT 29: DOS TTY (impresin en pantal a) INT 2A: Red local MS net INT 2B-2D: Uso interno del DOS INT 2E: Procesos Batch (DOS) INT 2F: Multiplex (DOS) INT 30: Compatibilidad CP/M-80 (xx:YYyy en JMP XXxx:YYyy) INT 31: Compatibilidad CP/M-80 (XX en JMP XXxx:YYyy) INT 32: Reservada INT 33: Controlador del ratn INT 34-3F: Reservadas INT 40: Interrupcin de disquete (BIOS) INT 41: Parmetros del disco duro 1 (BIOS) INT 42: Apunta a la INT 10h original del BIOS si existe VGA INT 43: Caracteres grficos EGA (BIOS) INT 44-45: Reservadas INT 46: Parmetros del disco duro 2 (BIOS) INT 47-49: Reservadas INT 4A: Alarma del usuario INT 4B-5F: Reservadas INT 60-66: Para uso de los programas INT 67: Interrupcin de EMS (controlador EMS) INT 68-6F: Reservadas INT 70: IRQ 8: Reloj de tiempo real AT (2 chip 8259-AT) INT 71: IRQ 9: IRQ 2 redireccionada (2 chip 8259-AT) INT 72: IRQ 10: reservada (2 chip 8259-AT) INT 73: IRQ 11: reservada (2 chip 8259-AT) INT 74: IRQ 12: interrupcin de ratn IBM (2 chip 8259-AT)
Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

73

Manual de prcticas de Lenguajes de Interfaz Departamento de Sistemas y Computacin


Ingenieria en Sistemas Computacionales InstitutoTecnolgi co No 38

INT 75: INT 76: INT 77: INT 78-7F: INT 80-85: INT 86-F0: INT F1-FF:

IRQ 13: error de coprocesador matemtico (2 chip 8259-AT) IRQ 14: controlador disco fijo (2 chip 8259-AT) IRQ 15: reservada (2 chip 8259-AT) Reservadas Reservadas para el Basic Usadas por el Basic Para uso de los programas

Cd. Victoria Tamaulipas, Mxico

Febrero 2013

Rogelio Guerrero Luna

Pgina

de

74

74