Вы находитесь на странице: 1из 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D.

Aurelio Rico Daz

MANUAL DE PRCTICAS DE LENGUAJE ENSAMBLADOR OBJETIVO GENERAL: Que el alumno, al trmino de todas las actividades sea capaz de utilizar el Manual de prcticas para la Materia de Lenguaje 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 instrucciones 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, lo cual proporciona control total del hardware y software de un sistema de cmputo atreves de un conjunto de mnemnicos. 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 instrucciones (mnemnicos) de la mquina apropiada, adems de ofrecer un formato de escritura cmodo para expresar los parmetros y cosas tales como los modos de direccionamiento. Adems, reconoce una serie de directivas (o meta instrucciones) 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 (o simplemente, macros). Cuando invocamos a una macro, sta se expande al cuerpo que haigamos definido. 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 llamado "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.

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 tengan los tpicos conectores serie (DB9), paralelo(DB25), teclado(DIN), Video, etc... y en su lugar slo encontraremos puertos USB, RJ45, RJ11 e Infrarrojo. Memoria MemoriaCach Todas las tarjetas madre Pentium deben tener en ellas 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 sencillo 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.

Ing. J. D. Aurelio Rico Daz

Pgina 2

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 ellos 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 Power, ZILOG Z80, MOTOROLA M68000, MPC7455, AMD Advanced Micro Devices Duron. Tamao de registro 8, 16, 32 y 64 biits
Pgina
3

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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

PRCTICA No. 2 NOMBRE: Importancia del lenguaje OBJETIVO: - Que el alumno valorare la importancia de conocer este lenguaje, al conocer sus aplicaciones y el uso en diferentes plataformas de hardware y software. INTRODUCCIN: 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 que realiza tareas simples de transferencia de datos y operaciones lgicas, una pgina de cdigos en lenguaje ensamblador 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 desarroll, mayor costo en su ciclo de vida, peligro de afectar recursos inesperadamente. CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 1.2 Importancia del Lenguaje Ensamblador PRCTICA No. 3 NOMBRE: Historia de los procesadores OBJETIVO: - Que el alumno identifique mediante imgenes y fsicamente las marcas y modelos de procesadores.
Pgina
4

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

INTRODUCCIN: Un microprocesador es un circuito integrado construido en un pedazo diminuto de silicio . Contiene miles, o incluso millones, de transistores que se interconectan va los rastros extrafinos de aluminio. La funcin de los transistores es guardar y manipular datos juntos para que el microporcesador pueda realizar una gran variedad de 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 SUBTEMAS 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: Componentes del microprocesador
Reloj

Unidad Aritmtica Lgica

Bus de Direcciones

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 ello 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 aquellas operaciones matemticas (suma, resta, multiplicacin y division). Las operaciones que realiza son las siguientes: suma, resta, multiplicacin, divisin y aquellas 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 llega 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
Pgina
5

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Es el centro nervioso del ordenador, ya que desde ella 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 llevar 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 BANDERAS CIRCUITO muy elementales (micrordenes) que, sincronizadas por OPERACIONAL los impulsos de reloj, hacen que se vaya ejecutando poco MICROINSTRUCCIONES a poco la instruccin que est cargada en el registro de instruccin. UNIDAD ARITMTICO-LGICA (ALU) Esta unidad se encarga de realizar las operaciones elementales de tipo aritmtico (sumas, restas, productos, divisiones) y de tipo lgico (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 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 de operacin que debe realizar en cada momento (suma, resta, etc). Registros de entrada (REN) En ellos 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 llevadas 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.
Pgina de 74 REGISTROS DE ENTRADA

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 entender y ejecutar un microprocesador. En funcin del tipo de microprocesador, concretamente si es ms avanzado o no, podr entender y ejecutar ms o 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 la memoria central (memoria RAM). El microprocesador tomar una a una las instruccines que lo componen e ir realizando las tareas correspondientes. Se denomina ciclo de instruccin al conjunto de acciones que se llevan 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 Instruccin 1 a la unidad de control. Instruccin 2 Fase de ejecucin Consiste en la realizacin de todas las acciones que conlleva la propia instruccin. BUSES Instruccin 3 Una forma de clasificar los microprocesadores es en CPU funcin de las instruccines que son capaces de ejecutar. Podemos encontrar dos tipos: microprocesadores: Con tecnologa CISC y RISC. CISC: Complex Instructions Set Computer, Ordenador con un conjunto de instruccines complejo. RISC: Reduced Instructions Set Computer, Ordenador con un conjunto de instruccines reducido. Anteriormente hemos definido el set de instruccines como el conjunto de instruccines que es capaz de entender y ejecutar un microprocesador. Si ese microprocesador entiende y ejecuta muchas instruccines (cientos de ellas), se trata entonces de un microprocesador CISC. En cambio, si el microprocesador entiende y ejecuta muy pocas instruccines (decenas de ellas), se trata entonces de un microprocesador RISC.
Instruccin n

MEMORIA

Pgina

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 sencillas que s entiende. An as, descomponiendo una instruccin compleja en varias sencillas, 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 personales (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 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 SUBTEMAS 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: Los registros internos del microprocesador Registros de datos: AX = Acumulador. Es el registro principal utilizado en las instrucciones 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)
Pgina
8

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

* 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 SUBTEMAS 1.5.1 Descripcin de componentes

PRCTICA No. 7 NOMBRE: Funcionamiento interno OBJETIVO: - Que el alumno observe los contenidos de los registros e introduzca un programa directamente en la memoria y lo ejecute. INTRODUCCIN: Cualquier versin del sistema operativo DOS o Windows, tiene disponible un comando externo llamado 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 llamado CMD.EXE. Aunque Debug es una herramienta antigua es una buena forma de comenzar a familiarizarnos con el 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 Agregar cdigo o Ensamblar a(Direccin) Agregar a partir de Direccin Ejecutar el DEBUG dentro de una ventana del Smbolo del Sistema para alterar el contenido del Registro AX

Pgina

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 o 0D Ejecutar interrupcin 10 hex Termina programa y retornar Ejecutar

-G

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 1.5.2 Funcionamiento interno

PRCTICA No. 8 NOMBRE: Manejo de memoria OBJETIVO: - Que el alumno haga uso de diferentes tamaos de memoria en un programa. INTRODUCCIN: Memoria PRINCIPAL La memoria es una coleccin Memoria CACHE de posiciones o celdas contiguas de una longitud de un byte cada una de CPU ellas, 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; administrada por un sistema operativo, los cuales pueden trabajar en modo Real o Protegido. Este ltimo es posible usarlo en Ordenador personales, desde que apareci el procesador 286. En modo real es posible leer y escribir en cualquier parte de la memoria principal y en modo protegido cada programa; entre ellos el sistema operativo usan reas de memoria independientes para trabajar; con la finalidad de no interferirse entre ellos al momento de leer o escribir en memoria. Programacin con segmentos:
Pgina

10

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Al crear un programa con segmentos, cada uno de ellos 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 de programacin es aceptada desde los procesadores 8008, hasta los actuales pentium. Pila SEGMENT PARA STACK STACK Datos SEGMENT PARA datos Codigo SEGMENT PARA 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 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. .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 SUBTEMAS 1.6 Manejo de memoria

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 desarrollo en la que codificar, grabar, editar, compilar, ligar y ejecutar los programas que se presentan en el manual. INTRODUCCIN: Son todas las intrucciones que no llevan 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 el operando en el registro de acumulador esta implcito en la definicin de la instruccin. De hecho todas las instruccines de 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 SUBTEMAS 1.7 Direccinamiento de los datos 1.7.1 Implcito

;PR1_7_1.ASM ;Direccinamiento implcito ;El operando sin operadores Pila SEGMENT PARA STACK DB 64 DUP(0) Pila ENDS

STACK

Pgina

11

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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: Direccionamiento 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 desarrollo 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 SUBTEMAS 1.7 Direccinamiento de los datos 1.7.2 Inmediato

;PR1_7_2.ASM ;Direccinamiento inmediato ;El operando fuente es el dato a mover al destino Pila SEGMENT PARA STACK 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

Pgina

12

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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: Direccionamiento 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 desarrollo 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 sencilla 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 SUBTEMAS 1.7 Direccinamiento de los datos 1.7.3 Directo

;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
Pgina

13

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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 sencilla 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 SUBTEMAS 1.7 Direccinamiento de los datos 1.7.4 Registro

;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 Codigo SEGMENT PARA Codigo Registro PROC FAR ASSUME CS:Codigo,SS:Pila MOV AX,DS MOV AL,CL MOV AX,BX MOV DS,AX MOV ES,DS
Pgina

14

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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. La ventaja de una instruccin de modo de registro indirecto es que el campo de direccin de la instruccin utiliza menos bits para seleccionar un registro de los que necesitaria para especificar una direccin de memoria en forma directa. Se presenta una prctica sencilla 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 SUBTEMAS 1.7 Direccinamiento de los datos 1.7.5 Registro indirecto

;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 SEGMENT Variable3 DW Datos ENDS Codigo PARA Datos 0A1FCH

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

Pgina

15

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

PUSH MOV PUSH MOV MOV LEA MOV MOV MOV LEA MOV MOV MOV RET RegistroIndirecto Codigo ENDS END

DS AX,00 AX AX,Datos DS,AX BX, Variable3 AX,[BX] SI, OFFSET Variable3 AX,[SI] DI,Variable3 AX,[DI] BP, OFFEST Variable3 AX,[BP] ENDP 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 desarrollo en el que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual. 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 sencilla 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 SUBTEMAS 1.7 Direccinamiento de los datos 1.7.6 Registro relativo

;PR1_7_6.ASM ;Direccinamiento registro relativo Pila SEGMENT PARA STACK DB 64 DUP(0)

STACK
Pgina de 74

16

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Pila Datos

ENDS PARA Datos HOLA ALUMNOS. ( ENSAMBLADOR)

SEGMENT Variable1 DB Datos ENDS 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 ENDS Codigo 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 ENDE DB DB DB DB DD '0123456789' 75,200 0 10 DUP(0) ? ; modificable ; no modificable ; modificable ; no modificable ; modificable

alumno ejemplo

alumno <'Victoria',,101,,3130661> MOV AX,OFFSET ejemplo.telefono LEA BX,ejemplo MOV 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
Pgina

17

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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, MASK A AL, WIDTH A ; AL = 5 (desplazamiento del bit menos significativo de A) ; AL = 01100000b (mscara de 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 desarrollo 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 arreglo puede accesarse con la misma instruccin siempre y cuando el registro ndice contenga el valor de ndice correcto. El 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 sencilla 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 SUBTEMAS 1.7 Direccinamiento de los datos 1.7.7 Registro base indexado ;PR1_7_7.ASM ;Direccinamiento registro base indexado Pila SEGMENT PARA STACK 'STACK'

Pgina

18

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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

Codigo SEGMENT PARA 'Codigo' RegistroBaseIndexado PROC FAR ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX MOV MOV MOV MOV MOV MOV MOV AX,00 BX,8 DI,2 AL,Variable1[BX][DI] ; AL = 3 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 desarrollo en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual. INTRODUCCIN: Las 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; ejemplo: 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 es accesible por un programa y el contenido de esta posicin puede cambiar durante la ejecucin del programa.
Pgina

19

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 comillas 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 ser manipulados por la 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 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 SUBTEMAS 2.2 Formato de un programa
Pgina
20

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;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 Codigo SEGMENT 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

;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: ;Agrega la lgica necesaria para tu programa MOV AX,4C00H ;Funcin para terminar programa INT 21H ;Interrupcin para terminarlo .STACK 64 END Programa

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 desarrollo en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.

Pgina

21

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 ellos 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:\masm32\bin\ml /c /coff /nologo Programa.asm

/c Ensamblar si ligar /coff Archivo de cdigo objeto no 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 SUBTEMAS 2.2 Formato de un programa ;PR2_2.ASM ;Definicin de un programa general para Macro Assembler

Pgina

22

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;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 desarrollo 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 ellos. .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 Suspende la ejecucin de un bloque de cdigo y se va hasta el final del mismo,

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 2.2 Formato de un programa

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 desarrollo 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 SUBTEMAS 2.5 Instruccines para transferencia de datos ;PR2_5.ASM ;Transferencia de datos Pila SEGMENT PARA DB 64 DUP(0) Pila ENDS Datos SEGMENT PARA 'Datos' Variable1 DB Variable2 DD Variable3 DD

STACK 'STACK' ;Reserva 64 bytes en el rea de la pila y los inicia con ceros

5 ? 10,20,30,40,50

Pgina

23

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 LEA LDS LES XCHG XCHG XCHG BL, Variable1 DX, Variable3 SI, Variable3 BX, Variable2 BX, DX CL, Variable1 AL, CL ;Copia el contenido del operando fuente en el destino ;Tomar la direccin efectiva del Variable ;Carga puntero de doble palabra en registro ;Carga puntero de doble palabra en registro

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 desarrollo 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 SUBTEMAS 2.6 Instruccines aritmticas 2.6.1 Aritmtica binaria

Pgina

24

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;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' Variable1 DB 4 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 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 el

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 desarrollo 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 0 y el 9. AAS La sustraccin, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero 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 SUBTEMAS 2.6 Instruccines aritmticas 2.6.2 Aritmtica empacada
Pgina de 74

25

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;PR2_6_2.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' 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 desarrollo 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 operacin CLC pone el sealizador de arrastre a 0 . No estn afectados ningn registro ni 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 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.

Pgina

26

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 SUBTEMAS 2.7 Instruccines de manipulacin de banderas ;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

Pgina

27

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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, pero no su 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: TEMA SUBTEMAS 2.8 Instruccines de comparacin y prueba ;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' Variable1 DB 5 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

Pgina

28

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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: aquellas que especifican la direccin de salto inmediato despus del cdigo de operacin, es decir, especifican la etiqueta a la que hay que saltar (denominados saltos directos), y aquellas 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 ope racin 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 lleva 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 lleva 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 (salto directo) 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 sal to. En una instruccin JMP; el propio ensamblador decide si debe generar un salto corto o lejano: en el caso de que 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:
Pgina
29

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Para los siguiente saltos, vamos a tener en cuenta signi ficados de palabras inglesas que nos van a ayudar a defi nir 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 in ferior 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 su perior 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 ; (considerando el signo). ETIQUETA: 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 desborda miento 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.
Pgina
30

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 programa dor. 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 ; (No overflow). ETIQUETA: 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, si AX es 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 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 ; si el nmero de "unos (1)" que hay en AX es impar. ETIQUETA: CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 2.9 Instruccines de salto 2.9.1 Condicionales

Pgina

31

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;PR2_9_1.ASM ; Instruccines de salto 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' 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 AX,00 MOV BX,10 INICIO: INC AX DEC BX CMP AX,BX JE FIN CONDICIONADO JMP INICIO INCONDICIONAL FIN: RET Saltos ENDP Codigo ENDS END

; 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

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 desarrollo en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual. INTRODUCCIN: LOOP: 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 OTRO. El formato es: LOOPNE etiqueta. CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 2.10 Instruccines de ciclos

Pgina

32

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;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: 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

LOOP ETIQUETA

MOV BL,00 ;Asegurar que BL tenga cero, para usalo como acumulador MOV SI,OFFSET Vector ; Mover a SI el Inicio del Vector DEC 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 desarrollo en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual. INTRODUCCIN: EInstruccines Lgicas: NEG, NOT, AND, OR, XOR NEG: Esta instruccin calcula el complemento a entrada lgica salida dos del operando, y lo almacena en el mismo lugar. Esto es, efectivamente, 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 de memoria (dentro del Segmento Extra) indicada por el ; de "BX+SI+2"
Datos de Compuerta Datos de

Pgina

33

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 01011) Tabla de verdad E S S=E 0 1 1 0 NOT SI NOT WORD PTR ES:[0] los 1 a 0. ; Del val or que t enga 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 AND AND AND AX.BX ES:[0], DX DI, ES:[SI] BYTE PTR[9], 3 ; AND l gico entr e AX y BX. El resultado queda en AX. ; Lo mismo pero con posiciones de memoria. ; Lo mismo pero con valores inmediatos.

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 operacio nes que con AND per o utili zando 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
Pgina
34

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 SUBTEMAS 2.11 Instruccines lgicas ;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 00001010 Variable1 PUSH AX 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 1010010111111111 1010111111111111 AX Variable3 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 desarrollo 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

Pgina

35

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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)

Sintaxis: RCR destino, contador

Rotar a la derecha 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 es uno se puede especificar directamente; en caso contrario su valor debe cargarse en CL y especificar CL como segundo operando:
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 SUBTEMAS 2.12 Instruccines de rotacin y desplazamiento ;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' Variable1 DB 5 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

Pgina

36

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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 rellenan 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 llena 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 SUBTEMAS 2.12 Instruccines de rotacin y desplazamiento ;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' Variable1 DB 5

Pgina

37

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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 llegar (es decir, los libros se van apilando cada uno encima del anterior), pero al sacarlos de la estructura se empieza por el ltimo en llegar, 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 introdu cir 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 el operando destino 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 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. PUSHA y 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

38

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 SUBTEMAS 2.13 Instruccines para el stack ;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' Variable1 DB 5 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.

Pgina

39

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los Direccin Direccin Carcter Carcter Carcter programas que se presentan en el manual. DECIMAL HEXADECIMAL ASCII BINARIO DECIMAL
0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 A B I N F O R M A T I C A $ 1001001 1001110 1010000 1001111 1010010 1001101 1000001 1010100 1001001 1000011 1000001 100100 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 DB INFORMTICA$ 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 SUBTEMAS 3.1 Definicin de string ;PR3_1a.ASM ; Definicin de string y desplegado en pantalla 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 INFORMTICA$ 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

;PR3_1b.ASM

Pgina

40

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;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 .STACK ;Inicio del segmento de pila de tamao por defecto de 64Kb END Principal ;Fin del programa ;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Jos Regino Infante Ventura ;Fecha de creacin: Mayo del 2005 ;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: Jos Regino Infante Ventura ;Fecha de creacin: Mayo del 2005 ;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
Pgina
41

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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 EDI , VARIABLE MOV 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 SUBTEMAS 3.2 Almacenamiento en memoria

Pgina

42

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;PR3_2.ASM ; Definicin de string 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 "INFORMTICA$" 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 desarrollo 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.

Pgina

43

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 SUBTEMAS 3.3 Instruccines para manipulacin ;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 CX, Variable1 ; Num De byte/palabras LEA DI, Variable2 ; Direccin de Variable2 LEA SI, Variable3 ; Direccin de Variable3 CLD ; borrar direccin REP MOVS Variable2, Variable3 ;=========================== ;Empleo de la instruccin MOVSB LEA DI, Variable2 ; direccinar Variable2 LEA SI, Variable3 ; direccinar Variable3 CLD ; borrar direccin

Pgina

44

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

MOV CX,5 ; cargar contador REP MOVSB ; transferir 5 bytes ;=========================== RET InstruccinesParaManipulacion ENDP 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 desarrollo 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 SUBTEMAS 3.3 Instruccines para manipulacin ;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' Variable1 DB "INFORMATICA$" 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

Pgina

45

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX MOV ES,AX ;=========================== MOV SI, OFFSET Variable1 MOV DI, OFFSET Variable2 CLD MOV CX, 12 REPE CMPS Variable1 , Variable2 ;=========================== MOV SI, OFFSET Variable1 MOV DI, OFFSET Variable2 CMPS Variable1 , Variable2 CMPS DS:BYTE PTR [SI], ES:[DI] ;=========================== LEA SI , Variable1 LEA 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 desarrollo 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 llena el registro ; no existe razn prctica para utilizar con ella el prefijo REP, para la mayor parte de los propsitos, una sencilla instruccin MOV es adecuada. SCAS : Rastrear cadenas. SCAS / SCASB / SCASW (80286 / 80386)

Pgina

46

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 SUBTEMAS 3.3 Instruccines para manipulacin ;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' Variable1 DB "INFORMTICA$" 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.

Pgina

47

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual.

INTRODUCCIN: Existen tres tipos de interrupciones; BIOS Sistema Bsico de Entrada/Salida (Basic Imput Otput System), S.O. Sistema Operativo, comnmente llamado 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 llamar la atencin entre ellos Procesador,Memoria,Teclado,.... En este manual seran usadas solamente las de BIOS y S.O; siendo ambas provocadas por la instruccin INT NmeroInterupcin en donde previamente se le asign a los registros especificados para esa funcin, los datos que necesite y a la mitad superior del registro AX la funcin que debe llevar acabo la interrupcin, de existir una subfuncin deber estar asignada en la parte baja del mismo registro AH ,AL. CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 3.4 Interrupciones para e/s de strings ;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 de 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 s e 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.

Pgina

48

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrollo 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 SUBTEMAS 4.1 Definicin de interrupciones ;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 es fijo; ; 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 ;=========================== ; Lectura de unsector del disco MOV AH,44H ; Funcin Lectura MOV AL,04H ; Subfuncin lectura MOV BL,1 ; Unidad 0 Default, 1A, 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:

Pgina

49

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo en la que codificar, grabar , edit ar , compil ar y ej ecut ar 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 Cdigo Estado 00H Sin error 09H Intento de DMA de cruzar una frontera de 64K el L/E 01H Comando incorrecto, no reconocido por el 10H Encontr un Control Cclico Redundante (CRC) controlador incorrecta 02H Marca de direccin en disco no encontrada 20H Fallo del controlador (Hardware) 03H Intento de escribir en un disco protegido 40H Fallo en operacin de bsqueda (Hardware) 04H Pista/sector no vlido 80H Fallo en el dispositivo al responder (Tiempo excedido, no Existe disco, puerta abierta) 05H Fallo en la operacin de restablecer 06H Se retir el disco flexible desde el ltimo 0AAH Unidad no preparada acceso 07H Parmetros de la unidadd erroneos 0BBH Error no definido 08H Acceso directo a memoria (DMA) rebasado 0CCH Fallo al escribir 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 SUBTEMAS 4.3 Tipos de Interrupciones ;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' Variable1 DB 512 DUP(R) ;Reserva un espacio de 512 bytes iniciados con R Datos ENDS Codigo SEGMENT PARA 'Codigo'

Pgina

50

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 PUSH MOV MOV MOV MOV MOV MOV MOV MOV LEA AX,00 AX AX, Datos DS, AX AH,2 AL,1 CH,0 CL,1 DH,0 DL,0 BX,Variable1 leidos INT (Discos) 13H ; Interrupcin de BIOS para manipular medios de almacenamiento secundarios ; Funcin para leer uno o ms sectores del disco ; Cantidad de sectores (1...) ; Nmero de la PISTA, en este caso es la CERO (0...) ; Nmero de la SECTOR, en este caso es la UNO (1...) ; Nmero de la CARA, en este caso es la CERO ( 0 ...) ; Nmero de la UNIDAD, en este caso es la CERO (0 Defecto, 1 A, 2 B, 3 C) ; Direccin donde se dejaran los datos leidos, ; dejando en AH el resultado de la operacin y en AL la cantidad de sectores

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 desarrollo en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual. INTRODUCCIN: La pantalla es una malla 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 SUBTEMAS 4.3.2 Interrupciones enternas del BIOS MATERIAL Y EQUIPO NECESARIO: Ordenador con sistema operativo DOS o posterior, con el MACRO y TURBO ASSEMBLER versin 3 o posterior para 16 bits. METODOLOGIA: 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.
Pgina
51

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

;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 desarrollo 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 llene. 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

Pgina

52

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 Determina si se encuentra un carcter. Es parecida a la funcin 01H, excepto que reconoce el teclado ampliado. 12H Regresa el estado actual del Shift. Es similar a la funcin , excepto que puede regresar el estado del 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 , A 1EH 41H empezado con 01 para Esc. Pormedio de stos * 09H Arruba 2AH cdigos un programa puede determinar el origen * 29H Tec. Nm. 29H de cualquier tecleo. Provocando la interrupcin Ins 52 Cero o E0 Ampliado 16H con la funcin 10H y pulsando el carcter, retorna lo siguiente: CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 4.3.2 Interrupciones enternas del BIOS ;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' Msg DB "Pulsaste la tecla uno$" ;$ Fin de la cadena 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:

Pgina

53

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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 SUBTEMAS 4.3.2 Interrupciones externas del BIOS ;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' 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 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: RET ; Fin del procedimeiento principal, regresando el control a quien lo llam 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.

Pgina

54

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. Se familiarice con el ambiente de desarrollo 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 llamadas durante el proceso de compilacin, se incorpora el cdigo completo de la macro, deben de especificarse fuera de cualquier segmento del programa, se les llama 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 llamarlas 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 ellos, 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 llama. CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 5.1 Definicin 5.2 Parmetros y etiquetas 5.3 5.4 Ventajas y desventajas Ensamble ;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 ;Funcin Enrolla pantalla activa hacia arriba MOV AL,0 ;Nmero de lneas, cero para toda la pantalla MOV BH,07 ;Atributo usado para borrar MOV CH,00 ;Fila esquina superior izquierda MOV CL,00 ;Columna esquina superior izquierda MOV DH,25 ;Fila esquina inferior derecha MOV DL,80 ;Columna equina inferior derecha INT 10H ;Interrupcin de video POP DX ;Extraer contenido de los registros de la pila POP CX POP BX POP AX ENDM ;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 MOV AH,2 ;Funcin posicionar cursor 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

Pgina

55

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

POP AX ENDM WRITE MACRO 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 CX ;GUARDA VALORES DX Y CX ORIGINAL EN PILA PUSH DX MOV DX,TIEMPO CICLO2: 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 DX POP CX ENDM 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 "INFORMATICA","$" ;$ Fin de la cadena 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 se encuentre el cursor Delay 0FFFFH Writexy 0ah 0AH Variable2 Delay 0FFFFH Write Variable1 RET MacrosInternas ENDP Codigo ENDS END MacrosInternas

Pgina

56

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo en la que codificar, grabar, editar, compilar y ejecutar los programas que se presentan en el manual. INTRODUCCIN: Se les llama 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, ligado y ejecucin; seran idnticas a haber utillizado macros internas o 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: TEMA SUBTEMAS 5.1 Definicin 5.2 Parmetros y etiquetas 5.3 5.4 Ventajas y desventajas Ensamble ;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 ;Funcin Enrolla pantalla activa hacia arriba MOV AL,0 ;Nmero de lneas, cero para toda la pantalla MOV BH,07 ;Atributo usado para borrar MOV CH,00 ;Fila esquina superior izquierda MOV CL,00 ;Columna esquina superior izquierda MOV DH,25 ;Fila esquina inferior derecha MOV DL,80 ;Columna equina inferior derecha INT 10H ;Interrupcin de video POP DX ;Extraer contenido de los registros de la pila POP CX POP BX POP AX ENDM ;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 MOV AH,2 ;Funcin posicionar cursor MOV DH,Y ;Fila

Pgina

57

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

MOV INT MOV LEA INT POP POP ENDM

DL,X 10H AH,9 DX,Cadena 21H DX AX

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

WRITE MACRO 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 CX ;GUARDA VALORES DX Y CX ORIGINAL EN PILA PUSH DX MOV DX,TIEMPO CICLO2: 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 DX POP CX ENDM ;Instituto Tecnolgico de Ciudad Victoria ;Departamento de Sistemas y Computacin ;Autor: Jos Regino Infante Ventura ;Fecha de creacin: Mayo del 2005 ;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' Variable1 DB "INFORMATICA","$" ;$ Fin de la cadena 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
Pgina
58

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

Delay 0FFFFH Write Variable2 Delay 0FFFFH Writexy 0ah 0AH Variable2 Delay 0FFFFH Write Variable1 RET MacrosExternas ENDP 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 desarrollo 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 llamadas a ellos. Cada vez que se llama a un procedimiento se ejecuta las instruccines que forman ese procedimiento, y despus se devuelve el control al programa que llam 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 llamada generan cuando van a esa posicin particular . La instruccin CALL sirve para llamar 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 llamado, continua la ejecucin del programa que llamo 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 llamar a un procedimiento almacenado en cualquier localidad de la memoria en el sistema. La instruccin Call 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 Call 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 Call lejana llame a un procedimiento ubicado en cualquier lugar en la memoria y que retome desde el procedimiento. Instruccin Call con operandos registros: Las instruccines Call, al igual que las JMP pueden contener un operando registro y un ejemplo es la instruccin Call 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 registros de segmento. La instruccin Call 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 como direccin para un procedimiento lejano. Los Procedimientos pueden ser considerados como NEAR (intrasegmento) o FAR (intersegmento). Estos
Pgina
59

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 SUBTEMAS 6.1 Definicin de procedimientos 6.2 Paso de 6.3 Instruccin para llamada 6.4 Procedimientos parmetros internos ;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' Variable1 DB "INFORMATICA$" 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 PUSH AX ;Guardar contenido del registro que se alterar 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 PUSH AX ;Guardar contenido del registro que se alterar 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 MOV DL,0DH ;Carcter a desplegar Retorno de carro INT 21H POP AX ;Recuperar contenido del registro antes de entrar al procedimiento RET DesNL ENDP Codigo ENDS END ProcedimientoInterno

Pgina

60

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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, llamndosele 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 llevaran la directiva FAR, ya que son externos al segmento de codigo que los llamar, especificado lambien la pseudo operacin PUBLIC. En el programa principal se especificar que se trata de procedimientos externos, mediante la pseudo operacin EXTRN y los llamados 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

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 SUBTEMAS 6.5 Procedimientos externos ; BPE.ASM ; Biblioteca de Procedimientos Externos BPE.ASM EXTRN Cadena : BYTE ;Se especifica que la variable Cadena se encuentra en otro archivo Codigo SEGMENT 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 ;Procedimiento para desplegar una cadena ubicada en la variable cadena

Pgina

61

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

INT 21H RET Despliega ENDP Codigo ENDS END ;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 Retorno de carro Variable1 DB "INFORMATICA$" ;$ Fin de la cadena Datos ENDS Codigo SEGMENT PARA 'Codigo' PUBLIC Cadena ;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 desarrollo 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.

Pgina

62

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS 7.1Pascal y ensamblador 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 desarrollo 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 llamado 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,

Pgina

63

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 llamador 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 SUBTEMAS 7.1Pascal y ensamblador 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;

Pgina

64

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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 SUBTEMAS 7.2 C Ensamblador //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();

*/ */

*/ */ */ */

*/

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

*/

Pgina

65

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 desarrollo 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 SUBTEMAS 7.2 C Ensamblador //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);

Pgina

66

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

} long int LongMul(int X,int Y) { _asm mov eax,X // Codificacin asm lnea por lnea _asm imul Y _asm mov X,eax return (X); } //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 desarrollo 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 SUBTEMAS */ */ */ */ */ */

*/

Pgina

67

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

7.2 Basic Ensamblador

ANEXO No. 1 REPORTE DEL ALUMNO El maestro definir los lineamientos 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: Nombre del tecnolgico, nombre de la prctica, nombre de la asignatura y profesor que la imparte,
nombre del alumno, carrera y nmero de control, lugar y fecha de entrega. 2. Introduccin. Finalidad de la prctica y sntesis del contenido. 3. Marco terico. Definiciones , conceptos,... 4. Desarrollo de la prctica. 5. 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 elaboracin (o ltima modificacin), para cada mdulo se explicar brevemente su funcin especfica, los parmetros de entrada y/o valores de salida. 6. Impresin de los resultados arrojados por la ejecucin del programa. 7. Recomendaciones tcnicas: especifica los mdulos o archivos que componen el programa, las utileras requeridas, la estructura y mtodo de acceso a las tablas o archivos de entrada y/o salida. 8. 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 llega. 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 1.BIBLIOGRAFA

2.-

3.-

4.-

5.-

Autor(es) KIP R. IRVINE Ttulo LENGUAJE ENSAMBLADOR PARA COMPUTADORAS BASADAS EN INTEL QUINTA EDICIN Editorial PEARSON Prentice Hall Autor(es) WILLIAN H. MURRAY III, CHRIS H. PAPPAS Ttulo PROGRAMACIN EN LENGUAJE ENSAMBLADOR 80386/80286 Editorial Osborne/McGraw-Hill 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/

Pgina

68

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 propsitos especficos, grabado en una memoria tipo ROM Read Only Memory Memoria de solo lectura

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

Pgina

69

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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 Lectura aleatoria Escritura aleatoria Tamao de archivo Habilita un campo de registro aleatorio Habilita nueva direccin en el vector de interrupciones
Pgina
70

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

0x26 0x27 0x28 0x29 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

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
Pgina
71

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

0x4B 0x4C 0x4D 0x4E 0x4F

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

0x50 - 0x53 Servicio interno de DOS 0x54 0x55 0x56 0x57 0x58 0x59 0x5A 0x5B 0x5C 0x5E00 0x5E02 0x5E03 0x5F03 0x5F04 0x62 0x67 0x68 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 sencillo 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

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:

Divisin por cero Ejecucin paso a paso No Enmascarable (NMI) Puntos de ruptura Desbordamiento (INTO) Volcar pantalla 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
Pgina
72

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

INT 0F: INT 10: INT 11: INT 12: INT 13: INT 14: INT 15: INT 16: INT 17: INT 18: INT 19: INT 1A: INT 1B: INT 1C: INT 1D: INT 1E: INT 1F: INT 20: INT 21: INT 22: INT 23: INT 24: INT 25: INT 26: INT 27: INT 28: INT 29: INT 2A: INT 2B-2D: INT 2E: INT 2F: INT 30: INT 31: INT 32: INT 33: INT 34-3F: INT 40: INT 41: INT 42: INT 43: INT 44-45: INT 46: INT 47-49: INT 4A: INT 4B-5F: INT 60-66: INT 67: INT 68-6F: INT 70: INT 71: INT 72: INT 73: INT 74:

IRQ 7: LPT1 Servicios de vdeo (BIOS) Listado del equipo (BIOS) Tamao de memoria (BIOS) Servicios de disco (BIOS) Comunicaciones en serie (BIOS) Servicios del sistema (BIOS) Servicios de teclado (BIOS) Servicios de impresora (BIOS) IBM Basic (ROM del BASIC) Arranque del sistema (BIOS) Fecha/hora del sistema Accin de CTRL-BREAK (BIOS) Proceso peridico del usuario (Usuario) Parmetros de vdeo (BIOS) Parmetros del disquete (BIOS) Tabla de caracteres grficos (BIOS) Fin de programa (DOS) Servicio del sistema operativo (DOS) Direccin de terminacin (DOS) DOS CTRL-BREAK (DOS) Manipulador de errores crticos (DOS) Lectura absoluta de disco (DOS) Escritura absoluta en disco (DOS) Terminar permaneciendo residente (DOS) DOS Idle (programas residentes que usan funciones DOS) DOS TTY (impresin en pantalla) Red local MS net Uso interno del DOS Procesos Batch (DOS) Multiplex (DOS) Compatibilidad CP/M-80 (xx:YYyy en JMP XXxx:YYyy) Compatibilidad CP/M-80 (XX en JMP XXxx:YYyy) Reservada Controlador del ratn Reservadas Interrupcin de disquete (BIOS) Parmetros del disco duro 1 (BIOS) Apunta a la INT 10h original del BIOS si existe VGA Caracteres grficos EGA (BIOS) Reservadas Parmetros del disco duro 2 (BIOS) Reservadas Alarma del usuario Reservadas Para uso de los programas Interrupcin de EMS (controlador EMS) Reservadas IRQ 8: Reloj de tiempo real AT (2 chip 8259-AT) IRQ 9: IRQ 2 redireccionada (2 chip 8259-AT) IRQ 10: reservada (2 chip 8259-AT) IRQ 11: reservada (2 chip 8259-AT) IRQ 12: interrupcin de ratn IBM (2 chip 8259-AT)
Pgina
73

de 74

TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

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

Pgina

74

de 74

Вам также может понравиться