REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword...

82
Página de 82 InstitutoTecnológico No.38 Departamento de Sistemas y Computación Ingeniería en Sistemas Computacionales Lenguajes de Interfaz SCC-1014 2-2-4 Tipos de Interfaces: Máquina-Máquina y Hombre-Máquina; este curso considera ambas y se recomienda para ello usar los siguientes lenguajes de forma individual o mezclados (Ensamblador “tasm, masm y nasm”, C ”gcc, devcpp Visual C” , Java, Processing, Basic y Arduino (basasdo en Wiring)). 1.- Introducción al lenguaje ensamblador. 1.1 Importancia de la programación en lenguaje ensamblador. LENGUAJE ENSAMBLADOR OBJETIVO GENERAL: OBJETIVO GENERAL: Que el alumno, al término de todas las actividades sea capaz de utilizar el Lenguaje Ensamblador que permita fortalecer los conocimientos sobre este lenguaje de programación, los cuales serán presentados de menor a mayor grado de dificultad, con la finalidad de crearle un mayor interés y permita aprender el correcto uso de cada una de las instrucciones de que está compuesto, corroborar la sintaxis y utilidad al ejecutar las prácticas propuestas. Esperando que el alumno sea capaz de experimentar con nuevas rutinas que le permitirá solucionar de una forma más fácil los retos que se le presenten en el control de lel ordenador y los periféricos estandarizados o no. SIGNIFICADOS: SIGNIFICADOS: Lenguaje Ensamblador: Es un lenguaje simbólico que permite programación a bajo nivel, lo cual proporciona control total del hardware y software de un sistema de cómputo a traves de un conjunto de mnemònicos. Un ensamblador es una aplicación de sistema que se encarga de traducir un archivo fuente escrito con mnemònicos, a un archivo objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. Características: Lenguaje compilado “Una vez generado el código ejecutable no requiere del lenguaje para su ejecución”. No es sensible al contexto “Sin distingo entre mayúsculas y minúsculas”. Lenguaje de bajo nivel “Después de este solo existen ceros y unos o código máquina”. Lenguaje de programación más rápido “Por ser compilado y existir una alineación uno a uno con el código máquina”. No es para hacer grandes sistemas, es para hacer partes de código que se requiere ejecutar rápidamente y en muchas ocasiones”. Permite como forma de subprogramación a las macros, procedimientos y librerías. Puede ser usados en equipos de computo o microcontroladores. Permite la manipulación de los registros internos del procesador. Puede usar las interrupciones del BIOS “Sistema Básico de Entrada/Salida” o del SO “Sistema Operativo”. Al ser un lenguaje de bajo nivel, existe una mayor interdependencia con el hardware. El tipo de programación es mas detallada que las de uno de lato nivel. No existen tipos de datos, solo se reservan espacios de memoria para alojarlos: BYTE DB 00 WORD DW 00 00 Word (word, palabra) 16 bits. DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple word, cuadruple palabra) 64 bits. Tipos de ensambladores: Ensambladores básicos. Son de muy bajo nivel y su tarea consiste básicamente en ofrecer nombres simbólicos a las distintas instrucciones (mnemònicos) de la máquina apropiada, además de ofrecer un formato de escritura cómodo para expresar los parámetros y cosas tales como los modos de direccionamiento. Además, reconoce una serie de directivas (o meta instrucciones) que indican ciertos parámetros de funcionamiento del ensamblador. Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores básicos, fueron muy populares en las décadas de los 50 y los 60, antes de la generalización de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador y además proporcionan una serie de directivas para definir e invocar macro instrucciones (o simplemente, macros). Cuando invocamos a una macro, ésta se expande al cuerpo que se definió. Ensambladores modulares 32-bits. Pueden ser de alto y bajo nivel, pero solo emulado en 32-bits. Microsoft aún 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. Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura 1

Transcript of REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword...

Page 1: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Tipos de Interfaces: Máquina-Máquina y Hombre-Máquina; este curso considera ambas y se recomienda para ello usar los siguientes lenguajes de forma individual o mezclados (Ensamblador “tasm, masm y nasm”, C ”gcc, devcpp Visual C” , Java, Processing, Basic y Arduino (basasdo en Wiring)).

1.- Introducción al lenguaje ensamblador.1.1 Importancia de la programación en lenguaje ensamblador.

LENGUAJE ENSAMBLADOROBJETIVO GENERAL:OBJETIVO GENERAL:

Que el alumno, al término de todas las actividades sea capaz de utilizar el Lenguaje Ensamblador que permita fortalecer los conocimientos sobre este lenguaje de programación, los cuales serán presentados de menor a mayor grado de dificultad, con la finalidad de crearle un mayor interés y permita aprender el correcto uso de cada una de las instrucciones de que está compuesto, corroborar la sintaxis y utilidad al ejecutar las prácticas propuestas. Esperando que el alumno sea capaz de experimentar con nuevas rutinas que le permitirá solucionar de una forma más fácil los retos que se le presenten en el control de lel ordenador y los periféricos estandarizados o no.

SIGNIFICADOS:SIGNIFICADOS:Lenguaje Ensamblador:Es un lenguaje simbólico que permite programación a bajo nivel, lo cual proporciona control total del hardware y

software de un sistema de cómputo a traves de un conjunto de mnemònicos.Un ensamblador es una aplicación de sistema que se encarga de traducir un archivo fuente escrito con

mnemònicos, a un archivo objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado.

Características:• Lenguaje compilado “Una vez generado el código ejecutable no requiere del lenguaje para su ejecución”.• No es sensible al contexto “Sin distingo entre mayúsculas y minúsculas”.• Lenguaje de bajo nivel “Después de este solo existen ceros y unos o código máquina”.• Lenguaje de programación más rápido “Por ser compilado y existir una alineación uno a uno con el código

máquina”.• No es para hacer grandes sistemas, es para hacer partes de código que se requiere ejecutar rápidamente y en

muchas ocasiones”.• Permite como forma de subprogramación a las macros, procedimientos y librerías.• Puede ser usados en equipos de computo o microcontroladores.• Permite la manipulación de los registros internos del procesador.• Puede usar las interrupciones del BIOS “Sistema Básico de Entrada/Salida” o del SO “Sistema Operativo”.• Al ser un lenguaje de bajo nivel, existe una mayor interdependencia con el hardware.• El tipo de programación es mas detallada que las de uno de lato nivel.• No existen tipos de datos, solo se reservan espacios de memoria para alojarlos:• BYTE DB 00• WORD DW 00 00 Word (word, palabra) 16 bits.• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits.• QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple word, cuadruple palabra) 64 bits.

Tipos de ensambladores:Ensambladores básicos. Son de muy bajo nivel y su tarea consiste básicamente en ofrecer

nombres simbólicos a las distintas instrucciones (mnemònicos) de la máquina apropiada, además de ofrecer un formato de escritura cómodo para expresar los parámetros y cosas tales como los modos de direccionamiento. Además, reconoce una serie de directivas (o meta instrucciones) que indican ciertos parámetros de funcionamiento del ensamblador.

Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores básicos, fueron muy populares en las décadas de los 50 y los 60, antes de la generalización de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador y además proporcionan una serie de directivas para definir e invocar macro instrucciones (o simplemente, macros). Cuando invocamos a una macro, ésta se expande al cuerpo que se definió.

Ensambladores modulares 32-bits. Pueden ser de alto y bajo nivel, pero solo emulado en 32-bits. Microsoft aún 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.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

1

Page 2: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

HLA High-Level Assembler, es un lenguaje poderoso que soporta de bajo y alto-nivel 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.

NOMBRE: Importancia del lenguajeOBJETIVO:

Que el alumno valorare la importancia de conocer este lenguaje, al conocer sus aplicaciones y el uso en diferentes plataformas de “hardware y software”.

INTRODUCCIÓN: Este lenguaje da la facilidad y las herramientas necesarias para tomar el control de todo lo que la PC puede

realizar físicamente. Como resultado de operaciones muy básicas suministradas por el ensamblador que realiza tareas simples de transferencia de datos y operaciones lógicas, una página de códigos en lenguaje ensamblador palidece en comparación con una página de código en lenguaje de alto nivel.

Ventajas:Velocidad, control de hardware y sofware, todos los procesadores aceptan una variante de ensamblador como su forma de programación.

Desventajas:Dependiente de la plataforma en donde se desarrolló, mayor costo en su ciclo de vida, peligro de afectar recursos inesperadamente.

Programación con segmentos:Programación con segmentos:Al crear un programa con segmentos, cada uno de ellos pude ser de hasta 64 Kb , haciendo uso deAl 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 propósito general (AX...), pudiendo usar las mitades (AH...). Este tipo deregistros de 16 bits (IP,SS...) y en los de propósito general (AX...), pudiendo usar las mitades (AH...). Este tipo de programación es aceptada desde los procesadores 8008, hasta los actuales pentium.programación es aceptada desde los procesadores 8008, hasta los actuales pentium.

Pila SEGMENT PARA STACK ‘STACK’Pila SEGMENT PARA STACK ‘STACK’Datos Datos SEGMENT PARASEGMENT PARA ‘datos’ ‘datos’Código Código SEGMENT PARASEGMENT PARA ‘código’ ‘código’

Programación con secciones:Programación con secciones:Al crear un programa con secciones lógicas es posible referenciar por programa hasta 4Gb, haciendo usoAl crear un programa con secciones lógicas es posible referenciar por programa hasta 4Gb, haciendo uso

de registros de 32 bits (EIP...) y los de propósito general (EAX...). el inicio de cada sección determina el fin de la anterior.de registros de 32 bits (EIP...) y los de propósito general (EAX...). el inicio de cada sección determina el fin de la anterior. Existen dos secciónes principales, la .CODE y .DATA; esta última puede ser dividida en dos categorías.Existen dos secciónes principales, la .CODE y .DATA; esta última puede ser dividida en dos categorías.

.386.386 ; Procesador 80386 con registros de 32 bits.; Procesador 80386 con registros de 32 bits.

.286.286 ; Procesador 80286 con registros de 16 bits.; Procesador 80286 con registros de 16 bits.

.MODELL SMALL ; Modos para la compilación TINY,SMALL,MEDIUM,COMPACT o LARGE

.DATA.DATA ;; Esta sección contiene la información inicializada.

.DATA?.DATA? ;; Esta sección contiene la información no inicializada.

.CONST.CONST ;; Esta sección contiene declaraciones de constantes.

.CODE.CODE ;; Esta sección contiene las instrucciones del programa.

.STACK 64.STACK 64 ;; Esta sección contiene el espacio para la pila; por defautl es 64.

PRÁCTICA No. NOMBRE: Formato de un programaOBJETIVO: 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 básica 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.

INTRODUCCIÓN: 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:

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

2

Page 3: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

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 Operación Operando(s) Comentario

1.- Campo Nombre Todas las letras de la A a la Z . Dígitos del 0 al 9 . Símbolos Especiales . Variables, rótulos, Constantes, Nombre segmento, Nombre de procedimientos, Nombre de macros.

Variables Representa una posición de memoria que es accesible por un programa y el contenido de esta posición puede cambiar durante la ejecución del programa.

Rótulo Son los nombres aplicados a instrucciones ejecutables en los programas de aplicación los cuales son referenciados como código relativo un nombre o rotulo pudiendo tener 3 atributos.

Dirección de SegmentoDesplazamiento de segmentoDescriptor de accesibilidad NEAR o FAR cuando no se especifica, se considera NEAR.

DatosPilaCiclo:Countador label nearFinal label far

Constantes Binaria Consta de ceros 1/0 una seguida por la letra b.

Ocho equ 00001000b Decimal Consta de series de dígitos del 0 al 9 y opcionalmente seguida por la letra D.

Cuarenta equ 40D Treinta equ 30

Hexadecimal Consta de series de dígitos 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 Carácter

Puede tener cualquier símbolo del código ASCII encerrado entre comillas simples o dobles si contiene más de dos caracteres la pseudo operación DB (Define byte) debe ser utilizada si la cadena carácter 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 notación científica . Flotante DD 3.1415E-1 Real Hexadecimal

Dígitos 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. Código SEGMENT PARA ‘codigo’

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

3

Page 4: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

2.- Campo Operación Este campo contiene un nemotècnico para ejecutar una instrucción del microprocesador.

Mov AX, 0AF2Ah3.- Campo Operando

Este campo contiene la posición o posiciones donde estan los datos que van a ser manipulados por la instrucción de la operación .

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;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;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 instrucción RET.;Nombre Operación Operando(s) ComentarioTres EQU 3Q ;Constante octalOcho equ 00001000b ;Constante binariaPila SEGMENT PARA STACK 'STACK' ; Pila es nombre del segmento

DB 64 DUP(0)Pila ENDSDatos SEGMENT PARA 'Datos' ; Datos es nombre de segmento

Variable1 DB 5Datos ENDSCodigoSEGMENT PARA 'Codigo' FormatoPrograma PROC FAR ;Procedimiento principal, punto de entrada del programa

ASSUME CS:Codigo, DS:Datos, ES,Datos, SS:PilaPUSH DS ; Guardar el contenido del registro de Segmento de Datos en la pilaMOV AX,00PUSH AXMOV AX,DatosMOV DS,AX ;Operación MOV con los operandos destino DS y fuente AXMOV ES,AX ;El segmento extra es requerido por algunas interrupciones

;Agrega la lògica necesaria por tu programaRET ;Retorno del procedimiento y fin del programa

FormatoPrograma ENDPCodigo ENDS

END FormatoPrograma

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;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 interrupción 21H termine el programa.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

4

Page 5: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

.286

.MODEL SMALL

.CODE Programa: ;Agrega la lógica necesaria para tu programa

MOV AX,4C00H ;Función para terminar programaINT 21H ;Interrupción para terminarlo

.STACK 64END Programa

1.2 El procesador y sus registros internosEl μP Microprocesador no trabaja solo, sino que forman parte de un sistema mayor. El microprocesador es el

"cerebro" o parte inteligente de este sistema y puede ser clasificados de la siguientesmaneras:CISC: Complex Instructions Set Computer, conjunto de instrucciones complejo. RISC: Reduced Instructions Set Computer, conjunto de instrucciones reducido. El µC Microcontrolador esta formado por un Microprocesador y el conjunto de subsistemas que normalmente requiere

un microprocesador: memoria volátil (calculo temporal), memoria no volátil (donde almacena el programa), entrada y salida.

Se define ahora lo que es un Microprocesador. Es un dispositivo integrado digital capaz de interpretar y ejecutar un conjunto secuencial de instrucciones (programa). Básicamente contiene circuitos electrónicos que realizan

operaciones aritméticas , lógicas y de control. Se trata de un sistema muy complejo, por eso debe ir integrado en chips.

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 MMX™Technology.

Consulta www.intel.com, http://www.amd.com

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 amplía cada uno de esos registros a 64-bit, que entonces se refieren como RAX, RBX, RCX,

RDX, RSP, RBP, RSI, y RDI. También 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 versión 64-bit, R11d es el de 32 bits más bajo del mismo registro, R11w es los 16 pedacitos más bajos del registro y

R11l es el octeto más 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 más bajos de ESI. Los registros de 8

bits AH, BH, el CH y el ADO están 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 Phenom™n™

SPARC64 VII CON 8 hilos de ejecución

UltraSPARC T1 32 hilos de ejecución

SPARC (del inglés 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 fácilmente compiladores de alto rendimiento y una significativa reducción de memoria en las instrucciones load/store en relación con otras arquitecturas RISC. Las ventajas se aprecian sobre todo en programas grandes.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

5

Page 6: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

ProcesadorINTEL”Pentium”, SUN “Sparc”, APPLE “POwerPC”, IBM “Power”, ZILOG “Z80”, MOTOROLA “M68000, MPC7455”, AMD Advanced Micro Devices “Duron”.Tamaño de registro 8, 16, 32 y 64 biits

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

1.1 Introducciòn

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

1.2 Importancia del Lenguaje Ensamblador

PRÁCTICA No. 3NOMBRE: Historia de los procesadoresOBJETIVO: - Que el alumno identifique mediante imágenes y físicamente las marcas y modelos de procesadores.

INTRODUCCIÓN: Un microprocesador es un circuito integrado construido en un pedazo diminuto de silicio. Contiene miles, o incluso

millones, de transistores que se interconectan vía los rastros extrafinos de aluminio. La función de los transistores es guardar y manipular datos juntos para que el microporcesador pueda realizar una gran variedad de funciones.

Calsificación deacuerdo a su marca:Intel 8008,8088,80286,80386,Pentium,I3,I5,I7.AMD K5, K6, Duron, Athlon, Phenom, Opteron 6300 con 16 nùcleos de 2.8Ghz,Cyrix MI, MII.Motorola M68000, MPC7455.Texas Instruments ARM® Cortex™-A15 Core, ARM® Cortex™-A9 Core, ARM® Cortex™-A8 Core

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

6

Page 7: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

ARM9™ Core.Samsung Snapdragon Exynos.

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

1.3 Historia de los procesadores

PRÁCTICA No. 5NOMBRE: Diagrama de componentes internosOBJETIVO: - Que el alumno evalue los componentes

internos de que constan los procesadores con diferente arquitectura.

INTRODUCCIÓN: Componentes del microprocesador

UNIDAD DE EJECUCIÓN Una vez que la unidad de decodificación sabe cuál es el significado de la instrucción leída de memoria, se lo comunica a la unidad de ejecución. Esta unidad será la encargada de consumar la ejecución y para ello activará las señales 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 instrucciones. UNIDAD ARITMETICO LOGICA (ALU) La ALU “Aritmethic Logic Unit” es el bloque funcional del microprocesador encargado de realizar todas aquellas operaciones matemáticas (suma, resta, multiplicación y division). Las operaciones que realiza son las siguientes: suma, resta, multiplicación, división y aquellas que trabajan con dígitos binarios (10 que se conoce como operaciones lógicas: AND, NOR, NOT, NAND, OR, X-OR, etc). En suma, saber cómo funciona un microprocesador, implica conocer cómo se van ejecutando cada una de las instrucciones del programa que se almacena en memoria. Los pasos globales que se siguen a la hora de consumar una instrucción son: UNIDAD DE DECODIFICACION Se encarga de decodificar la instrucción que se va a ejecutar. Es decir, saber qué instrucción es. Cuando el microprocesador lee de memoria una instrucción, el código de esa instrucción le llega a esta unidad. Esta unidad se encarga de interpretar ese código para averiguar el tipo de instrucción a realizar. Por ejemplo, instrucciones de suma, multiplicación, almacenamiento de datos en memoria,etc.

UNIDAD DE CONTROLEs el centro nervioso del ordenador, ya que desde ella se controlan y gobiernan todas las operaciones. Cómo funciones básicas tiene: tomar las instrucciones de memoria decodificar o interpretar las instrucciones ejecutar las instrucciones ( tratar las situaciones de tipo interno (inherentes a la propia CPU) y de tipo externo (inherentes a los periféricos). Para realizar su función, la unidad de control consta de los siguientes elementos:

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

Unidad AritméticaLògica

Unidad de Control

Registros

Reloj R O M R A M Puertos

Bus de Control

Bus de Datos

Bus de Direcciones

Unidad de ejecución

Búsqueda de la intrucciòn

Decodificaciòn de la intrucciòn

Búsqueda de operandos

Ejecuciòn de la intrucciòn

Almacenamiento del resultado

7

Page 8: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Registro contador de programa Contiene permanentemente la dirección de memoria de la siguiente instrucción a ejecutar. Al iniciar la ejecución de un programa toma la dirección de su primera instrucción. Incrementa su valor en uno, de forma automática, cada vez que se concluye una instrucción, salvo si la instrucción que se está ejecutando es de salto o de ruptura de secuencia, en cuyo caso el contador de programa tomará la dirección de la instrucción que se tenga que ejecutar a continuación; esta dirección está en la propia instrucción en curso. Registro de instrucción Contiene la instrucción que se está ejecutando en cada momento. Esta instrucción llevará consigo el código de operación (un código que indica qué tipo de operación se va a realizar, por ejemplo una suma) y en su caso los operandos (datos sobre los que actúa la instrucción, por ejemplo los números a sumar) o las direcciónes de memoria de estos operandos. Decodificador Se encarga de extraer el código de operación de la instrucción en curso (que está en el registro de instrucción), lo analiza y emite las señales necesarias al resto de elementos para su ejecución a través del secuenciador . Reloj Proporciona una sucesión de impulsos eléctricos o ciclos a intervalos constantes (frecuencia constante), que marcan los instantes en que han de comenzar los pasos de que consta cada instrucción. Secuenciador En este dispositivo se generan órdenes muy elementales (microórdenes) que, sincronizadas por los impulsos de reloj, hacen que se vaya ejecutando poco a poco la instrucción que está cargada en el registro de instrucción.

UNIDAD ARITMÉTICO-LÓGICA (ALU)Esta unidad se encarga de realizar las operaciones elementales de tipo aritmético (sumas, restas, productos, divisiones) y de tipo lógico (comparaciones). A través de un bus interno se comunica con la unidad de control la cual le envia los datos y le indica la operación a realizar . La ALU está formada a su vez por los siguientes elementos: Circuito operacional Contiene los circuitos necesarios para la realización 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 operación 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 instrucción antes de la realización de la operación por parte del circuito operacional. También 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 realimentación en el caso de operaciones encadenadas. Asimismo tiene una conexión directa al bus de datos para el envío de los resultados a la memoria central o a la unidad de control.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 operación realizada y que habrán 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.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

ACUMULADOR

CIRCUITOOPERACIONAL

REGISTROS DE ENTRADA

MICROINSTRUCCIONES

BANDERAS

8

RELOJ

SECUENCIADOR

PROGRAMA FUENTE

DECODIFICADOR

REGISTRO DE INTRUCCIONESMICROORDENES

BUS INTERNO

Page 9: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Se conoce como set de instrucciones al conjunto de instrucciones que es capaz de entender y ejecutar un microprocesador.En función del tipo de microprocesador, concretamente si es más avanzado o no, podrá entender y ejecutar más o menos instrucciones. Las cuales se clasifican según su función en:

a).- Transferencia de datos. b).- Cálculo. c).- Transferencia del control del programa. d).- Control.

a).- instrucciones de transferencia de datos Estas instrucciones mueven datos (que se consideran elementos de entrada/salida) desde la memoria hacia los registros internos del microprocesador, y viceversa. También se usan para pasar datos de un registro a otro del microprocesador. Existen algunas instrucciones que permiten mover no sólo un dato, sino un conjunto de hasta 64 KBytes con una sola instrucción.b).- instrucciones de cálculo Son instrucciones destinadas a ejecutar ciertas operaciones aritméticas, como por ejemplo sumar, restar, multiplicar o dividir, o ciertas operaciones lógicas, como por ejemplo AND, OR, así como desplazamiento y rotación de bits. c)._ instrucciones de transferencia del control del programa Permiten romper la secuencia líneal del programa y saltar a otro punto del mismo. Pueden equivaler a la instrucción GOTO que traen muchos lenguajes de programación. d).- instrucciones de control Son instrucciones especiales o de control que actúan sobre el propio microprocesador. Permiten acceder a diversas funciones, como por ejemplo activar o desactivar las interrupciones, pasar órdenes al coprocesador matemático, detener la actividad del microprocesador hasta que se produzca una interrupción, etc. Prácticamente todas las instrucciones están formadas por dos elementos:

código de operación que indica el tipo de operación se va a realizar operandos, que son los datos sobre los que actúa.

Por ejemplo, una instrucción que sume dos números está formado por: código de operación que indique "sumar"; primer número a sumar y segundo número a sumar.

Existen instrucciones que sólo tienen un operando o incluso que no tienen ninguno, estando formadas solamente por el código de operación. EJECUCIÓN DE LAS instruccionesPara 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 instrucciones que lo componen e irá realizando las tareas correspondientes.

Se denomina ciclo de instrucción al conjunto de acciones que se llevan a cabo en la realización de una instrucción. Se compone de dos fases: Fase de búsqueda y Fase de ejecución .Fase de búsqueda En esta fase se transfiere la instrucción que se va a ejecutar desde la memoria central a la unidad de control.Fase de ejecución Consiste en la realización de todas las acciones que conlleva la propia instrucción.Una forma de clasificar los microprocesadores es en función de las instrucciones que son capaces de ejecutar. Podemos encontrar dos tipos: microprocesadores: Con tecnología CISC y RISC.

Anteriormente hemos definido el set de instrucciones como el conjunto de instrucciones que es capaz de entender y ejecutar un microprocesador. Si ese microprocesador entiende y ejecuta muchas instrucciones (cientos de ellas), se trata entonces de un microprocesador CISC. En cambio, si el microprocesador entiende y ejecuta muy pocas instrucciones (decenas de ellas), se trata entonces de un microprocesador RISC. En principio, parece que la tecnología CISC es mucho más ventajosa que la RISC. Pero no es así: un micro CISC tarda mucho tiempo en ejecutar cada una de esas instrucciones. En cambio un micro RISC, como solo entiende unas cuantas, su diseño interno le permite ejecutarlas en muy poco tiempo, a una gran velocidad, mucho más rápido que un microprocesador CISC. Cuando se desee que un microprocesador RISC ejecute cierta instrucción que no entiende, ésta se descompondrá en varias instrucciones de las sencillas que sí entiende. Aún así, descomponiendo una instrucción compleja en varias

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

C P U

B U S E S

ME

MO

RIA

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción n

9

Page 10: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

sencillas, es capaz de operar mucho más rápido que el microprocesador CISC, el cual no tiene que descomponer esa instrucción porque la entiende directamente.Prácticamente, todos los microprocesadores que se utilizan en la fabricación de ordenadores personales (microprocesadores fabricados por Intel) son de tecnología CISC. Intel, poco a poco, va abandonando la tecnología CISC y la sustituye por tecnología RISC. Así por ejemplo, un Pentium, sin dejar de pertenecer a la categoría CISC incorpora algunas características de los micros RISC. Es de esperar que en un futuro, los micros fabricados sean de tecnología RISC; entonces los ordenadores serán muchísimo más rápidos 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

PRÁCTICA No. 6NOMBRE: Descripción de componentesOBJETIVO: - Que el alumno ejecute un programa observando los contenidos de los registros.

INTRODUCCIÓN: Los registros internos del microprocesador Registros de datos: AX = Acumulador. Es el registro principal utilizado en las instrucciones aritméticas. 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 también para operaciones aritméticas.

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 código. Contiene la dirección del segmento de código, lo que son las instrucciones del programa. DS = Registro de segmento de datos. Contiene la dirección 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 dirección del segmento de pila. ES = Registro de segmento extra. El segmento extra es un segmento adicional que se utiliza para superar la limitación 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 dirección 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 instrucciones: IP = Puntero de instrucción (Instruction Pointer)

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

10

Page 11: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

* 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 información 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 comparación o una instrucción aritmética. CF = Bandera de acarreo. Indica acarreo en las instrucciones aritméticas (Carry Flag) OF = Bandera de desbordamiento aritmético (Overflow Flag) ZF = Bandera de resultado cero o comparación igual (Zero Flag) SF = Bandera de resultado o comparación negativa (Sign Flag) PF = Bandera de paridad (Parity Flag) AF = Bandera auxiliar. Indica si hay necesidad de ajuste en las operaciones aritméticas con números BCD (Auxiliar Flag) * Banderas de control: Registran el funcionamiento del procesador: DF = Bandera de dirección. Controla la dirección (hacia adelante o hacia atrás) en las operaciones con cadenas de caracteres incrementando o decrementando automáticamente los registros índices (SI y DI) (Direction Flag) IF = Bandera de interrupciones. Indica si están permitidas o no las interrupciones de los dispositivos externos (Interrupt Flag) TF = Bandera de traza. Controla la operación modo paso a paso (Trap Flag)

=========================

Main Registros (64/32/16/8 bits)RAX EAX AX AH-AL A Registro AcumuladorRBX EBX BX BH-BL B Registro BaseRCX ECX CX CH-CL C Registro ContadorRDX EDX DX DH-DL D Registro DatosIndex Registros ( 64/32/16 bits)RSI ESI SI Source IndexRDI EDI DI Destination IndexRBP EBP BP Base PointerRSP ESP SP Stack PointerAdditional Registros (64 bits)R8 Registro 8R9 Registro 9R10 Registro 10R11 Registro 11R12 Registro 12R13 Registro 13R14 Registro 14R15 Registro 15Son 16 registros de datos de 64 bits (8 bytes): RAX, RBX, RCX, RDX, RSI, RDI,RBP, RSP y R8-R15.

Instruction pointer ( 64/32/16 bits)RIP EIP IP Instruction PointerSegment Registros (16 bits) CS Code Segment DS Data Segment ES ExtraSegment FS F Segment GS G Segment SS Stack Segment

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

11

Page 12: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

XMM (SSE(Streaming SIMD Extensions) es una extensión al grupo de instrucciones MMX ) registros (128 bits)XMM0 (128 bits) Registro 0XMM1 (128 bits) Registro 1XMM2 (128 bits) Registro 2XMM3 (128 bits) Registro 3XMM4 (128 bits) Registro 4XMM5 (128 bits) Registro 5XMM6 (128 bits) Registro 6XMM7 (128 bits) Registro 7XMM8 (128 bits) Registro 8XMM9 (128 bits) Registro 9XMM10 (128 bits) Registro 10XMM11 (128 bits) Registro 11XMM12 (128 bits) Registro 12XMM13 (128 bits) Registro 13XMM14 (128 bits) Registro 14XMM15 (128 bits) Registro 15================================

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

1.5.1 Descripción de componentes

1.3 La memoria principal (RAM)Memoria

Clasificación:Primaria “Electrónica” y Secundaria “Magnética u Optica”.Permisos de acceso RAM “Memoria de acceso Aleatorio” y SAM “Memoria de acceso

secuencial”.Permisos de Lectura/escritura ROM “Memoria de solo lectura” y RWM ”Memoria de lectura y

escritura”.Memoria Caché “Memoria primaria”Todas las tarjetas madre Pentium deben tener en ellas un caché de Nivel 2, de 256 a 512 Kb.Memoria RAM “Random Access Memories”Todas las tarjetas madre Pentium y Pentium Pro deben emplear ya sea SIMMs (Modulo sencillo de memoria en línea) de 72 pins o bien DIMMs(Módulo Dual de Memoria en líneas) de 168 pins.Debido al diseño 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 mínimo para las aplicaciones consumidoras de memorias de hoy en día, en realidad podría requerir mucho más.Las tarjetas madre Pentium deben de manejar un mínimo 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 combinación) y entre más, mejor.Para un máximo desempeño, busque sistemas que manejen SIMMs/DIMMs de tipo SDRAM (DRAM Sincrona) o EDO (salida de Datos Ampliada). Los SIMMs deberán tener una velocidad de 70 ns o más.Lo ideal en los sistemas de misión crítica es que usen SIMMs de paridad y asegurarse de que la tarjeta madre maneje por completo la verificación de paridad o incluso también el ECC Código de corrección de errores.

DDR (Double Data Rate) significa doble tasa de transferencia de datos en español. Son módulos de memoria RAM compuestos por memorias síncronas (SDRAM), disponibles en encapsulado DIMM, que permite la transferencia de datos por dos canales distintos simultáneamente en un mismo ciclo de reloj. Los módulos DDR soportan una capacidad máxima de 1 GiB.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

12

Page 13: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

DDR3 es un tipo de memoria RAM. Forma parte de la familia SDRAM de tecnologías 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 rápido, entonces permitiendo velocidades pico de transferencia y velocidades de bus más altas que las versiones DDR anteriores. Sin embargo, no hay una reducción en la latencia, la cual es proporcionalmente más alta. Además la DDR3 permite usar integrados de 512 megabits a 8 gigabytes, siendo posible fabricar módulos de hasta 16 Gb.

SDRAM (de las siglas en Inglés Synchronous Dynamic Random-Access Memory) se refiere a una familia de memorias dinámicas de acceso aleatorio (DRAM) que tienen una interfaz síncrona.

La RDRAM es un tipo de memoria síncrona, conocida como Rambus DRAM. Éste es un tipo de memoria de siguiente generación a la DRAM en la que se ha rediseñado la DRAM desde la base pensando en cómo se debería integrar en un sistema.

DDR SDRAM (de las siglas en Inglés Double Data Rate Synchronous Dynamic Random-Access Memory) es un tipo de memoria RAM, de la familia de las SDRAM.

1.4 El concepto de interrupcionesUna interrupción es una llamada de atención, con la finalidad de ser atendido. Puesen ser de Harware, Software

(SO “Sistema Operativo”) o Firmware (Software inmerso o incorpora en el hardware, ejemplo el BIOS “Aistema Básico de Entrada Salida”).

Este documento se enfoca a las del Sistema Operativo y las del BIOS haciendo uso de la instrucción INT/IRET. Lo último que hace un manejador de interrupciones es ejecutar la instrucción IRET. La instrucción IRET regresa el control del CPU al proceso interrumpido haciendo lo opuesto a la instrucción INT.

1.5 Llamadas a servicios del sistemaLas llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador

transfiera el control a un código privilegiado (generalmente es el núcleo), previamente especificado. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador.Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.Las bibliotecas como intermediariasGeneralmente, los sistemas operativos proveen bibliotecas que relacionan los programas de usuario y el resto del sistema operativo, usualmente una biblioteca C como glibc o el runtime de Microsoft C. Esta biblioteca maneja los detalles de bajo nivel para transferir información al kernel y conmutar a modo supervisor, así como cualquier procesamiento de datos o tareas que deba ser realizada en modo supervisor. Idealmente, esto reduce la dependencia entre el sistema operativo y la aplicación, e incrementa su portabilidad.Ejemplos y herramientasEn los sistemas operativos bajo norma POSIX o similares, algunas llamadas al sistema muy usadas son open, Read (system call), write, close, wait, exec, fork, exit y kill. Los sistemas operativos actuales tienen cientos de llamadas, por ejemplo Linux 2.x y FreeBSD tienen más de 300.Implementaciones típicasLa implementación de las llamadas al sistema requiere un control de transferencia que involucra características específicas de la arquitectura del procesador. Una forma típica de implementar es usar una interrupción por software. Linux usa esta implementación en la arquitectura x86.Para los procesadores con arquitectura RISC, ésta es la única forma, pero arquitecturas CISC como x86 soportan otras técnicas adicionales. Un ejemplo es SYSCALL/SYSRE.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

13

Page 14: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

1.6 Modos de direccionamientoPRÁCTICA No. 9NOMBRE: direccionamiento de datos implícitoOBJETIVO: Que el alumno:- Sea capaz de efectuar y entender el funcionamiento del direccionamiento implícito. - Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Son todas las intrucciones que no llevan parámetros, que no accesan memoria, o bien que tienen una forma

específica de accesarla.Ejemplos: CLI, PUSHF, POPF, NOPEn este modo se especifican los operandos en forma implícita en la definición de la instrucción. Por ejemplo, la instrucción "complementar acumulador" es la instrucción de modo implícito porque el operando en el registro de acumulador esta implícito en la definición de la instrucción. De hecho todas las instrucciones de referencia a registro que utilizan un acumulador son instrucciones de modo implícito.

Las instrucciones de dirección cero en un ordenador organizado con pila son instrucciones de modo implícito porque esta implícito 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 direccionamiento de los datos 1.7.1 Implícito

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR1_7_1.ASM ;direccionamiento implícito;El operando sin operadoresPila SEGMENT PARA STACK ‘STACK’

DB 64 DUP(0)Pila ENDSCodigo SEGMENT PARA ‘Codigo’

Implícito PROC FARASSUME CS:Codigo,SS:PilaPUSHFPOPFCLINOPRET

Implícito ENDPCodigo ENDS

END Implícito

PRÁCTICA No. 10NOMBRE: direccionamiento de datos inmediatoOBJETIVO: Que el alumno:- Sea capaz de efectuar y entender el funcionamiento del direccionamiento inmediato. - Aprenda la sintaxis básica 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.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

14

Page 15: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

INTRODUCCIÓN: 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 instrucción. Por tanto, es rápido aunque no tanto como el modo registro; requiere ir al BIU por el dato. En este modo se especifica el operando en la instrucción misma. En otras palabras, una instrucción de modo inmediato tiene un campo de operando, en lugar de un campo de dirección. Un campo de operando contiene el operando real que se va a usar junto con la operacion especificada en la instrucción. Las instrucciones de modo inmediato son utiles para Iniciar registros en un valor constante.

El campo de dirección de una instrucción puede especificar una palabra de memoria o un registro de procesador. Cuando el campo de dirección especifica un registro de procesador se dice que la instrucción esta en modo de registro.

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

1.7 direccionamiento de los datos 1.7.2 Inmediato

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR1_7_2.ASM ;direccionamiento inmediato Programación con SEGMENTOS;El operando fuente es el dato a mover al destinoPila SEGMENT PARA STACK ‘STACK’

DB 64 DUP(0)Pila ENDSCodigo SEGMENT PARA ‘Codigo’

Inmediato PROC FARASSUME CS:Codigo,SS:PilaMOV AH,00MOV AL,04MOV AX,0FFFFHMOV AX,365MOV AL, -30MOV BL,35MOV BH,-37RET

Inmediato ENDPCodigo ENDS

END Inmediato============================================================================================;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR1_7_3.ASM ;direccionamiento inmediato Programación con SECCIONES;El operando fuente es el dato a mover al destino.286.model small.stack 64.code

Inmediato:MOV AH,00MOV AL,04MOV AX,0FFFFH

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

15

Page 16: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

MOV AX,365MOV AL, -30MOV BL,35MOV BH,-37MOV AX,4C00H INT 21H

END Inmediato

PRÁCTICA No. 11NOMBRE: direccionamiento directoOBJETIVO: Que el alumno:- Sea capaz de efectuar y entender el funcionamiento del direccionamiento directo. - Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Uno de los operandos involucra una localidad específica de memoria. El valor constante se tiene que buscar en

memoria, en la localidad especificada. Es más lento que los anteriores, pero es el más rápido para ir a memoria, pues ya "sabe" la localidad, la toma de la instrucción y no la tiene que calcular.

En este modo la dirección efectiva es igual a la parte de dirección de la instrucción. El operando reside en memoria y su dirección la proporciona en forma directa el campo de dirección de la instrucción. En una instrucción de tipo brinco el campo de dirección especifica la dirección de transferencia de control del programa real.

Se presenta una práctica sencilla buscando que el alumno dé un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instrucciones en ENSAMBLADOR se basan en nemotécnicos, los cuales permiten estructurar la lógica que el programador desea implementar.

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

1.7 direccionamiento de los datos 1.7.3 Directo

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR1_7_3.ASM ;direccionamiento directo;El operando fuente es una Variable que posee el dato a moverPila SEGMENT PARA STACK ‘STACK’

DB 64 DUP(0)Pila ENDS

Datos SEGMENT PARA ‘Datos’Variable1 DB 25Variable2 DB 0AFHVariable3 DW 0A1FCH

Datos ENDS

Codigo SEGMENT PARA ‘Codigo’Directo PROC FAR

ASSUME CS:Codigo,DS:Datos,SS:Pila; SE PREPARA EL REGRESO A DOS

PUSH DS ; Almacena Dirección de PSPMOV AX,00

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

16

Page 17: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

PUSH AX ; Almacena DesplazamientoMOV AX,Datos ; Se Inicializan Apuntadores de SegmentosMOV DS,AX ; Establece direccionamiento Normal al Área De DatosMOV AL,Variable1MOV BH,Variable2MOV CX,Variable3

RETDirecto ENDP

Codigo ENDSEND Directo

NOMBRE: Direccionamiento entre registrosOBJETIVO: Que el alumno:- Sea capaz de efectuar y entender el funcionamiento del direccionamiento entre registros. - Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Usa solamente registros como operandos.Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye dentro del EU del CPU).

En este modo, los operandos están en registros que residen dentro de la CPU. Se selecciona el registro particular de un campo de registro en la instrucción. Un campo K bits puede especificar cualquiera de 2k registros.

Se presenta una práctica sencilla buscando que el alumno de un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instrucciones en ENSAMBLADOR se basan en nemotécnicos, los cuales permiten estructurar la lógica que el programador desea implementar.

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

1.7 direccionamiento de los datos 1.7.4 Registro

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR1_7_4.ASM ;direccionamiento entre registros;El operando fuente y destino a mover son registro o mitades respectivamente.Pila SEGMENT PARA STACK ‘STACK’

DB 64 DUP(0)Pila ENDSCodigo SEGMENT PARA ‘Codigo’

Registro PROC FARASSUME CS:Codigo,SS:PilaMOV AX,DSMOV AL,CLMOV AX,BXMOV DS,AXMOV ES,DSMOV BL,ALRET

Registro ENDPCodigo ENDS

END Registro

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

17

Page 18: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

PRÁCTICA No. 13NOMBRE: Direccionamiento registro indirectoOBJETIVO: Que el alumno:- Sea capaz de efectuar y entender el funcionamiento del direccionamiento indirecto de registros. - Aprenda la sintaxis básica 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.

INTRODUCCIÓN: En este modo la instrucción especifica un registro en la CPU cuyo contenido proporciona la dirección del operando

en la memoria. En otras palabras, el registro seleccionado contiene la dirección del operando en lugar del operando mismo. Antes de utilizar una instrucción de modo indirecto por registro, el programador debe asegurarse de que la dirección de memoria del operando esta colocada en el registro del procesador con una instrucción previa. Entonces una referencia al registro es equivalente a especificar una dirección de memoria. La ventaja de una instrucción de modo de registro indirecto es que el campo de dirección de la instrucción utiliza menos bits para seleccionar un registro de los que necesitaria para especificar una dirección de memoria en forma directa.

Se presenta una práctica sencilla buscando que el alumno de un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instrucciones en ENSAMBLADOR se basan en nemotécnicos, los cuales permiten estructurar la lógica que el programador desea implementar.En este modo, el campo de dirección de la instrucción proporciona la dirección en que se almacena la dirección efectiva en la memoria. El control recupera la instrucción de la memoria y utiliza su parte de dirección para accesar la memoria una vez mas con el fin de leer la dirección efectiva.

Unos cuantos modos de direccionamiento requieren que el campo de dirección de la instrucción se sume al contenido de un registro especifico en la CPU. En estos modos la dirección efectiva se obtiene el calculo siguiente:

Dirección efectiva = Parte de dirección de la instrucción + 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 direccionamiento diferente que se utiliza para una aplicacion distinta.

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

1.7 direccionamiento de los datos 1.7.5 Registro indirecto

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR1_7_5.ASM ; direccionamiento indirecto de registros; El operando fuente SI, DI, DX o BP poseen la dirección para referenciar el dato y debe estar entre corchetes.Pila SEGMENT PARA STACK ‘STACK’

DB 64 DUP(0)Pila ENDS

Datos SEGMENT PARA ‘Datos’Variable3 DW 0A1FCH ;Define una palabra con el contenido hexadecimal

Datos ENDS

Codigo SEGMENT PARA ‘Codigo’RegistroIndirecto PROC FAR

ASSUME CS:Codigo,DS:Datos,SS:PilaPUSH DS

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

18

Page 19: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

MOV AX,00PUSH AXMOV AX,DatosMOV DS,AX

LEA BX, Variable3MOV AX,[BX] ;Mover el contenido de la dirección [BX] a AXMOV SI, OFFSET Variable3 ;Desplazarse hasta la dirección de la variableMOV AX,[SI]LEA DI,Variable3MOV AX,[DI]MOV BP, OFFEST Variable3MOV AX,[BP]RET

RegistroIndirecto ENDPCodigo ENDS

END RegistroIndirecto

PRÁCTICA No. 14NOMBRE: Direccionamiento registro relativoOBJETIVO: Que el alumno:- Sea capaz de efectuar y entender el funcionamiento del direccionamiento registro relativo. - Aprenda la sintaxis básica 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.

INTRODUCCIÓN: En este modo el contenido del contador de programa se suma a la parte de dirección de la instrucción para

obtener la dirección efectiva. La parte de dirección de la instrucción por lo general es un número con signo (en representación de complemento a dos) el cual puede ser positivo o negativo. Cuando se suma este número al contenido del contador de programa, el resultado produce una dirección efectiva cuya posición en la memoria es relativa a la dirección de la siguiente instrucción. Para hacer mas claro con un ejemplo, consideremos que el contador de programa contiene el número 200 y que la parte de dirección de la instrucción contiene el número 11. La instrucción en la posición 200 se lee de la memoria durante la fase de recuperación y el contador de programa se incrementa en uno a 201. El calculo de dirección efectiva para el modo de dirección relativa es 201 + 11 = 212. Esto es 11 posiciones de memoria adelante de la dirección de la siguiente instrucción. Con frecuencia se utiliza el direccionamiento relativo con instrucciones de tipo brinco, cuando la dirección del brinco está en el área que rodea la palabra de la instrucción misma. Esto da como resultado un campo de dirección más pequeño en el formato de la instrucción porque la dirección relativa puede especificarse con una cantidad de bits que se necesitan para representar la dirección de memoria completa.

Se presenta una práctica sencilla buscando que el alumno dé un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instrucciones en ENSAMBLADOR se basan en nemotécnicos, los cuales permiten estructurar la lógica que el programador desea implementar.

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

1.7 direccionamiento de los datos 1.7.6 Registro relativo

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR1_7_6.ASM ;direccionamiento registro relativoPila SEGMENT PARA STACK ‘STACK’

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

19

Page 20: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

DB 64 DUP(0)Pila ENDS

Datos SEGMENT PARA ‘Datos’Variable1 DB ‘HOLA ALUMNOS. ( ENSAMBLADOR)’

Datos ENDS

Codigo SEGMENT PARA ‘Codigo’RegistroRelativo PROC FAR

ASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DSMOV AX,00PUSH AXMOV AX,DatosMOV DS,AX

LEA BX, Variable1 ; 0000000000000000MOV AL, [BX + 3] ; AL = AMOV AL, 2[BX] ; AL = LMOV AL, [BX] + 1 ; AL = O

RETRegistroRelativo ENDP

Codigo ENDSEND RegistroRelativo

STRUC ENDS: permite definir registros al estilo de los lenguajes de alto nivel, para acceder de una manera más elegante a los campos de una información 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 función de si son simples o múltiples, respectivamente:

Sintaxis:

alumno STRUC cont DB '0123456789' ; modificable edadaltura DB 75,200 ; no modificable peso DB 0 ; modificable otros DB 10 DUP(0) ; no modificable telefono DD ? ; modificable alumno ENDS

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:tamaño[=valor],...

Donde nombre permitirá referenciar la estructura en el futuro, nombre_de_campo identifica los distintos campos, a los que se asigna un tamaño (en bits) y opcionalmente un valor por defecto.

registro RECORD a:2=3, b:4=5, c:1

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

20

Page 21: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

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:

6 5 4 3 2 1 0

1 1 0 1 0 1 ? 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 AL, B ; AL = 5 (desplazamiento del bit menos significativo de A) MOV AL, MASK A ; AL = 01100000b (máscara de A) MOV AL, WIDTH A ; AL = 2 (anchura de A)

PRÁCTICA No. 15NOMBRE: Direccionamiento registro base indexadoOBJETIVO: Que el alumno:- Sea capaz de efectuar y entender el funcionamiento del direccionamiento base indexado. - Aprenda la sintaxis básica 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.

INTRODUCCIÓN: En este modo el contenido de un registro índice se suma a la parte de dirección de la instrucción para obtener la

dirección efectiva. El registro índice es un registro de CPU especial que contiene un valor índice. Un campo de dirección de la instrucción define la dirección inicial del arreglo de datos en la memoria. Cada operando del arreglo se almacena en la memoria en relacion con la dirección inicial. La distancia entre la dirección inicial y la dirección del operando es el valor del índice almacenado en el registro de índice. Cualquier operando en el arreglo puede accesarse con la misma instrucción 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 implícita este registro participa cuando se utiliza una instrucción de modo índice. En los ordenadores con muchos registros de procesador, cualquiera de los registros de la CPU pueden contener el número de índice. En tal caso, el registro debe estar especificado en forma explicita en un campo de registro dentro del formato de instrucción.

En este modo, el contenido de un registro base se suma a la parte de dirección de la instrucción para obtener la dirección efectiva. Esto es similar al modo de direccionamiento 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 número de índice que se relaciona con la parte de dirección de la instrucción. Se considera que un registro base contiene una dirección base y que el campo de dirección de la instrucción proporciona un desplazamiento en relacion con esta dirección base. El modo de direccionamiento 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 multiprogramación, los valores de dirección de las instrucciones deben reflejar este cambio de posición. Con un registro base los valores de desplazamiento de las instrucciones 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 práctica sencilla buscando que el alumno de un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instrucciones en ENSAMBLADOR se basan en nemotécnicos, los cuales permiten estructurar la lógica que el programador desea implementar.

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

1.7 direccionamiento de los datos 1.7.7 Registro base indexado

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

21

Page 22: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR1_7_7.ASM ;Direccionamiento registro base indexadoPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0)Pila ENDSDatos SEGMENT PARA 'Datos'

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

Datos ENDSCodigoSEGMENT PARA 'Codigo'

RegistroBaseIndexado PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DSMOV AX,00PUSH AXMOV AX,DatosMOV DS,AX

MOV AX,00MOV BX,8MOV DI,2MOV AL,Variable1[BX][DI] ; AL = 3

MOV BX,2MOV SI,14MOV AX,Lista[BX][SI] ; AX = 90 AX = 05A

RETRegistroBaseIndexado ENDP

Codigo ENDSEND RegistroBaseIndexado

1.7 Proceso de ensamblado y ligadoPRÁCTICA No. NOMBRE: Proceso de compilado, ligado y ejecución de un programaOBJETIVO: Que el alumno:- Practicará las diferentes formas de compilar, ligar y ejecutar un programa.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: El código fuente es un texto escrito generalmente por una persona que se utiliza como base para generar otro

código con un compilador o intérprete para ser ejecutado por una ordenador.Normalmente se refiere a la programación de software. Un único programador o un equipo de ellos escriben el

código fuente en el lenguaje de programación elegido. Posteriormente en un proceso de compilación el código fuente se traduce en código objeto.A diferencia del código objeto, el código fuente es texto simple, capaz de ser leído por cualquier editor de textos y lo que es más importante, entendible por cualquier programador. En él están escritas las instrucciones que deberá realizar la ordenador, según la sintaxis de un lenguaje de programación. Tener el código fuente es vital si se necesita modificar un programa.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

22

Page 23: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

El término de código fuente también se usa para el código 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.

=============================================================================================Sistema Opertivo WIndows:A:\MASM>Masm Programa; A:\TASM>Tasm Programa Para compilar generando un .OBJA:\MASM>Link Programa A:\TASM>Tlink Programa Para ligar generando un .EXEA:\MASM>Programa A:\TASM>Programa Para ejecutar

A:\TASM>TD Programa Para depurar o debuger, siempre y cuandopara 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 código objeto no ejecutable

/nologo Suprimir el mensaje de derechos de copiaC:\\masm32\bin\Link /SUBSYSTEM:WINDOWS /MERGE:.rdata=.text Programa.obj > nul

/SUBSYSTEM Entorno de ejecución WINDOWS o CONSOLE/MERGE con quien se unirá el programa

Desensamblado de código máquina:ndisasm -b {16|32|64} NombreDeArchivoDesensamblando un .comndisasm -o100h NombreDeArchivo.comCompilando y ligando para convertir de asm a comnasm -f bin program.asm -o program.com=============================================================================================Sistema Operativo Linix:#nasm –f elf programa.asm Compilar#ld -s -c programa programa.o Ligar#./programa Ejecutar

Los ficheros de código fuente llevarán la extensión *.ASM Los ficheros de listado llevarán la extensión *.LSTLos ficheros de código objeto llevarán la extensión *.OB] Los ficheros de errores llevarán la extensión *.ERRLos ficheros ejecutables en formato Intel Hex llevarán la extensión *.HEX Comentario descriptivo del programa (utilizar una cabecera estandarizada).Definir el microcontrolador que se usará (con las directivas LIST e INCLUDE). Introducir las opciones de compilación (que serán vistas más adelante) (opcional).Establecer las constantes que se usarán (con la directiva EQU). Reservar espacios de memoria (directiva RES) (si es necesario).Configurar los puertos. Desarrollar el programa con comentarios, en lo posible explicando cada línea de código..Los mnemónicos escritos en minúscula y las constantes y variables en mayúscula hacen que el código escrito sea más visible.Colocar las rutinas en el mismo sitio, todas contiguas. Dibujar diagramas de flujo o escribir seudocódigo.

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

2.2 Formato de un programa;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_2.ASM

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

Còdigo Fuente Còdigo Objeto No Ejecutable .OBJ

Fase 1

LigadoEdición Traducción

Bibliotecas

L. EditorCompiladorEditor

Còdigo Objeto Ejecutable .EXE

A P L I C A C I O N E S

Fase 2 Fase 3

23

Page 24: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

;Definición de un programa general para Macro Assembler;Nombre Operación Operando(s) Comentario

NOMBRE: Directivas de ensambleOBJETIVO: Que el alumno:- Pondrá en práctica las directivas de pre compilación.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Es posible usar las directivas para programar en cualquier procesador y con cualquier versión 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 Sección para la definición de datos, .CODE Sección para la incorporación del código, .STACK Seccion para la definición de la pila, .IF .ELSE .ENDIF .ELSEIF Estatuto de decisión, .WHILE .ENDW Estatuto de repetición Mientras, .BREAK Suspende la ejecución de un bloque de código 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

1.8 Desplegado de mensajes en el monitor.;;==========================================================;; Ejemplo de programación con SEGMENTOS que despliega una cadena en ;;modo texto. ;;Sistema Operativo DOS Compilador masm o tasm;; Instituto Tecnológico de Cd. Victoria;; Sistemas y Computación;; José Regino Infante Ventura Agosto 2013;;==========================================================;El punto y coma permite documentación interna del código

Pila SEGMENT PARA STACK 'STACK' ; Definición del segmento de Pila o Stack

DB 64 DUP (0)Pila ENDS ; Fin del SEGMENTO de pila

Datos SEGMENT PARA 'Datos' ;definición del SEGMENTO que permite reservar espacio que utilizara un identificador

texto DB 'hola mundo',0AH,0DH,"$" ; 0AH Avance de línea 0DH Retorno de carro "$" Fin de cadena

Datos ENDSCodigo SEGMENT PARA 'Codigo'

Main PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que

llama a éste en la pila

MOV AX,00PUSH AXMOV AX, Datos ;Asignar la dirección de los datos del programa en AX

MOV DS, AX ;Copiar la dirección de AX al registro de segmento de datos DS

LEA DX, Texto ;Tomar la dirección de la variable Texto en DX

MOV AH, 9 ;Mover un nueve en AL que es la función para desplegar una cadena

INT 21H ;Provocar la interrupción veintiuno del SO DOS

RET ;Retorna una instrucción después de donde fue llamado el procedimiento

Main ENDPCodigo ENDS END Main

;;==========================================================;; Ejemplo de programación con SECCIONES que despliega una cadena en modo;; texto. ;;Sistema Operativo DOS Compilador nasm;; Instituto Tecnológico de Cd. Victoria;; Sistemas y Computación;; José Regino Infante Ventura Agosto 2013;Complilar y ligar para convertir de .asm a .com;c:\nasm>nasm -f bin NomProg.asm -o Nomprog.com;;==========================================================;El punto y coma permite documentación interna del código

section .data Msg: db 'Hola Alumnos',7,'$' ; 7 BIP $ Fin de cadena

section .text global _start _start:mov edx,Msg ; guardo la cadena en un registro edx

mov ah,9h ; Función que permite desplegar una cadena

int 21h

mov eax,4c00h ; Final del programa puede ser sustituido por RET sin el INT

int 21h ; interrupción para invocar al kernel ms-dos.

;;==========================================================;; Ejemplo de programación con SECCIONES que despliega una cadena en modo;; texto. El principio de una nueva sección termina la anterior.;; Sistema Operativo DOS Compilador masm o tasm

;;==========================================================;; Ejemplo de programación con SECCIONES que despliega una cadena en modo;; texto. El principio de una nueva sección termina la anterior.;; Sistema Operativo LINUX Compilador nasm

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

24

Page 25: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

;; Instituto Tecnológico de Cd. Victoria;; Sistemas y Computación;; José Regino Infante Ventura Agosto 2013;;==========================================================;El punto y coma permite documentación interna del código

.286

.MODEL SMALL

.STACK 64

.DATA ;Esta sección permite defir el espacio que utilizara un identificador

texto DB 'hola mundo',0AH,0DH,"$" ;0AH Avance de línea 0DH Retorno de carro "$" Fin de cadena

.CODE Main: ;Definimos el punto de entrada main

MOV AX, @DATA ;Asignar la dirección de los datos del programa en AX

MOV DS, AX ;Copiar la dirección de AX al registro de segmento de datos DS

LEA DX, Texto ;Tomar la dirección de la variable Texto en DX

MOV AH, 9 ;Mover un nueve en AL que es la función para desplegar una cadena

INT 21H ;Provocar la interrupción veintiuno

MOV AX,4C00H ;Moverle 4C en AH que es la función para terminar el programa

INT 21H ;Provocar la interrupción veintiuno de SO DOS

END Main

;; Instituto Tecnológico de Cd. Victoria;; Sistemas y Computación;; José Regino Infante Ventura Agosto 2013;;==========================================================;El punto y coma permite documentación interna del código

section .data ;Esta seccion permite defir el espacio que utilizara un identificadormensaje db 'hola mundo',0xAlongitud equ $ - mensajesection .text global main ;definimos el punto de entrada

main:mov edx,longitud ;EDX=long. de la cadena

mov ecx,mensaje ;ECX=cadena a imprimir

mov ebx,1 ;EBX=manejador de fichero (STDOUT)

mov eax,4 ;EAX=función sys_write() del kernel

int 0x80 ;interrupc. 80 (llamada al kernel)

mov ebx,0 ;EBX=código de salida 0 normal al SO

mov eax,1 ;EAX=función sys_exit() del kernel

int 0x80 ;interrupc. 80 (llamada al kernel)

;Compilar Executable and Linkable Format elf

;[usuario@localhost ~]$ nasm -f elf hola.asm;Ligarcon gcc al usar main o con ld al usar _start;[usuario@localhost ~]$ gcc -o hola hola.o;[usuario@localhost ~]$ ld -s -hola hola.o;Ejecutar[usuario@localhost ~]$ ./hola

;;==========================================================;; Ejemplo de programación con SECCIONES que despliega Hola Mundo;; texto. El principio de una nueva sección termina la anterior.;; Sistema Operativo LINUX Compilador nasm;; Instituto Tecnológico de Cd. Victoria;; Sistemas y Computación;; José Regino Infante Ventura Agosto 2013;;==========================================================; 64-bit "Hola Mundo" in Linux NASMglobal _start ; global entry point export for ldsection .text_start: ; sys_write(stdout, message, length) mov rax, 1 ; sys_write mov rdi, 1 ; stdout mov rsi, message ; Dirección de la cadena mov rdx, length ; Longitud de la cadena syscall ; sys_exit(return_code) mov rax, 60 ; sys_exit mov rdi, 0 ; Retornar un 0 como terminación normal syscallsection .data message: db 'Hola Mundo',0x0A ; mesaje y nueva linea length: equ $-message ; Definicion de constante con la longitud

root@serv22:/home/regino# nasm -f elf64 -o hola64.o hola64.asmroot@serv22:/home/regino# ld -o hola64 hola64.oroot@serv22:/home/regino# ./hola64Hola Mundoroot@serv22:/home/regino#

;;==========================================================;; Ejemplo de despliega Hola Mundo; Sistema Operativo DOS Compilador nasm DE .ASM A .COM;; Instituto Tecnológico de Cd. Victoria;; Sistemas y Computación;; José Regino Infante Ventura Agosto 2013;;==========================================================;;nasm -f bin -o NomArch.com NomArch.asmorg 100h ;Dirección de inicio del programamov dx,Msg ; Tomar en el registro DX la Dirección de la cadenamov ah,9 ; Colocar la funció 9 en AH para desplegar la cadenaint 21h ; Provocar la interrupción 21 Hexadecimalret ; Retornar a donde se llamó a este programaMsg db “Hola Mundo$” ;Msg contiene la cadena

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

25

Page 26: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

;;==========================================================;; Ejemplo de programación con SECCIONES que despliega una cadena en modo;; texto. El principio de una nueva sección termina la anterior.;; Microcontrolador µC Intel 8051;; Instituto Tecnológico de Cd. Victoria;; Sistemas y Computación;; José Regino Infante Ventura Agosto 2013;;http://es.wikipedia.org/wiki/Lenguaje_ensamblador;;==========================================================ORG 8030H ;Directiva ORG permite especificar la dirección en donde debe ser cargado inicialmente el programa al ejecutarse.

include T05SEG: SETB TR0 JNB uSEG,T05SEG ;Salta si el bit implicado no vale 1 a T05SEG CLR TR0 ;para realizar una cuenta de CPL uSEG ;0,5 segundos mediante la MOV R1,DPL ;interrupción del timer 0. INVOKE MOV R2,DPH CJNE R2,#07H,T05SEG CJNE R1,#78H,T05SEG MOV DPTR,#0 RET

;;==========================================================;; Ejemplo de programación con SECCIONES que despliega una cadena en modo;; texto. El principio de una nueva sección termina la anterior.;; Micro controlador Microchip PIC16F84;; Instituto Tecnológico de Cd. Victoria;; Sistemas y Computación;; José Regino Infante Ventura Agosto 2013;;http://es.wikipedia.org/wiki/Lenguaje_ensamblador;;==========================================================ORG 0 ;Directiva ORG permite especificar la dirección en donde debe ser cargado inicialmente el programa al ejecutarse.

Inicio bsf STATUS,RP0 clrf PORTB movlw 0xFF movwf PORTA bcf STATUS,RP0 Principal movf PORTA,W movwf Contador movf Contador,F btfsc STATUS,Z goto PuntoDecimal sublw d'9' btfss STATUS,C END

2.- Programación básica.2.1 Ensamblador (y ligador) a utilizar

Clasificación de CompiladoresEl programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la computadora

puede interpretar y ejecutar. Para cada lenguaje de programación se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son, pues, programas de traducción insertados en la memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina). Los compiladores pueden ser de:

Una sola pasada: examina el código fuente una vez, generando el código o programa objeto.pasadas múltiples: requieren pasos intermedios para producir un código en otro lenguaje, y una pasada final para producir y optimizar el código producido durante los pasos anteriores.

Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa.Compiladores incrementales: generan un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente.

Compilador cruzado: se genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++.

Compilador con montador: compilador que compila distintos módulos de forma independiente y después es capaz de enlazarlos.

Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc.

Metacompilador: es sinónimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis. Lo que sí se han desarrollado son generadores de analizadores léxicos y sintácticos. Por ejemplo, los conocidos:

LEX: generador de analizadores léxicosYACC: generador de analizadores sintácticos desarrollados para UNIX. Los inconvenientes que tienen son que

los analizadores que generan no son muy eficientes.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

26

Page 27: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Descompilador: es un programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilación.Compiladores para procesadores CISC “Intel y compatibles” , tambien referenciados como x86:

Turbo Assembler (TASM), Microsoft Macro Assembler (MASM), nasm (netwide assembler) para sistemas operativos DOS,WIN32 y LINUX http://nasm.us/

2.2 Ciclos numéricos

2.3 Captura básica de cadenas

PRÁCTICA No. 30NOMBRE: Definición de cadenasOBJETIVO: Que el alumno:- Definirá diferentes cadenas en el segmento de datos.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: STRING o CADENA

Más de un carácter 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 ”INFORMÁTICA$” 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 carácter, siendo estos de tipo ASCII.

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

3.1 Definición de string

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_1a.ASM ; Definición de string y desplegado en pantallaPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB ”INFORMÁTICA$”Variable2 DB ”SISTEMAS”,”$”

Datos ENDSCodigo SEGMENT PARA 'Codigo'

DefiniciónDeString PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

27

Dirección DECIMAL

Dirección HEXADECIMAL

CarácterASCII

CarácterBINARIO

CarácterDECIMAL

0 0 I 1001001 731 1 N 1001110 782 2 F 1010000 703 3 O 1001111 794 4 R 1010010 825 5 M 1001101 776 6 A 1000001 657 7 T 1010100 848 8 I 1001001 739 9 C 1000011 67

10 A A 1000001 6511 B $ 100100 36

Page 28: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

PUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, Datos ;Asignar la dirección de los datos del programa en AXMOV DS, AX ;Copiar la dirección de AX al registro de segmento de datos DSLEA DX, Variable1 ; Tomar la dirección efectiva de Variable1 en DXLEA DI, Variable2 ; Tomar la dirección efectiva de Variable2 en DIRETDefiniciónDeString ENDP ;Fin del procedimiento principal

Codigo ENDS ;Fin del segmento de códigoEND DefiniciónDeString ;Fin del programa

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_1b.ASM ;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 compilación pequeño.CODE ;Inicio del codigoPrincipal: MOV AX, @DATA ;Asignar la dirección de los datos del programa en AXMOV DS, AX ;Copiar la dirección de AX al registro de segmento de datos DSLEA DX, Texto ;Tomar la dirección de la variable Texto en DXMOV AH, 9 ;Mover un nueve en AL que es la función para desplegar una cadenaINT 21H ;Provocar la interrupción veintiunoMOV AX,4C00H ;Mover 4C en AH que es la función para terminar el programaINT 21H ;Provocar la interrupción veintiuno.DATA ;Inicio del sgmento de datosTexto DB 'Hola$' ;Variable Texto de tipo BYTE inicializada con Hola el $ indica el fin de la cadena.STACK 64 ;Inicio del segmento de pila de tamaño por defecto de 64KbEND Principal ;Fin del programa

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_1c.ASM ;Programa similar al anterior que despliega en pantalla dos cadenas utilizando directivas;en modo gráfico y con registros de 32 bits.386.model flat, stdcall ;Modelo plano con llamadas estandaroption casemap :none ; Sensible al contexto

; Incorporación de código fuente (inc) y código máquina no ejecutable (lib)include \masm32\include\windows.incinclude \masm32\include\user32.incinclude \masm32\include\kernel32.incincludelib \masm32\lib\user32.libincludelib \masm32\lib\kernel32.lib.codePrincipal: jmp @F szDlgTitle db "Programa Mínimo en MASM32",0 ;Título de la caja de mensaje szMsg db " I n f o r m a t i c a ",0 ;Texto dentro de la caja

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

28

Page 29: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

@@: push MB_OK push offset szDlgTitle push offset szMsg push 0 call MessageBox push 0 call ExitProcessend Principal ;Fin del programa

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_1d.ASM ;Programa similar al anterior que despliega en pantalla dos cadenas utilizando directivas;en modo gráfico y con registros de 32 bits.386.model flat, stdcall ;Modelo plano con llamadas estandaroption casemap :none ; Sensible al contexto

; Incorporaciòn de código fuente (inc) y código máquina no ejecutable (lib)include \masm32\include\windows.incinclude \masm32\include\user32.incinclude \masm32\include\kernel32.incincludelib \masm32\lib\user32.libincludelib \masm32\lib\kernel32.lib.codePrincipal: jmp @F szDlgTitle db "Programa Mínimo en MASM32",0 ;Título 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,0end Principal ;Fin del programa

2.4 Comparación y pruebaPRÁCTICA No. 23NOMBRE: Comparación y pruebaOBJETIVO: Que el alumno:- Hará uso de las instrucciones que le permita comparar contenidos y verificarlos.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: CMP Comparación entre dos operandos, restándolos, lo cual afecta los señalizadores, pero no su contenido.

Afectando los señalizadores OF,SF,ZF,AF,PF,CF.TEST Permite efectuar una comparación lógica, haciendo uso de la intrucciòn AND lógica de bit a bit en los dos

operandos. Afectando los siguientes señalizadores: OF =0, CF=0, SF, ZF, PF.Después 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

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

29

Page 30: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

2.8 instrucciones de comparación y prueba

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_8.ASM ; instrucciones de comparación y pruebaPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB 5Variable2 DD ? Variable3 DD 10,20,30,40,50

Datos ENDSCodigo SEGMENT PARA 'Codigo'

ComparaciónYPrueba PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

CMP Variable1,Variable2 ; Comparación entre dos operandos, restándolosJE Fin

TEST AX,BX ; Comparación lógica, haciendo uso de AND bit a bit en los dos operandosJNE Fin

Fin: RETComparaciónYPrueba ENDP

Codigo ENDSEND ComparaciónYPrueba

2.5 SaltosPRÁCTICA No. 24NOMBRE: Saltos condicionalesOBJETIVO: Que el alumno:- Hará uso de las instrucciones que le permitirán efectuar saltos dentro del mismo programa.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Una introducción de salto se reduce a cambiar el contenido de IP y, eventualmente el de CS. Principalmente, existen dos tipos de instrucciones de salto: aquellas que especifican la dirección de salto inmediato

después del código de operación, es decir, especifican la etiqueta a la que hay que saltar (denominados saltos directos), y aquellas que espe cifican una dirección de memoria de la que hay que recoger la dirección a la que saltar (denominadas saltos indirectos).

Los bytes que componen una instrucción de salto directo incluyen en el cód. la operación algunos bytes que especifican la dirección a la que se debe producir el salto.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

30

Page 31: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Saltos incondicionales:Pero existen varios formatos posibles para la instrucciones de salto directo. El primero se denomina SHORT JUMP

(salto corto), y el único dato que incluye la instrucción después del cód. de ope ración es un byte, que representa en complemento a dos el valor a añadir a IP para seguir la ejecución. 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 repre senta 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 ejecución de una instrucción, veremos que el desplazamiento se suma a IP después de haber incrementado éste. Por tanto, el des plazamiento se toma desde la dirección de comienzo de la siguiente instrucción al salto, y no desde la propia instrucción de salto.

El siguiente formato de salto directo es el NEAR JUMP o salto cercano. Este formato, la instrucción incluye dos bytes que forman la palabra a sumar a IP, también en complemento a dos. Así, el rango de salto está entre -32768 y +32768 bytes (65535 bytes), que efec tivamente permiten un salto a cualquier punto del segmento donde reside la instrucción de salto (en este formato CS tampoco es al terado 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 denominación se debe a que éste formato de salto, cambia tan to CS como IP, pudiendo saltar a cualquier punto del megabyte direcciónable (2 elevado a 20). En éste formato de salto, la ins trucción lleva dos palabras con el desplazamiento y el segmento de la dirección 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 instrucción, sin tener en cuenta el contenido previo de ambos.

Existen dos formatos de instrucciones de indirecto: el primero, denominado NEAR JUMP o salto cercano, lee una palabra de la direc ción de memoria especificada y carga el registro IP con ésta. Así, se puede saltar a cualquier punto del segmento donde resida la instrucción de salto. El otro tipo se denomina FAR JUMP o salto lejano, y toma de la dirección especificada dos palabras, la pri mera 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 direcciónable con un salto indirecto.

JMP: El formato de la instrucción es JMP dirección. Provoca un salto incondicional, por lo que se utiliza para seguir la ejecución del programa en otro punto, que puede ser espe cificando una etiqueta (salto directo) o especificando una dirección (salto indirecto). Cuando incluimos instrucciones de salto en el programa, indicamos la dirección 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 instrucción 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 gene ra un salto corto, en caso contrario, se genera un salto cercano.

Saltos condicionales: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, Abo ve=superior, Be low=inferior, Carry=acarreo, Zero=cero, Over flow=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 con sidera el signo.

Ejemplo:CMP ax, bx ; Comparamos AX con BX.JAE etiqueta ; Bifurca a ETIQUETA si AX> o =BX ; (sin considerar el signo).

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

31

Page 32: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

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, bxJB 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, bxJBE 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 número 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 desborda miento 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 sig no.

Ejemplo:CMP ax, bxJG 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, bxJGE 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.

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

JNA, JNAE, JNB, JNBE, JNE, JNG, JNGE, JNL, JNLE:Estas instrucciones comprueban exactamente las condiciones opuestas a sus análogas sin la letra N. En realidad no sería necesaria, porque son sinónimas de JBE, JB, JAE, JNZ, JLE, JL, JGE Y JE, respectivamente. Pero el lenguaje ensamblador estándar 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+BXJO etiqueta ; Bifurca a ETIQUETA si hay desbordamiento ; (Overflow).ETIQUETA:

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

32

Page 33: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

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+BLJNO 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-BXJS 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-BXJNS 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 BXJP etiqueta ; Bifurca a ETIQUETA si paridad par, es decir ; si el número 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 BXJNP etiqueta ; Bifurca a ETIQUETA si paridad impar, es decir ; si el número 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 instrucciones de salto 2.9.1 Condicionales

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_9_1.ASM ; instrucciones de saltoPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSCodigo SEGMENT PARA 'Codigo'

Saltos PROC FARASSUME CS:Codigo,SS:PilaPUSH DS;Guarda la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AX

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

33

Page 34: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

MOV AX,00MOV BX,10

INICIO: INC AX ; Incrementa en una unidad el contenido de AXDEC BX ; Decrementa en una unidad el contenido de BXCMP AX,BX ; Compara el contenido de AX con el de BXJE FIN ; Si los contenidos comparados son iguales salta al FIN SALTO CONDICIONADOJMP INICIO ; Siempre que llegue a este punto salta al INICIO SALTO INCONDICIONAL

FIN: RETSaltos ENDP

Codigo ENDSEND Saltos

2.6 Ciclos condicionalesPRÁCTICA No. 25NOMBRE: CiclosOBJETIVO: Que el alumno:- Pondrá en práctica las instrucciones que le permitirán hacer uso de cuatro tipos de ciclos.- Aprenda la sintaxis básica de un programa en ENSAMBLADOR y las palabras reservadas.- Se familiarice con el ambiente de deñsarrollo en la que codificará, grabará, editará, compilará y ejecutará los

programas que se presentan en el manual.

INTRODUCCIÓN: LOOP: Esta instrucción permite realizar "bucles" utilizando el registro CX como contador (CX en un contador que

va de crementándose). Un bucle es un conjunto de instrucciones que se ejecutan una serie de veces. Esta instrucción equivale al par: DEC CX // JNZ etiqueta. El formato es: LOOP etiqueta.

LOOPE: Esta instrucción al igual que LOOP, permite realizar "bucles" utilizando el registro CX como contador (CX en un contador que va decrementándose) pero además el flag de cero debe estar a uno (ZF=1). Es equivalente a LOOPZ (Bucle si cero). Esta instrucción equivale al par: JNE FIN // LOOP OTRO. El formato es: LOOPE etiqueta.

LOOPNE: Esta instrucción al igual que LOOP, permite realizar "bucles" utilizando el registro CX como contador (CX en un contador que va decrementándose) pero además el flag de cero debe estar a cero (ZF=0). Es equivalente a LOOP NZ (Bucle si no cero). Esta instrucción 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 instrucciones de ciclos

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_10.ASM ; instrucciones de ciclosPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Vector DB 1,2,3,4,5,0Cuantos DW 5

Datos ENDSCodigo SEGMENT PARA 'Codigo'

instruccionesDeCiclos PROC FAR

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

34

Page 35: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

MOV CX,Cuantos ; CX = 5 El cuál será el número de veces del bucleETIQUETA:

; Aquí estarían las instrucciones que están dentro del bucle.LOOP ETIQUETA ; CX = CX – 1 y bifurca a ETIQUETA mientras CX diferente de cero

MOV BL,00 ;Asegurar que BL tenga cero, para usalo como acumuladorMOV SI,OFFSET Vector ; Mover a SI el Inicio del VectorDEC SI ; Decrementar el contenido del registro para poder generalizar dentro del ciclo

INICIO: INC SI ; Incrementar en una unidad el contenido del registro SIADD BL,Vector[SI] ; Aquí estarían las instrucciones que están 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 aceroRETinstruccionesDeCiclos ENDP

Codigo ENDSEND instruccionesDeCiclos

2.7 Incremento y decremento

2.8 Captura de cadenas con formato

2.9 Instrucciones aritméticas

PRÁCTICA No. 20NOMBRE: Aritmética binariaOBJETIVO: Que el alumno:- Experimentará con las diferentes instrucciones que le permitirán efectuar operaciones en aritmética binaria.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Operaciones aritméticas sin signo.ADD Suma dos operandos, almacenando el resultado en el destino; Señalizadores afectados

AF,CF,OF,PF,SF,ZF.SUB Resta el contenido del operando fuente al destino, dejando el resultado en el destino; señalizadores

afectados OF,SF,ZF,PF,AF,CF.MUL Multiplica el contenido del operando fuente por el contenido de AL o AX, según 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. Señalizadores afectados SF,OF,ZF,AF,PF.

DEC Decrementa en una unidad el contenido del operando especificado, pudiendo ser un registro, mitad o una variable. Señalizadores afectados SF,OF,ZF,AF,PF.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

35

Page 36: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

ADC, SBB, NEG,CBW,CWD, IMUL, IDIV CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA SUBTEMAS2.6 instrucciones aritméticas 2.6.1 Aritmética binaria

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_6_1.ASM ; instrucciones aritméticas binariasPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB 4Variable2 DB 3Variable3 Dw 10

Datos ENDSCodigo SEGMENT PARA 'Codigo'

AritmeticaBinaria PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

MOV AL,Variable1MOV BL,Variable2INC AL ; Incrementa en una unidad el contenido de ALDEC BL ; Decrementa en una unidad el contenido de BLADD AL,Variable2 ; Suma el contenido de Variable2 al de AL, dejando el resultado en ALSUB AL,Variable2MOV AX, Variable3MUL Variable2 ; Multiplica el contenido de AX por el contenido de Variable2, dejando el resultado en

AXRETAritmeticaBinaria ENDP

Codigo ENDSEND AritmeticaBinaria

PRÁCTICA No. 21NOMBRE: Aritmética empacadaOBJETIVO: Que el alumno:- Podrá apreciar y experimentar con las instrucciones que se pueden efectuar antes o después de las operaciones

aritméticas.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Ajuste a ASCII el contenido de AL después de:

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

36

Page 37: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

AAA La suma, convirtiendo el contenido de AL en un dígito decimal sin empacar, es decir un número entre el 0 y el 9.

AAS La sustracción, convirtiendo el contenido de AL en un dígito decimal sin empacar, es decir un número entre el 0 y el 9.

AAM La multiplicación, convirtiendo el contenido de AL en un dígito decimal sin empacar, es decir un número entre el 0 y el 9.

AAD La división, convirtiendo el contenido de AL en un dígito decimal sin empacar, es decir un número entre el 0 y el 9.

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

2.6 instrucciones aritméticas 2.6.2 Aritmética empacada

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_6_2.ASM ;Transferencia de datosPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DW 5Datos ENDSCodigo SEGMENT PARA 'Codigo'

AritmeticaEmpacada PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AXMOV BX,8MOV AX,Variable1ADD AX,BXAAA ;Ajuste ASCII despues de la sumaRETAritmeticaEmpacada ENDP

Codigo ENDSEND AritmeticaEmpacada

2.10 Manipulación de la pilaPRÁCTICA No. 29NOMBRE: Manipulación de la pilaOBJETIVO: Que el alumno:- Pondrá en práctica las instrucciones que le permitan introducir y extraer datos de la pila.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: La estructura de una PILA es similar a un montón de libros api lados: los elementos se van ordenando cada uno detrás

del último en llegar (es decir, los libros se van apilando cada uno encima del anterior), pero al sacarlos de la estructura se

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

37

Page 38: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

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 operación de introducir un elemento en una pila se le suele dar el nombre de empujar un elemento (PUSH en inglés). La operación 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 uni dades; 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 dirección 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 continua

ción almacena en la cima de la pila la palabra especif icada en el operando origen asociado a la instrucción.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 instrucción toma una palabra de la cima de la pila y la sitúen el operando destino asociado a la instrucción, incrementando, a continuación, en 2 unidades el puntero de la pila.Formato POP origen

Ejemplo: POP ax ; es equivalente a: AX = SS:[SP] // SP = SP + 2Cuando una instrucción PUSH o POP se ejecuta en un código de programa con el tamaño de registro de 32 bits,

el ensamblador utiliza como valor de transferecencia 4 bytes en lugar de 2 bytes (una palabra), y las operaciones realiza das con ESP se efectúan sobre unidades de 4 elementos.

PUSHF: Esta instrucción decrementa en 2 unidades el puntero de la pila y a continuación, almacena en la cima de la pila el registro de indicadores (FLAGS). No tiene ningún operando.

POPF: Esta instrucción almacena en el registro de indicadores (FLAGS) la palabra situada en la cima de la pila aumen tando en 2 unidades, a continuación, el puntero de la pila. No tiene ningún operando.

PUSHAy POPA: Estas instruciones almacenan y sacan de la pila la información 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 que el primer registro sea guardado. En el caso de utilizar registros de 32 bits la instrucciones serían: PUSHAD y POPAD.

Todo lo que entra en la pila, tiene que salir de la pi la, en orden inverso a como entró. Para situar y sacar palabras de la pila es el siguiente:

PUSH AXPUSH BXPUSH CXPUSH DXRutina del programaPOP DXPOP CXPOP BXPOP AX

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

2.13 instrucciones para el stack

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_13.ASM ; instrucciones para el stackPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

38

Page 39: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Variable1 DB 5Variable2 DD ? Variable3 DD 10,20,30,40,50

Datos ENDSCodigo SEGMENT PARA 'Codigo'

instruccionesParaElStack PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

PUSH ES ; Introduce en la pila el contenido del Segmento ExtraPOP ES ; Extrae de la pila un dato de 16 bist, el cual es guardado en el Segmento ExtraPUSHA ; Introduce los registros en la pilaPOPA ; Extrae los registros de la pila

RETinstruccionesParaElStack ENDP

Codigo ENDSEND instruccionesParaElStack

2.11 Obtención de cadena con representación decimal

2.12 Instrucciones lógicasPRÁCTICA No. 26NOMBRE: Operaciones lógicasOBJETIVO: Que el alumno:- Hará uso de las cuatro instrucciones lógicas en programas separados.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Einstrucciones Lógicas: NEG, NOT, AND, OR, XOR

NEG: Esta instrucción calcula el complemento a dos del operando, y lo almacena en el mismo lugar. Esto es, efectivamente, equivalente a cambiar de signo el ope rando de la instrucción.

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 posición de memoria (dentro del Segmento

Extra) indicada por el ; de "BX+S I+2"

NOT: Se realiza el NOT lógico del operando bit a bit. El NOT consiste en invertir cada bit del operan do (pasar los 0 a 1 y los 1 a 0; 10100 01011)

Tabla de verdadE S0 11 0

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

39

Datos de entrada

Compuerta lógica

Datos de salida

S = E

Page 40: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

NOT SI ; Del valor que tenga SI pasa los 0 a 1 y los 1 a 0.NOT WORD PTR ES:[0] ; La palabra apuntada al inicio del segmento extra, se pasa los 0 a 1 y los 1

a 0.

AND: Operación "y lógico" a nivel de bit entre los dos operan dos. El resultado se almacena en el destino.Formato AND destino, fuente.

Permite apagar un bit o asegurarnos que se encuentra apagado en la posición que lo agreguemos en el operando fuente.

Tabla de verdadE1 E2 S0 0 00 1 01 0 01 1 1

AND AX.BX ; AND lógico entre AX y BX. El resultado queda en AX.AND ES:[0], DX ; Lo mismo pero con posiciones de memoria.AND DI, ES:[SI]AND BYTE PTR[9], 3 ; Lo mismo pero con valores inmediatos.

OR:Operación "o lógico exclusivo" a nivel entre los dos operan dos. El resultado se almacena en el destino. Formato OR destino, fuente.

Permite encender un bit o asegurarnos que se encuentra encendido en la posición que lo agreguemos en el operando fuente.

Tabla de verdadE1 E2 S0 0 00 1 11 0 11 1 1

OR AL, AH ; Las mismas operaciones que con AND pero utilizando el OR.OR [DI], CHOR CL, [BP+4]OR BYTE PTR ES:[SI], 1

XOR: Operación "o lógico exclusivo" a nivel de bit entre los dos operandos. El resultado se almacena en destino.

Formato XOR destino, fuente.Tabla de verdad

E1 E2 S0 0 00 1 11 0 11 1 0

XOR AX, AX ; El XOR entre dos bits con el mismo valor es siempre 0, independientemente del valor previo de AX (AX=0).

; Las ventajas de hacerlo así son dos: la ejecución de XOR reg, reg es más rápida que la de MOV reg, o que la de MOV ax,0 , y la codificación de la ; primera ocupa menos bytes que la ;segunda; Esta técnica no puede utilizarse para poner a cero los registros de segmento.

XOR BYTE PTR[55AAh], 4XOR AL, 00AAh

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

2.11 instrucciones lógicas

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

40

S = E1 * E2 + E1 * E2

S = E1 * E2

Page 41: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_11.ASM ; instrucciones lógicasPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB 10 ;10 Decimal es equivalente a 00001010BVariable2 DB 11011101B Variable3 DW 1010101010101011B

Datos ENDSCodigo SEGMENT PARA 'Codigo'

instruccionesLogicas PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

MOV BL,Variable2AND BL, Variable1MOV AX, 0A5FFHOR Variable3, AX

RETinstruccionesLogicas ENDP

Codigo ENDSEND instruccionesLogicas

2.13 Desplazamiento y rotaciónPRÁCTICA No. 27NOMBRE: Desplazamiento circularOBJETIVO: Que el alumno:- Pondrá en práctica y apreciará el efecto de los desplazamientos circulares.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: RCL (rotación a la izquierda con acarreo) Sintaxis: RCL destino, contador

Rotar a la izquierda los bits del operando destino junto con el indicador de acarreo CF el número de bits especificado en el segundo operando. Si el número 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.

RCR (rotación a la derecha con acarreo) Sintaxis: RCR destino, contador

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

41

1010101010101011 AXOR 1010010111111111 Variable3 1010111111111111 Variable3

00001010 Variable1AND 11011101 BL

00001000 BL

RCL AX,1RCL AL,CLRCL DI,1

Page 42: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Rotar a la derecha los bits del operando destino junto con el indicador de acarreo CF el número de bits especificado en el segundo operando. Si el número de bits es uno se puede especificar directamente; en caso contrario su valor debe cargarse en CL y especificar CL como segundo operando:

ROL (rotación a la izquierda) Sintaxis: ROL destino, contador

Rota a la izquierda los bits del operando destino el número de bits especificado en el segundo operando, que puede ser uno ó CL previamente cargado con el valor del número de veces.

ROR (rotación a la derecha) Sintaxis: ROR destino, contador

Rota a la derecha los bits del operando destino el número de bits especificado en el segundo operando. Si el número de bits es uno se puede poner directamente, en caso contrario debe ponerse a través de CL.

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

TEMA SUBTEMAS2.12 instrucciones de rotación y desplazamiento

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_12a.ASM ; instrucciones de rotación y desplazamientoPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB 5Variable2 DW 0101001101010001B

Datos ENDSCodigo SEGMENT PARA 'Codigo'

RotacionYDesplazamiento PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, Datos ;Mover la dirección donde inicia Datos en AXMOV DS, AXMOV CL,Variable1MOV AX,Variable2

RCL AX,1 ;Rotación a la izquierda con acarreo un bitRCL AX,CLRETRotacionYDesplazamiento ENDP

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

42

RCR BX,CLRCR BX,1

ROL DX,CLROL AH,1

ROR CL,1ROR AX,CL

Page 43: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Codigo ENDSEND RotacionYDesplazamiento

PRÁCTICA No. 28NOMBRE: Desplazamiento línealOBJETIVO: Que el alumno:- Pondrá en práctica y apreciará el efecto de los desplazamientos líneales.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: SAL,SHL,SAR,SHRSAL/SHL (desplazamiento aritmético a la izquierda) Sintaxis: SAL/SHL destino, contador

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

SAR (desplazamientoaritmético a la derecha) Sintaxis: SAR destino, contador

Desplaza a la derecha los bits del operando destino el número de bits especificado en el segundo operando. Los bits de la izquierda se rellenan con el bit de signo del primer operando. Si el número de bits a desplazar es 1 se puede especificar directamente, si es mayor se especifica a través de CL.

SHR (desplazamiento lógico a la derecha) Sintaxis: SHR destino, contador

Desplaza a la derecha los bits del operando destino el número de los bits especificados en el segundo operando. Los bits de la izquierda se llena con cero. Si el número de bits a desplazar es 1 se puede especificar directamente en el caso en que no ocurra se pone el valor en CL:

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

2.12 instrucciones de rotación y desplazamiento

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_12b.ASM ; instrucciones de rotación y desplazamientoPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB 5Variable2 DW 0AH

Datos ENDSCodigo SEGMENT PARA 'Codigo'

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

43

SAR AX,CLSAR BP,1

SHR AX,CLSHR CL,1

Page 44: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

RotacionYDesplazamiento PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AXMOV CL,Variable1MOV AX,Variable2SAL AX,1SHL AX,CLRETRotacionYDesplazamiento ENDP

Codigo ENDSEND RotacionYDesplazamiento

2.14 Obtención de una cadena con la representación hexadecimal

2.15 Captura y almacenamiento de datos numéricos

2.16 Operaciones básicas sobre archivos de disco

3.- Modularización3.1 ProcedimientosPRÁCTICA No. 43NOMBRE: Definición de procedimientos internosOBJETIVO: Que el alumno:- Experimentará definiendo procedimientos internos.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Los procedimientos son secciones de código que se ejecutan desde varios lugares en un programa mediante llamadas a ellos. Cada vez que se llama a un procedimiento se ejecuta las instrucciones que forman ese procedimiento, y después se devuelve el control al programa que llamó o programa principal. Una declaración de procedimiento comienza y termina con el par de directivas PROC y ENDP e incluye bien una opción NEAR o FAR. Estos atributos informan al ensamblador de que tipo de bifurcación o instrucción de llamada generan cuando van a esa posición particular . La instrucción CALL sirve para llamar a procedimiento. Esta guarda dirección instrucción siguiente, transfiere control. La instrucción CALL hace que la dirección de la siguiente instrucción se almacene en pila; entonces el control del programa se transfiere al operando parámetro. Cuando se completa el procedimiento llamado, continua la ejecución del programa que llamo en la instrucción que sigue a la instrucción CALL Sintaxis: CALL parámetro_ operando. Señalizadores afectados: Ninguno (excepto cuando se presenta una conmutación de tarea). CALL Cercana: Esta instrucción tiene 3 bytes de longitud; el primer byte contiene el código y el segundo y tercero contienen el desplazamiento o distancia. Cuando se ejecuta un CALL cercano, primero salva en la pila la dirección de desplazamiento de la siguiente instrucción. Esa dirección está en el apuntador de instrucciones (IP o EIP). ¿por qué salvar IP o EIP en la pila?. El apuntador de instrucciones siempre apunta a la siguiente instrucción en el programa. Para la instrucción CALL, se salva el contenido de IP o EIP dentro de la pila, con lo cual el control del programa pasa a la instrucción que sigue al CALL después de que termina un procedimiento.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

44

Page 45: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

CALL Lejana: Esta instrucción puede llamar a un procedimiento almacenado en cualquier localidad de la memoria en el sistema. La instrucción CALL lejana tiene 5 bytes y tiene un código de operación 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 instrucción Call lejana salva el contenido de IP y CS en la pila antes de brincar a la dirección indicada por los bytes 2 a 5 de la instrucción. Esto permite que la Call lejana llame a un procedimiento ubicado en cualquier lugar en la memoria y que retome desde el procedimiento. Instrucción Call con operandos registros: Las instrucciones Call, al igual que las JMP pueden contener un operando registro y un ejemplo es la instrucción Call BX. Esta instrucción salva el contenido de IP dentro de la pila. Después, brinca a la dirección de desplazamiento de 16 bits almacenada en cualquier registro de 16 bits, excepto los registros de segmento.

La instrucción Call también puede referenciar apuntadores lejanos si la instrucción aparece como CALL FAR PTR [SI]. Esta instrucción recupera una dirección de 32 bits en la memoria del segmento de datos direcciónada por SI y la utiliza como dirección para un procedimiento lejano. Los Procedimientos pueden ser considerados como NEAR (intrasegmento) o FAR (intersegmento). Estos atributos en un procedimiento ayudan al microprocesador a determinar el tipo de instrucción CALL a generar cuando el procedimiento es requerido. También deben ser establecido un camino para la vuelta desde el procedimiento. Este camino de instrucciones 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 Definiciòn de procedimientos 6.2 Paso de parámetros

6.3 Instrucción para llamada 6.4 Procedimientos internos

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR6_1.ASM ; Definición de procedimientos internosPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB "INFORMATICA$"Variable2 DB "SISTEMAS$"

Datos ENDSCodigo SEGMENT PARA 'Codigo'

ProcedimientoInterno PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AXLEA DX,Variable1CALL DesNL ;Llamando al procedimiento Desplegar cadena con Nueva LíneaLEA DX,Variable2CALL Des ;Llamada a procedimiento desplegar sin cambio de líneaRETProcedimientoInterno ENDP

Des PROC NEARPUSH AX ;Guardar contenido del registro que se alteraráMOV AH,9 ;Función para desplegar cadena ubicada en DXINT 21H

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

45

Page 46: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

POP AX ;Recuperar contenido del registro antes de entrar al procedimientoRET

Des ENDPDesNL PROC NEAR

PUSH AX ;Guardar contenido del registro que se alteraráMOV AH,9 ;Función para desplegar cadena ubicada en DXINT 21HMOV AH,2 ;Función para deplegar un carácterMOV DL,0AH ;Carácter a desplegar Avance de líneaINT 21HMOV DL,0DH ;Carácter a desplegar Retorno de carroINT 21HPOP AX ;Recuperar contenido del registro antes de entrar al procedimientoRET

DesNL ENDPCodigo ENDS

END ProcedimientoInterno

PRÁCTICA No. 44NOMBRE: Definición de procedimientos externosOBJETIVO: Que el alumno:- Experimentará definiendo procedimientos externos.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Los procedimientos externos se ubican en un segmento de códico de programa independiente al principal,

llamándosele a estos biblioteca de procedimientos, los cuales pueden estar organizados, tomando en cuenta sus capacidades o área de aplicación. 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 operación PUBLIC. En el programa principal se especificará que se trata de procedimientos externos, mediante la pseudo operación EXTRN y los llamados a cada procedimiento sera através de la pseudo operación CALL.

La pseudo operación EXTRN identifica símbolos 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 operación PUBLIC permite especificar los procedimientos o variables que se ponen a disposición de otros programas que se enlazarán a éste. Sintaxis PUBLIC Nombre1,Nombre2

Cuando se especifiquen más de uno deberán ser separados por una coma en ambos casos.

Pasos para compilar y ligar: Tasm BPE Compila y genera un BPE.OBJTasm PR6_5 Compila y genera un PR6_5.OBJTlink PR6_5 + BPE 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

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

46

Page 47: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

;Fecha de creación: Mayo del 2005; BPE.ASM; Biblioteca de Procedimientos Externos BPE.ASM

EXTRN Cadena : BYTE ;Se especifica que la variable Cadena se encuentra en otro archivoCodigoSEGMENT PARA PUBLIC 'Codigo'

PUBLIC Clrscr,Despliega ;Se declaran públicos los procedimientos ClrScr y despliegaASSUME CS:CodigoClrScr PROC FAR ;Procedimiento para borrar toda la pantallaMOV AH,7 ;Desplazar el contenido de ventana hacia abajo para borrarlaMOV AL,00 ;Indica que será toda la ventanaMOV BH,7 ;Atributo a usar para borrarMOV CH,0 ;Renglon superior izquierdoMOV CL,0 ;Columna superior izquierdaMOV DH,24 ;Renglón inferior derechoMOV DL,80 ;Columna inferior derechaINT 10H ;Interrupción BIOS Manipulación VideoRET ;Retorna a una intrucción después de dónde fue llamadoClrScr ENDP ;Fin del procedimiento

Despliega PROC FAR ;Procedimiento para desplegar una cadena ubicada en la variable cadenaMOV AH,9LEA DX,CadenaINT 21HRETDespliega ENDP

Codigo ENDSEND

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR6_5.ASM; Programa Principal desde donde se llamaran los procedimientos ExternosEXTRN 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 ENDSDatos SEGMENT PARA PUBLIC 'Datos'

Cadena DB "SISTEMAS",0AH,0DH,"$" ;0AH Avance de línea 0DH Retorno de carroVariable1 DB "INFORMATICA$" ;”$” Fin de la cadena

Datos ENDS

CodigoSEGMENT PARA 'Codigo'PUBLIC Cadena ;Se declara pública la variable Cadena, para poder ser usada en otro archivo (Segmento)ProcedimientosExternos PROC FAR ;Procedimiento principalASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ; Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, Datos ;Tomar la dirección en AX de donde existen los datos de este programaMOV DS, AX ;Asignarle la dirección de datos guardada en AX al Registro de Segmento de Datos

DSCALL ClrScr ;Borrar toda la pantalla con procedimiento externoMOV AH,9 ;Función para desplegar cadena

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

47

Page 48: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

LEA DX,Variable1 ;Tomar la dirección de la cadenaCALL Despliega ;Desplegar la cadena SISTEMAS con procedimiento externoLEA DX,Cadena ;Tomar la dirección de la cadenaCALL Despliega ;Desplegar la cadena SISTEMAS con procedimiento externoRETProcedimientosExternos ENDP ;Fin del procedimiento principal

Codigo ENDS ;Fin del segmentoEND ProcedimientosExternos ;Fin del programa

3.2 MacrosPRÁCTICA No. 41NOMBRE: Definición de macros internas OBJETIVO: Que el alumno:- Experimentará con la definición de macros internas.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Las macros son una forma de subprogramación al igual que los procedimientos, con la diferencia que éstas en

cada punto en donde son llamadas durante el proceso de compilación, se incorpora el código 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 ejecución es más rápida que un procedimiento, pero el código objeto generado es de mayor tamaño, para llamarlas sólo basta con usar su nombre y de existir parámetros, estos deberán ser separados por al menos un blanco, cuando son definidas las macros con parámetros, cada uno es separados por una coma entre ellos, todas las etiquetas usadas dentro de una macro deberán 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 lógica del programa que las llama.

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

5.1 Definición 5.2 Parámetros y etiquetas 5.3 Ensamble

5.4 Ventajas y desventajas

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR5_1a.ASM ; Definición de macros internasClrScr MACRO ;Borra toda la pantalla no requiere parámetros

PUSH AX ;Guardar contenido de los registros en la pilaPUSH BXPUSH CXPUSH DXMOV AH,6 ;Función Enrolla pantalla activa hacia arribaMOV AL,0 ;Número de líneas, cero para toda la pantallaMOV BH,07 ;Atributo usado para borrarMOV CH,00 ;Fila esquina superior izquierdaMOV CL,00 ;Columna esquina superior izquierdaMOV DH,25 ;Fila esquina inferior derechaMOV DL,80 ;Columna equina inferior derechaINT 10H ;Interrupción de video

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

48

Page 49: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

POP DX ;Extraer contenido de los registros de la pilaPOP CXPOP BXPOP AXENDM ;Fin de la macro ClrScr

WRITEXY MACRO X, Y, Cadena ;Escribe el contenido de Cadena en Renglon Y Columna XPUSH AXPUSH DXMOV AH,15 ;Función obtener pantalla actualINT 10HMOV AH,2 ;Función posicionar cursorMOV DH,Y ;FilaMOV DL,X ;ColumnaINT 10H

MOV AH,9 ;Función Desplegar cadenaLEA DX,Cadena ;Dirección de cadena a desplegarINT 21H ;Interrupción del Sistema OperativoPOP DXPOP AXENDM

WRITE MACRO Msg ;Escribe el contenido de Msg que llega como parámetro PUSH AXPUSH DXMOV AH,9LEA DX,MsgINT 21HPOP DXPOP AXENDM

Delay MACRO TIEMPOLOCAL CICLO1,CICLO2 ;CICLO1,CICLO2 SON ROTULOS LOCALES

PUSH CX ;GUARDA VALORES DX Y CX ORIGINAL EN PILAPUSH DXMOV DX,TIEMPO

CICLO2: MOV CX,0FFFFHCICLO1: DEC CX

CMP CX,0 ;Comparar el contenido de CX con CeroJNE CICLO1 ;Saltar si la comparación anterior no es igualDEC DX ;Decrementar en una unidad el contenido de DXCMP DX,0JNE CICLO2POP DXPOP 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 ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB "INFORMATICA","$" ;”$” Fin de la cadenaVariable2 DB "SISTEMAS","$"

Datos ENDSCodigo SEGMENT PARA 'Codigo'

MacrosInternas PROC FAR

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

49

Page 50: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

ASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AXClrScrWriteXY 1 1 Variable1 ;Escribir el contenido de Variable1 en renglón 1 columna 1Delay 0FFFFH ;Retardo de FFFFh tiemposWrite Variable2 ;Desplegar el contenido de Variable2 en la posición donde se encuentre el cursorDelay 0FFFFHWritexy 0ah 0AH Variable2Delay 0FFFFHWrite Variable1RETMacrosInternas ENDP

Codigo ENDSEND MacrosInternas

PRÁCTICA No. 42NOMBRE: Definición de macros externasOBJETIVO: Que el alumno:- Experimentará con la definición de macros externas.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Se les llama macros externas, debido a que el código 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 compilación para incorporar el código de las macros en el achivo que las usará: #INCLUDE NoArMa.INC Lo cual significa Nombre Del Archivo de Macros y es opcional la extención 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 compilación.

Para el usuario la compilación, ligado y ejecución; seran idénticas a haber utillizado macros internas o externas; pero en el momento de la compilación se tardará unas fracciones de tiempo más al usar las macros externas y es resultado de la búsqueda e incorporación 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 Definición 5.2 Parámetros y etiquetas 5.3 Ensamble

5.4 Ventajas y desventajas

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;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, DalayClrScr MACRO ;Borra toda la pantalla no requiere parámetros

PUSH AX ;Guardar contenido de los registros en la pilaPUSH BX

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

50

Page 51: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

PUSH CXPUSH DXMOV AH,6 ;Función Enrolla pantalla activa hacia arribaMOV AL,0 ;Número de líneas, cero para toda la pantallaMOV BH,07 ;Atributo usado para borrarMOV CH,00 ;Fila esquina superior izquierdaMOV CL,00 ;Columna esquina superior izquierdaMOV DH,25 ;Fila esquina inferior derechaMOV DL,80 ;Columna equina inferior derechaINT 10H ;Interrupción de videoPOP DX ;Extraer contenido de los registros de la pilaPOP CXPOP BXPOP AXENDM ;Fin de la macro ClrScr

WRITEXY MACRO X, Y, Cadena ;Escribe el contenido de Cadena en Renglón Y Columna XPUSH AXPUSH DXMOV AH,15 ;Función obtener pantalla actualINT 10HMOV AH,2 ;Función posicionar cursorMOV DH,Y ;FilaMOV DL,X ;ColumnaINT 10H

MOV AH,9 ;Función Desplegar cadenaLEA DX,Cadena ;Dirección de cadena a desplegarINT 21H ;Interrupción del Sistema OperativoPOP DXPOP AXENDM

WRITE MACRO Msg ;Escribe el contenido de Msg que llega como parámetro PUSH AXPUSH DXMOV AH,9LEA DX,MsgINT 21HPOP DXPOP AXENDM

Delay MACRO TIEMPOLOCAL CICLO1,CICLO2 ;CICLO1,CICLO2 SON ROTULOS LOCALES

PUSH CX ;GUARDA VALORES DX Y CX ORIGINAL EN PILAPUSH DXMOV DX,TIEMPO

CICLO2: MOV CX,0FFFFHCICLO1: DEC CX

CMP CX,0 ;Comparar el contenido de CX con CeroJNE CICLO1 ;Saltar si la comparación anterior no es igualDEC DX ;Decrementar en una unidad el contenido de DXCMP DX,0JNE CICLO2POP DXPOP CX

ENDM

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

51

Page 52: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: 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 continuaciónINCLUDE NoArMa.INCPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB "INFORMATICA","$" ;”$” Fin de la cadenaVariable2 DB "SISTEMAS","$"

Datos ENDSCodigo SEGMENT PARA 'Codigo'

MacrosExternas PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AXClrScrWriteXY 1 1 Variable1Delay 0FFFFHWrite Variable2Delay 0FFFFHWritexy 0ah 0AH Variable2Delay 0FFFFHWrite Variable1RETMacrosExternas ENDP

Codigo ENDSEND MacrosExternas

4.- Programación de dispositivos4.1 El buffer de video en modo textoPRÁCTICA No. 7NOMBRE: Funcionamiento internoOBJETIVO: - Que el alumno observe los contenidos de los registros e introduzca un programa directamente en la memoria y lo

ejecute.

INTRODUCCIÓN: Cualquier versión 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 Símbolo 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 fácil de usar aunque también muy limitada, pero muy práctica y no es sensible al context (No hace diferencia entre MAYÚSCULAS y minúsculas) y todos los números 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

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

52

Page 53: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

q Salirg Ejecutar lo anteriormente escritoa Agregar código o Ensamblar a(Dirección) Agregar a partir de Dirección

Ejecutar el DEBUG dentro de una ventana del Símbolo del Sistema para alterar el contenido del Registro AX

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

-A100 Ensamblar a partir de la posición 100 de memoriaMOV AH,0 Función 0 Iniciar modo de videoMOV AL,0F Seleccionamos el modo de video 640 X 350 gráficos o 0DINT 10 Ejecutar interrupción 10 hex INT 20 Termina programa y retornar

-G Ejecutar

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

1.5.2 Funcionamiento interno

PRÁCTICA No. 38NOMBRE: Manipulación del vídeo con interrupciones de BIOSOBJETIVO: Que el alumno:- Podrá introducir y extraer datos de la memoria de vídeo, haciendo uso de interrupciones .- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: La pantalla es una malla de posiciones direcciónables, en donde puede ser posicionado el cursor o carácter, en la

memoria de vídeo y posteriormente es reflejada en el monitor, normalmente tiene 25 renglones y 80 columnas en modo texto y en mòdo gráfico 800 columnas y 600 renglones en donde cada posición es un píxel, punto o “dot”. Para hacer referencia a la esquina superior Izquierda es el renglón cero y columna cero.

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

4.3.2 Interrupciones internas del BIOS

MATERIAL Y EQUIPO NECESARIO:

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

53

Page 54: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Ordenador con sistema operativo DOS o posterior, con el MACRO y TURBO ASSEMBLER versión 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 ejecución del programa.

2. El maestro explicará la función de las instrucciones 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.

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR4_3_2a.ASM ;Programa para borrar toda la pantalla haciendo uso de interrupción de BIOSPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSCodigo SEGMENT PARA 'Codigo'

InterrupcionesParaESDeStrings PROC FARASSUME CS:Codigo, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la

pilaMOV AX,00PUSH AX

; Borrado de pantalla usando interrupción del BIOSMOV CX,0000 ;Esquina superior izquierdaMOV DX,2479H ;Esquina inferior derechaMOV BH,7 ;Atributo normal (Blanco sobre negro)MOV AH,6 ;Función enrollar pantalla hacia arribaMOV AL,0 ;Toda la pantalla, puede especificarse el número de líneasINT 10H ;Función para manipulación del VIDEO

RETInterrupcionesParaESDeStrings ENDP

Codigo ENDSEND InterrupcionesParaESDeStrings

4.2 Acceso a discos en lenguaje ensambladorPRÁCTICA No. 36NOMBRE: Manipulación del disco con interrupciones de S.O.OBJETIVO: Que el alumno:- Podrá leer y escribir datos en un archivo.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: ************************************ **************************** ************************************************************CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

54

Page 55: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

TEMA SUBTEMAS4.1 Definiciòn de interrupciones

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR4_1.ASM ; Lectura de un sector de un disco removible de 1.4MbPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB 512 DUP ('R'),"$"Datos ENDSCodigo SEGMENT PARA 'Codigo'

ManipulacionDisco PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

;===========================; Asegurarse de que exista un medio removible BL = 0 Defecto, 1 = A, 2 = B, etc; Después de la interrupción si AX = 00H el dispositivo es removible y si AX = 01FH es fijo; ; siempre y cuando la bandera de carro no se encuentre encendida, después de la interrupción.MOV BL,1 ; Unidad AMOV AX,4408H ; Función 4408H Detectar si el equipo cuenta con la unidad INT 21H

;=========================== ; Lectura de unsector del discoMOV AH,44H ; Función LecturaMOV AL,04H ; Subfunción lecturaMOV BL,1 ; Unidad 0 Default, 1A, etc.LEA DX,Variable1 ; Dirección donde se dejará lo leidoINT 21h ; Provocar la interrupción, para hacer lo anterior especificado

;=========================== MOV AH,9 ;Función desplegar cadenaLEA DX,Variable1 ; Dirección donde se encuentra la cadenaINT 21H ; Provocar la interrupción, para hacer lo anterior especificadoRETManipulacionDisco ENDP

Codigo ENDSEND ManipulacionDisco

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

55

Page 56: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

PRÁCTICA No. 37NOMBRE: Manipulación del disco con interrupciones de BIOSOBJETIVO:

Que el alumno:- Podrá leer y escribir uno o más sectores en el disco.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: La interrupción 17H del BIOS permite leer, escribir, formatear y verificar el estado de los discos. El uso de esta

interrupción puede ocasionar el deterioro de los datos del disco, cuando se especifica la función 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 mayorìa de las funciones de la interrupción 13H alteran la bandera de acarreo, si hubo un éxito o fracaso, regresando el código de error en el registro AH. El BIOS mantiene en su área de datos información 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 operación sobre el disco regresa un error, este podrá ser restablecido con la función 00H y se podrá reintentar la operación nuevamente. Si el error persiste se deberá mostrar un mensaje de error en donde se especifique el problema y la posible solución.Código Estado Código Estado00H Sin error 09H Intento de DMA de cruzar una frontera de 64K el

L/E01H Comando incorrecto, no reconocido por el

controlador10H Encontrò un Control Cíclico Redundante (CRC)

incorrecta02H Marca de dirección en disco no encontrada 20H Fallo del controlador (Hardware)03H Intento de escribir en un disco protegido 40H Fallo en operación de búsqueda (Hardware)04H Pista/sector no válido 80H Fallo en el dispositivo al responder (Tiempo

excedido, no05H Fallo en la operación de restablecer Existe disco, puerta abierta)06H Se retirò el disco flexible desde el ùltimo

acceso0AAH Unidad no preparada

07H Parámetros de la unidadd erroneos 0BBH Error no definido08H Acceso directo a memoria (DMA) rebasado 0CCH Fallo al escribir

Para restablecer el sistema de disco flexible:MOV AH,00H; Funciòn para restablecer el discoMOV DL,80H ;Disco duroINT 13H

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

4.3 Tipos de Interrupciones

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

56

Page 57: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

;PR4_3.ASM ; Programa que permite leer el primer sector de un disco ubicado en la unidad APila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB 512 DUP(’R’) ;Reserva un espacio de 512 bytes iniciados con RDatos ENDSCodigo SEGMENT PARA 'Codigo'

ManipulacionDico PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la

pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

MOV AH,2 ; Función para leer uno o más sectores del discoMOV AL,1 ; Cantidad de sectores (1...)MOV CH,0 ; Número de la PISTA, en este caso es la CERO (0...)MOV CL,1 ; Número de la SECTOR, en este caso es la UNO (1...)MOV DH,0 ; Número de la CARA, en este caso es la CERO ( 0 ...)MOV DL,0 ; Número de la UNIDAD, en este caso es la CERO (0 Defecto, 1 A, 2 B, 3 C)LEA BX,Variable1 ; Dirección donde se dejaran los datos leidos,

; dejando en AH el resultado de la operación y en AL la cantidad de sectores leidosINT 13H ; interrupción de BIOS para manipular medios de almacenamiento secundarios

(Discos)

RETManipulacionDico ENDP

Codigo ENDSEND ManipulacionDico

4.3 Programación del puerto serial

4.4 Programación del puerto paralelo

4.5 Programación híbridaPRÁCTICA No. 45NOMBRE: Programación a bajo nivel con PascalOBJETIVO: Que el alumno:- El alumno practicará, programando a bajo nivel en el lenguaje de programación 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.

INTRODUCCIÓN: El lenguaje de programación Pascal es posible provocar interrupciones, haciendo uso de la librería DOS, en la

cual se encuentran diferentes procedimientos que se pueden consultar desde la ayuda, en esta práctica se usa el intr. y los registros de 8 y 16 bits; el pascal es ejecutado desde una ventana con el símbolo del sistema.

Declaración: procedimiento Intr(IntNo: Octeto; var Regs: TRegisters); donde: - IntNo es el número de la interrupción del software (0... 255). - TRegisters es un procedimiento definido en la libreria DOS.

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

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

57

Page 58: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

TEMA SUBTEMAS7.1Pascal y ensamblador

(*Instituto Tecnológico de Ciudad VictoriaDepartamento de Sistemas y ComputaciónAutor: José Regino Infante VenturaFecha de creación: Mayo del 2005PR7_1a.ASM *)PROGRAM PR7_1a;USES CRT, (* Librería requerida para poder usar el WRITELN,...*) DOS; (* Librería requerida para poder provocar interrupciones, usar los registros y declarar variables de ese tipo*)VAR Msg : String; Fecha, Anio, Mes, Dia : string; Regs : Registros; (* Declaracion de la variable Regs como de tipo Registros*)BEGIN Msg := 'Hola'; Writeln(msg); Regs.ah := $2a; (* Función 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 Año*) writeln('La Fecha es: ', Fecha); END.

PRÁCTICA No. 46NOMBRE: Código Ensamblador inmerso en un programa en Pascal.OBJETIVO: Que el alumno:- Incorporará código 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.

INTRODUCCIÓN: El lenguaje de programación 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 programación a bajo nivel con codigo inmerso en ensamblador, lo cual es parecido a haberlo hecho en Turbo pascal.

Los comentarios en una declaración del asm deben estar en el estilo de Delphi. Un punto y coma no indica que el resto de la línea es un comentario

En general, las reglas del uso del registro en una declaración del ASM son iguales que las de un procedimiento o de una función externo. Una declaración 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 declaración del asm, EBP señala al marco actual del apilado y señala ESPECIALMENTE a la tapa del apilado. A excepción de ESPECIALMENTE y EBP, una declaración del asm no puede asumir nada sobre contenido del registro en entrada a la declaración

Usted puede escribir procedimientos y funciones completos usando código en línea del lenguaje ensamblador, sin incluir una declaración del final del comenzar.... Por ejemplo,

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

58

Page 59: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

function LongMul(X, Y: Integer): Longint;asm MOV EAX,X IMUL Yend;El recopilador realiza varias optimizaciones en estas rutinas:parámetros cuyo tamaño no es de 1, 2, o 4 octetos. Dentro de la rutina, tales parámetros deben ser tratados como si fueran parámetros del var. A menos que una función vuelva una secuencia, una variante, o una referencia de la interfaz, el recopilador no asigna una variable del resultado de la función; una referencia al símbolo 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 parámetros locales, o para las rutinas que tienen parámetros en la pila.El código automáticamente generado de la entrada y de la salida para la rutina seria esto:

PUSH EBP ; Presente si Locales <> 0 o Parámetro <> 0MOV EBP,ESP ; Presente si Locales <> 0 o Parámetro <> 0SUB ESP,Locals ; Presente si Locales <> 0 ...MOV ESP,EBP ; Presente si Locales <> 0POP EBP ; Presente si Locales <> 0 o Parámetro <> 0RET Params ; 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 localizaciòn temporal @Result.

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

7.1Pascal y ensamblador

(*Instituto Tecnológico de Ciudad VictoriaDepartamento de Sistemas y ComputaciónAutor: José Regino Infante VenturaFecha de creación: Mayo del 2005PR7_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

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

59

Page 60: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

MOV @Result,EAX END;END;FUNCTION LongMul(X, Y: Integer): Longint;ASM MOV EAX,X IMUL Y (* Multiplica el contenido de Y por el de EAX*)END;

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.

PRÁCTICA No. 47NOMBRE: Programación a bajo nivel con lenguaje COBJETIVO: Que el alumno:- El alumno practicará, programando a bajo nivel en el lenguaje de programación 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.

INTRODUCCIÓN: El lenguaje de programación C permite provocar interrupciones y asì poder tener un control de hardware y software, hasta la versión 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 botón derecho del ratón, cuando el apuntador del mismo se encuentre sobre el programa ejecutable generado; en la opciòn 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 manejar desde procesadores 286. CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA SUBTEMAS7.2 C Ensamblador

//Instituto Tecnológico de Ciudad Victoria//Departamento de Sistemas y Computación//Autor: José Regino Infante Ventura//Fecha de creación: Mayo del 2005//PR7_2a.CPP //#include <stdio.h> /*Librería que permite hacer uso de la impresión con formato y borrado de pantalla */#include <dos.h> /*Librería 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 ejecución del programa hasta pulsar el ENTER */ regs.x.cx = 000; regs.x.dx = 0x2479; regs.h.bh = 7;

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

60

Page 61: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

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 función de C para ello */

getchar(); printf (msg2); /*Impresión con formato haciendo uso de la función de C */ getchar();}

PRÁCTICA No. 48NOMBRE: Código Ensamblador inmerso en lenguaje COBJETIVO: Que el alumno:- Incorporará código 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.

INTRODUCCIÓN: El lenguaje C es sin duda el más apropiado para la programación de sistemas, pudiendo sustituir al ensamblador en muchos casos. Sin embargo, hay ocasiones en que es necesario acceder a un nivel más bajo por razones de operatividad e incluso de necesidad (programas residentes que economicen memoria, algoritmos rápidos para operaciones críticas, 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 SUBTEMAS7.2 C Ensamblador

//Instituto Tecnológico de Ciudad Victoria//Departamento de Sistemas y Computación//Autor: José Regino Infante Ventura//Fecha de creación: Mayo del 2005//PR7_2b.CPP //#include "stdafx.h" */ Librería para poder utilizar printf */#include "iostream.h" */ Librería 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[]) /* Funciòn principal del programa */{

printf("Operación matemáticas desde C y Ensamblador\n");/* Función Impresión 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);}

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

61

Page 62: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

long int Suma(long int X,long int Y){

_asm // Block con código ensamblador{

mov eax,Xadd eax,Ymov X,eax

}return (X);

}

long int LongMul(int X,int Y) {

_asm mov eax,X // Codificación asm línea por línea_asm imul Y_asm mov X,eaxreturn (X);

}

//Instituto Tecnológico de Ciudad Victoria//Departamento de Sistemas y Computación//Autor: José Regino Infante Ventura//Fecha de creación: Mayo del 2005//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> /*Librería que permite hacer uso de la impresión con formato y borrado de pantalla */#include <dos.h> /*Librería 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 código ensamblador para especificar los parámeros del borrado */mov dx,0x2479 /*Renglon 24 Columna 79 */mov bh,7 /*Atributo del carácter normal */mov ah,6 /*Función para borrar hacia arriba */mov al,0 /*Toda la pantalla */

} int86(0x10,&regs,&regs); /*Borrado de pantalla con interrupción de BIOS desde C */ getchar(); asm{ mov ah,9

lea dx,msg2int 0x21 /*Provocar la interrupción 21 desde ensamblador inmerso en el código C */

} getchar();

printf (msg2); getchar();}

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

62

Page 63: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

PRÁCTICA No. 49NOMBRE: Programación a bajo nivel con lenguaje BasicOBJETIVO: Que el alumno:- El alumno practicará, programando a bajo nivel en el lenguaje de programación 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.

INTRODUCCIÓN: El lenguaje BASICCORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

TEMA SUBTEMAS7.2 Basic Ensamblador

4.6 Programación de puerto usb

PRÁCTICA No. 1NOMBRE: IntroducciónOBJETIVO: - Que el alumno ubique los elementos y dispositivos que se encuentran dentro de un gabinete.INTRODUCCIÓN: Los elementos que podemos encontrar dentro de un gabinete son los siguientes:

Fuente de poderAT, ATX; con voltajes de 6, 12 y 3.3.Estándares derivados de fuentes de alimentación ATX (SFX,TFX,WTX,AMD GES,EPS12V)

Unidades de disco e interfacesEn el mundo del PC hay dos grandes estándares, IDE y SCSI, aunque el primero está mucho más extendido que el segundo, la tecnología 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.

Tarjeta madre

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

63

Page 64: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Modulos de puertosLos ordenadores personales actuales conservan prácticamente todos los puertos heredados desde que se diseñó el primer PC de IBM. Por razones de compatibilidad aún se mantienen este tipo de puertos, pero poco a poco irán apareciendo nuevas máquinas en las que no tengan los típicos conectores serie (DB9), paralelo(DB25), teclado(DIN), Video, etc... y en su lugar sólo encontraremos puertos USB, RJ45, RJ11 e Infrarrojo.

Pila

Su función es la de proporcionar la energia para mantener los datos de configuración del equipo.Bios

AMI,Award, Phoenix, Equipo original.Ranuras de expansión

EISA, MCA, ISA, PCI, AGP.

PRÁCTICA No. 8NOMBRE: Manejo de memoriaOBJETIVO: - Que el alumno haga uso de diferentes tamaños de memoria en un programa.

INTRODUCCIÓN: La memoria es una colección de

posiciones o celdas contiguas de una longitud de un byte cada una de ellas, totalmente direcciónables.

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 yescritura 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 Eléctricamente ). Algunos de estos términos son usados tanto en medios electrónicos (Circuitos Integrados), como en medios magnéticos o magnético-ópticos (Disco o Cinta).

La memoria virtual es una combinación 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.

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

1.6 Manejo de memoria

PRÁCTICA No. 19NOMBRE: Transferencia de datosOBJETIVO: Que el alumno:- Probará el funcionamiento de las instrucciones que le permitan mover, referenciar e intercambiar datos.- Aprenda la sintaxis básica de un programa en ENSAMBLADOR y las palabras reservadas.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

CPU

Memoria CACHE

Memoria PRINCIPAL

64

Page 65: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

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

INTRODUCCIÓN: LDS y LES Cargan el puntero de 4 bytes, localizados en la posición de memoria indicada por el segundo

operando, en un registro de segmento y uno de palabra. La primera palabra del señalizador (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 SUBTEMAS2.5 instrucciones para transferencia de datos

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_5.ASM ;Transferencia de datosPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB 5Variable2 DD ? Variable3 DD 10,20,30,40,50

Datos ENDSCodigo SEGMENT PARA 'Codigo'

TransferenciaDatos PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

MOV BL, Variable1 ;Copia el contenido del operando fuente en el destinoLEA DX, Variable3 ;Tomar la dirección efectiva del VariableLDS SI, Variable3 ;Carga puntero de doble palabra en registroLES BX, Variable2 ;Carga puntero de doble palabra en registroXCHG BX, DXXCHG CL, Variable1XCHG AL, CL

RETTransferenciaDatos ENDP

Codigo ENDSEND TransferenciaDatos

PRÁCTICA No. 22NOMBRE: Manipulación de banderasOBJETIVO: Que el alumno:- Apagará y encenderá las banderas.- Aprenda la sintaxis básica 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.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

65

Page 66: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

INTRODUCCIÓN:

CLC borra el señalizador de arrastre.

La operación CLC pone el señalizador de arrastre a 0 . No están afectados ningún registro ni señalizador.

Sintaxis: CLC (no operando)Señalizadores afectados: CF = 0 Señalizadores no definidos: Ninguno

CLD borra el señalizador de dirección.

CLD borra el señalizador de dirección, incrementa SI y DI. Ningún otro registro ni señalizador están afectados. Después de que se ejecuta CLD, las operaciones de cadena incrementa automáticamente los registro índice (SI y/o DI).

Sintaxis: CLD ( no operando)Señalizadores afectados: DF Señalizadores no definidos: Ninguna

CLI borra señalizador de interrupción (inhabilita interrupciones).

La instrucción CLI borra el señalizador de habilitación de interrupción. No es afectado ningún otro señalizador.

Sintaxis: CLI ( no operando)Señalizadores afectados: IF = 0 Señalizadores no defenidos: Ninguno

CMC complementa señalizador de arrastre. Esta instrucción cambia el valor del señalizador de arrastre. Si el señalizador de arrastre esta a 1, se convierte en 0. Si esta a 0 se convierte en 1.

Sintaxis: CMCSeñalizador afectados: CF Señalizador no definidos: Ninguno.

LAHF carga en AH los señalidadores. Esta instrucción carga SF, ZF, AF, PF, CF, ciertos bits del registro AH. AHSF ZF AF PF CF

Las posiciones de los bits1, 3 y 5 del registro AH están indefinidas.

SAHF almacena el contenido del registro AH en los señalizadores SF, ZF, xx, AF, xx, PF, xx, CF. Los valores del registro AH se utilizan para cargar los señalizadores aquí listados desde los bits 7, 6, 4, 2 y 0, respectivamente.

Sintaxis: SAHF (no operando)Señalizadores afectados: Ninguno Señalizadores no definido: Ninguno

STC pone a 1 señalizador de arrastre.

Sintaxis: STC (no operandos)Señalizadores afectados: CF = 1 Señalizadores no definidos: Ninguno

STD pone a 1 señalizador de dirección. La instrucción STD pone a 1 el señalizador DF. Esto hace que las instrucciones de cadena posteriores decremente los registros SI y/o DI.

Sintaxis: STD (no operando)Señalizadores afectados: Ninguno Señalizadores no definidos: Ninguno

STI pone a 1 señalizador de habilitación de Interrupción. Esto permite que sean facilitadas las interrupciones externas enmascarables después de la ejecución de la instrucción siguiente.

Sintaxis: STI (no operando)Señalizadores afectados: CF = 1 Señalizadores no definidos: Ninguno.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

66

Page 67: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

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

2.7 instrucciones de manipulación de banderas

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR2_7.ASM ; instrucciones de manipulación de banderasPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSCodigo SEGMENT PARA 'Codigo'

ManipulaciónDeBanderas PROC FARASSUME CS:Codigo, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXSTC ; Encender la bandera de acarreoCLC ; Apagar la bandera de acarreoLAHF ;Cargar las banderas en la parte alta del registro AXRETManipulaciónDeBanderas ENDP

Codigo ENDSEND ManipulaciónDeBanderas

PRÁCTICA No. 31NOMBRE: Almacenamiento en memoria de cadenasOBJETIVO: Que el alumno:- Guardará cadenas en memoria.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: STOS : Almacenar una cadena de caracteres. STOS/ STOSB/ STOSW (80286/80386) Almacena AL (byte) o AX (palabra) en ES: [DI] La instrucción STOS transfiere el contenido del registro AL o del AX al byte de memoria o palabra de memoria señalada por ES:DI. El operando destino debe ser direcciónable desdel registro ES, no se permite anulación 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

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

67

Page 68: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

dirección de memoria siempre está sujeta a los registros ES:DI. Dependiendo de la bandera de dirección, STOS incrementa o disminuye el registro DI en 1 para byte, 2 para palabra y 4 para palabra doble. Un uso práctico de STOS con un prefijo REP es para iniciar el área de datos a cualquier valor específico, tal como limpiar el área de despliegue a blancos. Puede establecer el número 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 instrucción STOSW en vez de la instrucción STOSB. Además, también se utiliza el registro AX en vez del registro AL.

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

TEMA SUBTEMAS3.2 Almacenamiento en memoria

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_2.ASM ; Definición de stringPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB "INFORMÁTICA$"Variable2 DB "SISTEMAS","$"

Datos ENDSCodigo SEGMENT PARA 'Codigo'

DefiniciónDeString PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos,ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AXMOV ES, AX

LEA DI, Variable1 ; Tomar la dirección efectiva de Variable1 en DXMOV CX,10 ; Al contador se le asigna un diezCLD ; Borrar señalizador de dirección para autoincremento de DIMOV AL,'R' ; Asigna a la parte baja del registro AX el dato R 52H REP STOSB ; Asigna el byte almacenado en Al a la dirección de DI

LEA DI, Variable2 ; Tomar la dirección efectiva de Variable2 en DIMOV CX,4 ; Al contador se le agina un cuatroCLD ; Borrar señalizador de dirección para autoincremento de DI

MOV AX,'E' ; Asigna al registro AX el dato E 45H REP STOSW ; Asigna una palabra almacenado en AX a la dirección de DI

RETDefiniciónDeString ENDP

Codigo ENDSEND DefiniciónDeString

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

68

Page 69: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

PRÁCTICA No. 32NOMBRE: Movimiento de cadenasOBJETIVO: Que el alumno:- Hará uso de las instrucciones que le permitan efectuar movimientos a distintos lugares en la memoria.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: MOVS : Mover una cadena de caracteres. MOVS / MOVSB / MOVSW ( 80286 / 80386) Descripción : Desplaza byte / palabra DS:[SI] o ES:[DI] Desplaza byte / palabra DS:[ESI] o ES:[EDI] Las instrucciones MOV copian el byte o palabra en [SI] al operando destino byte o palabra en ES:[DI]. El operando destino debe ser direcciónable desdel registro ES. Los segmentos anulados no son posibles para el operando destino, pero el operando fuente puede utilizar un segmento anulado. Sintaxis : MOVS CadenaDestino, CadenaFuente

MOVSB MOVSW

Formas de la instrucción MOVSMOVSB [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 número de caracteres donde usted no codifica los operandos, la instrucción 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 dirección, 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 repetición 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 instrucciones para manipulación

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_3a.ASM ; Mover una cadena de caracteres Pila SEGMENT PARA STACK 'STACK'

DB 64 DUP (0)Pila ENDSDatos SEGMENT PARA 'Datos'

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

69

Page 70: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Variable1 DW 5Variable2 DB "Sistemas e Informatica$"Variable3 DB "Departamento$"

Datos ENDSCodigo SEGMENT PARA 'Codigo'

instruccionesParaManipulacion PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX;===========================MOV CX, Variable1 ; Num De byte/palabras LEA DI, Variable2 ; Dirección de Variable2 LEA SI, Variable3 ; Dirección de Variable3 CLD ; borrar dirección REP MOVS Variable2, Variable3;===========================

;Empleo de la instrucción MOVSB LEA DI, Variable2 ; direcciónar Variable2LEA SI, Variable3 ; direcciónar Variable3 CLD ; borrar dirección MOV CX,5 ; cargar contador REP MOVSB ; transferir 5 bytes ;===========================RETinstruccionesParaManipulacion ENDP

Codigo ENDSEND instruccionesParaManipulacion

PRÁCTICA No. 33NOMBRE: Comparación entre cadenasOBJETIVO: Que el alumno:- Hará uso de las instrucciones que le permitirán efectuar comparaciones entre cadenas.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: 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 (direcciónada por DS:SI) con la que otra localidad de memoria (direcciónada por ES:SI) dependiendo de la bandera de dirección, CMPS disminuye también los registros SI y DI en 1 para bytes, 2 para palabras y cuatro para palabras dobles. Proporciona una comparación alfanumérica, una comparación de acuerdo a los valores ASCII. Considere la comparación de dos cadenas que contienen JEAN y JOAN. Una comparación de izquierda a derecha. J : J iguales E : O diferentes

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

70

Page 71: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

A : A iguales N : N iguales Una comparación de los cuatro bytes termina con una comparación de N con N (iguales).

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

3.3 instrucciones para manipulación

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_3b.ASM ; Comparación entre cadenasPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB "INFORMATICA$"Variable2 DB "INFORMATICA$"

Datos ENDSCodigo SEGMENT PARA 'Codigo'

ComparacionEntreCadenas PROC FARASSUME CS:Codigo, DS:Datos, ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX,DatosMOV DS,AXMOV 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

RETComparacionEntreCadenas ENDP

Codigo ENDSEND ComparacionEntreCadenas

PRÁCTICA No. 34NOMBRE: Carga de cadenasOBJETIVO: Que el alumno:- Hará uso de las instrucciones que le permitan tomar la dirección de las cadenas.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

71

Page 72: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: LODS : Carga una cadena de caracteres. Formas de la instrucción LODS.

Simbólica FuncionesLODSB AL = [SI] ; SI = SI ± 1LODSW AX = [SI] ; SI = SI ± 2LODSD EAX=[SI] ;SI=SI ± 4LODS 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 dirección de memoria está sujeta a los registros DS:SI, aunque puede pasar por alto el SI, dependiendo de la bandera de dirección, la operación también incrementa o disminuye el SI en 1 para byte, en 2 para palabra y en 4 para palabra doble. Ya que una operación LODS llena el registro ; no existe razón práctica para utilizar con ella el prefijo REP, para la mayor parte de los propósitos, una sencilla instrucción MOV es adecuada.

SCAS : Rastrear cadenas. SCAS / SCASB / SCASW (80286 / 80386) SCAS : Esta instrucción 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 (direcciónada por ES:DI) con el contenido de registro AL. AX, EAX. Dependiendo de la bandera de dirección, SCAS también incrementa o disminuye el registro DI en 1 para bytes, 2 para palabras y cuatro para palabras dobles. AL final de la ejecución, 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 instrucciones para manipulación

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_3c.ASM ; Carga de cadenasPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB "INFORMÁTICA$"Variable2 DB ?

Datos ENDSCodigo SEGMENT PARA 'Codigo'

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

72

Page 73: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

CargaDeCadenas PROC FARASSUME CS:Codigo, DS:Datos,ES:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX;========================Copiar los caracteres del uno al once de Variable1, desde la posición de MOV CX,11 ;Variable2 mas once, hasta que CX igual a cero (Quedando invertida la cadena)LEA SI, Variable1 ;SI toma la dirección efectiva de donde inicia Variable1 LEA DI, Variable2+11 ;DI toma la dirección efectiva de donde inicia Variable2 más 11 bytesCLD ;Se borra la bandera de dirección

Repite: LODSB ;Carga un byte en AL de la dirección que tiene SIMOV [DI],AL ;El contenido de AL es copiado a la dirección de DIDEC DI ;Decrementa en una unidad la dirección de DILOOP Repite ;Regresa a la etiqueta Repite en tanto CX diferente de cero

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

RETCargaDeCadenas ENDP

Codigo ENDSEND CargaDeCadenas

PRÁCTICA No. 35NOMBRE: Interrupciones de E/S de cadenasOBJETIVO: Que el alumno:- Practicará con las interrupciones y sus funciones, que le permitirán leer o escribir cadenas.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: Existen tres tipos de interrupciones; BIOS “Sistema Básico de Entrada/Salida (Basic Imput Otput System)”, S.O.

“Sistema Operativo, comúnmente llamado DOS por “Sistema Operativo de Disco (Disk Operation System)” y las de Hardware que son las que se provocan entre si los dispositivos electrónicos para llamar la atención entre ellos “Procesador,Memoria,Teclado,...”. En este manual seran usadas solamente las de BIOS y S.O; siendo ambas provocadas por la instrucción INT NúmeroInterupción en donde previamente se le asignó a los registros especificados para esa función, los datos que necesite y a la mitad superior del registro AX la función que debe llevar acabo la interrupción, de existir una subfunción 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

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR3_4.ASM ; Interrupciones para e/s de stringsPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable2 DB "SISTEMAS",0AH,0DH,"$" ;0AH Avance de línea 0DH Retorno de carro

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

73

Page 74: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Variable1 DB "INFORMATICA$" ;”$” Fin de la cadenaDatos ENDSCodigo SEGMENT PARA 'Codigo'

InterrupcionesParaESDeStrings PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

;=========================== Desplegar en pantalla la cadena ubicada en Variable2MOV DX,OFFSET Variable2 ;Tomar en DX el desplazamiento de donde inicia Variable2MOV AH,9 ;La función 9 indica desplegar una cadena, cuya dirección se encuentra en DXINT 21H ;Provocar la interrupción 21H del S.O.

;=========================== Desplegar en pantalla la cadena ubicada en Variable1LEA DX,Variable1 ;Tomar en DX La dirección de donde inicia Variable1MOV AH,9 ;La función 9 indica desplegar una cadena, cuya dirección se encuentra en DXINT 21H ;Provocar la interrupción 21H del S.O.

RETInterrupcionesParaESDeStrings ENDP

Codigo ENDSEND InterrupcionesParaESDeStrings

PRÁCTICA No. 39NOMBRE: Manipulación del teclado con interrupciones de BIOSOBJETIVO: Que el alumno:- Podrá introducir y extraer datos del teclado y el búfer, haciendo uso de interrupciones.- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: La interrupción 16H permite efectuar operaciones básicas con el teclado, proporcionando diferentes funciones especificadas en el octeto de AH.00H Lectura de un carácter de las 83 teclas disponibles; La operación verifica el búfer del teclado en busca de un carácter. Si ninguno está presente, la operación espera a que el usuario presione alguna tecla, si se encuentra alguna, lo regresa en AL y su código de rastreo en AH. Si el carácter pulsado es extendido AL contiene 00.01H Determina si un carácter está presente. Es similar a la anterior, pero con la diferencia de que si un carácter es ingresado en el búfer del teclado, la operación pone a cero la bandera ZF; si no está presente ningún carácter la operación pone a uno la bandera ZF y no espera.02H Regresa el estado actual de la tecla SHIFT. Esta operación 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 búfer del teclado, sin tener que presionar ninguna tecla, hasta que se llene. Cargue el carácter ASCII en CH y el código de rastreo en CL.10H Lectura de un carácter del teclado. La operación es similar a la función 00, pero aceptando caracteres extendidos, como F11, F12...Verifica el estado del búfer del teclado para determinar si se ha ingresado un carácter. Si ninguno está presente, la operación espera que el usuario presione una tecla. Si tiene un carácter lo regresa en AL y su código de rastreo en AH. Si la tecla pulsada es una función extendida, el carácter en AL es 00, para Inicio y F1, F11 Y F12; pero en las teclas duplicadas como Inicio y RePág, regresa E0H.

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

74

Page 75: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

11H Determina si se encuentra un carácter. Es parecida a la función 01H, excepto que reconoce el teclado ampliado.12H Regresa el estado actual del Shift. Es similar a la función , excepto que puede regresar el estado del shift extendido en AL.Teclas de función extendida y código de rastreo. Una tecla de función extendida como F1 o Inicio solicitan una acciòn en lugar de enviar un carácter. . Como programador se puede especificar que presionando la tecla Inicio se coloque el cursor en la esquina superior izquierda

Cada tecla tiene un código de rastreo , empezado con 01 para Esc. Pormedio de èstos códigos un programa puede determinar el origen de cualquier tecleo. Provocando la interrupción 16H con la función 10H y pulsando el carácter, retorna lo siguiente:

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

4.3.2 Interrupciones enternas del BIOS

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR4_3_2b.ASM ; Manipulación 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 cerosPila ENDSDatos SEGMENT PARA 'Datos'

Msg DB "Pulsaste la tecla uno$" ;”$” Fin de la cadenaDatos ENDSCodigo SEGMENT PARA 'Codigo'

ManipulaciónDelTeclado PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AX

MOV AH,10H ; función para leer un carácterINT 16HCMP AL,31H; Compara si el carácter pulsado es un unoJE PRESIONADO ; Si es igual Salta a la etiqueta PRESIONADOJMP FIN

PRESIONADO:LEA DX, MsgMOV AH,9INT 21H ; Desplegar la cadena de shift presionado

FIN: RETManipulaciónDelTeclado ENDP

Codigo ENDSEND ManipulaciónDelTeclado

PRÁCTICA No. 40NOMBRE: Manipulación del puerto paralelo con interrupciones de BIOSOBJETIVO: Que el alumno:

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

Tecla AH ALA 1EH 41H* 09H Arruba 2AH* 29H Tec. Nùm. 29H

Ins 52 Cero o E0 Ampliado

75

Page 76: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

- Podrá introducir y extraer datos del puerto paralelo, haciendo uso de interrupciones .- Aprenda la sintaxis básica 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.

INTRODUCCIÓN: La impresora debe entender la señal enviada desde el procesador, por ejemplo, para saltar una página, avanzar

línea o tabular. El procesador tambièn debe entender las señales enviadas desde la impresora, como si se encuenta encendida, si tiene papel, si esta en línea. Desafortunadamente los diferentes tipos de impresoras envian señales diferentes, lo cual hace que el crear la interfaz entre el programa y el ordenador tenga que ser más versátil.

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

4.3.2 Interrupciones externas del BIOS

;Instituto Tecnológico de Ciudad Victoria;Departamento de Sistemas y Computación;Autor: José Regino Infante Ventura;Fecha de creación: Mayo del 2005;PR4_3_2c.ASM ;Envio de una cadena de caracteres a la impresora, haciendo uso del archivo lógico del S.O. LPT1 con interrupciones de BIOSPila SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ;Reserva 64 bytes en el área de la pila y los inicia con cerosPila ENDSDatos SEGMENT PARA 'Datos'

Variable1 DB "INFORMATICA$" ;”$” Fin de la cadenaDatos ENDSCodigo SEGMENT PARA 'Codigo'

InterrupcionesParaESDeStrings PROC FARASSUME CS:Codigo, DS:Datos, SS:PilaPUSH DS ;Introduce la dirección del segmento de datos del programa que llama a éste en la pilaMOV AX,00PUSH AXMOV AX, DatosMOV DS, AXLEA BX, Variable1

; Rutina para enviar un carácter a la vez al archivo LPT1MOV DX,0 ; LPT1MOV AH,1 ; Función para indicar el inicioINT 17H ; Interrupcion de BIOS para Inicia la impresora

REPITE: MOV AL,Variable1[BX] ; Mover el contenido de la Variable1 en la posición BX a ALCMP AL,’$’ ; Comparar si el contenido de AL es el carácter usado como fin de la cadenaJE FIN ; Si es IGUAL salta a la etiqueta FINMOV AH,0INT 17HINC BXJMP REPITE

FIN: RET ; Fin del procedimeiento principal, regresando el control a quien lo llamòInterrupcionesParaESDeStrings ENDP

Codigo ENDSEND InterrupcionesParaESDeStrings

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

76

Page 77: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

ANEXO No. 1REPORTE DEL ALUMNO

El maestro definirá los lineamientos mínimos de documentación que deberán contener las actividades relacionadas con cada práctica. Se sugieren seleccionar de entre los siguientes aspectos los que se consideren convenientes en función del tamaño y complejidad de la práctica.

1. Portada: Nombre del Instituto y Departamento Académico, número y nombre de la práctica, nombre de la asignatura y maestro que la imparte, nombre del alumno, carrera y número de control, lugar y fecha de entrega.

2. Introducción. Finalidad de la práctica y síntesis del contenido.3. Marco teórico. Definiciones , conceptos,...4. Desarrollo de la práctica. 5. Impresión del código fuente de cada una de los programas que se derivan de las actividades propias de ésta práctica

indicando el nombre y la función general del programa, autor y fecha de elaboración (o última modificación), para cada módulo se explicará brevemente su función específica, los parámetros de entrada y/o valores de salida.

6. Impresión de los resultados arrojados por la ejecución del programa.7. Recomendaciones técnicas: especifica los módulos o archivos que componen el programa, las utilerías requeridas, la

estructura y método de acceso a las tablas o archivos de entrada y/o salida. 8. Conclusiones. Algunas prácticas requieren que el alumno realice investigación de temas, elaboración de tablas,

comparación de resultados, mediciones de tiempos, etc. El alumno escribirá para esos casos las conclusiones a las que llega.

9. Bibliografía. La que el estudiante para planear y elaborar la práctica.10. Anexos. Tablas, formatos, Dibujos, Diagramas, fotografías,...11. Todo los programas compilados y ligados; con los nombres especificados en el manual serán entregados en un disco.

ANEXO No. 2 BIBLIOGRAFÌA

1.- Autor(es)KIP R. IRVINE

TítuloLENGUAJE ENSAMBLADOR PARA COMPUTADORAS BASADAS EN INTEL QUINTA EDICIÓN

EditorialPEARSON Prentice Hall

2.- Autor(es)WILLIAN H. MURRAY III, CHRIS H. PAPPAS

TítuloPROGRAMACIÓN EN LENGUAJE ENSAMBLADOR 80386/80286

EditorialOsborne/McGraw-Hill México

3.- Autor(es)PETER ABEL

TítuloLENGUAJE ENSAMBLADOR Y PROGRAMACIÓN PARA PC IBM YCOMPATIBLES

EditorialPearson Educación, México

4.- Autor(es)PETER NORTONRICHARD WILTON

TítuloTHE NEW PETER NORTON PROGRAMMER´S GUIDE TO THE IBM PC & PS/2

EditorialMicrosoft

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

77

Page 78: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

5.- Ligas de interes:http://www.microsoft.com/en-us/download/details.aspx?id=12654 http://webster.cs.ucr.edu/http://perso.wanadoo.es/pictob/ensamblador.htm http://en.wikibooks.org/wiki/X86_Assembly/NASM_Syntaxhttp://electronicadesarrollo.blogspot.mx/2007/12/programacin-de-pics.html http://es.scribd.com/doc/36775854/7/REGISTROS-INTERNOS-DEL-PROCESADOR

ANEXO No. 3GLOSARIO

BIOS Sistema Básico de Entrada y SalidaDOS Sistema Operativo en DiscoCISC Complex Instructions Set Computer, Ordenador con un conjunto de instrucciones complejoRISC Reduced Instructions Set Computer, Ordenador con un conjunto de instrucciones reducidoALU Unidad Aritmético-LógicaCPU Unidad de proceso centralBIU Basic Interface Unit Unidad de Interfaz BásicaFirmware Programación en Firme, es un bloque de instrucciones de programa para propósitos específicos,

grabado en una memoria tipo ROMROM Read Only Memory Memoria de solo lectura

ANEXO No. 4INTERRUPCIONES

Las interrupciones constituyen quizá el mecanismo más importante para la conexión del microcontrolador con el mundo exterior, sincronizando la ejecución 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 instrucción 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 lógicas son invocadas por el procesador como consecuencia de un resultado inusual del programa, tal como un intento de división por cero. Hardware: Las interrupciones de hardware son invocadas por mecanismos periféricos estos fijan sus respectivas líneas de petición de interrupción (IRQ). Cada vez que una tecla es presionada, por ejemplo, el teclado genera una interrupción. Las interrupciones de hardware son vectoreadas a rutinas de servicio de interrupción (ISRs) estas generalmente residen en el BIOS. Software: Las interrupciones de software son invocadas a través de la instrucción INT del 8086. La mayoría de las interrupciones de software son vectorizadas a (DSRs) localizado en el BIOS, o en programas de aplicación.

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

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

78

Page 79: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

Servicios de la interrupción 0x21 del DOS

Funcióno

ServicioDescripción de la acción

0x00 Termina Programa.

0x01 Entrada de Teclado

0x02 Salida de carácter a video

0x03 Entrada por el dispositivo Aux. estándar

0x04 Salida por el dispositivo Aux. estándar

0x05 Salida a impresora

0x06 Consola E/S

0x07 Entrada de consola sin eco

0x08 Entrada de consola sin eco sin checar ^C

0x09 Imprime cadena

0x0A Lee cadena

0x0B Checa el estado de la entrada

0x0C Limpia el buffer del teclado e invoca el servicio

0x0D Reset del disco

0x0E Selecciona disco

0x0F Abre archivo existente

0x10 Cierra archivo

0x11 Busca el primer archivo con algún atributo en el nombre

0x12 Busca el siguiente archivo con algún atributo en el nombre

0x13 Borra archivos

0x14 Lectura secuencial

0x15 Escritura secuencial

0x16 Crea archivo

0x17 Renombra archivo

0x18 Servicio interno de DOS

0x19 Busca el disco actual

0x1A Habilita una localidad DTA

0x1B Información FAT del disco por omisión

0x1C Información FAT de un disco específico

0x1D - 0x20 Servicio interno de DOS

0x21 Lectura aleatoria

0x22 Escritura aleatoria

0x23 Tamaño de archivo

0x24 Habilita un campo de registro aleatorio

0x25 Habilita nueva dirección en el vector de interrupciones

0x26 Crea un nuevo PSP

0x27 Lectura de bloque aleatoria

0x28 Escritura de bloque aleatoria

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

79

Page 80: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

0x29 Busca el nombre de archivo

0x2A Obtiene la fecha

0x2B Actualiza la fecha

0x2C Obtiene la hora

0x2D Actualiza la hora

0x2E Habilita o inicializa el switch verify

0x2F Obtiene el DTA actual

0x30 Obtiene el número de versión de DOS

0x31 Termina un proceso y lo mantiene residente

0x32 Servicio interno de DOS

0x33 Checa por ^BREAK

0x34 Servicio interno de DOS

0x35 Obtiene una dirección del vector de interrupciones

0x36 Obtiene el espacio libre en disco

0x37 Servicio interno de DOS

0x38 Regresa la información dependiente a un país

0x39 Crea un subdirectorio

0x3A Borra un subdirectorio

0x3B Cambia de directorio actual

0x3C Crea un archivo

0x3D Abre un archivo

0x3E Cierra un manejador de archivo

0x3F Lee de un archivo o dispositivo

0x40 Escribe a un archivo o dispositivo

0x41 Borra un archivo

0x42 Mueve apuntador de lectura / escritura

0x43 Cambia los atributos de un archivo

0x44 Control de E/S

0x45 Duplica un manejador de archivo

0x46 Forza la duplicación de un manejador de archivo

0x47 Obtiene el directorio actual en una unidad de disco específico

0x48 Asigna memoria

0x49 Libera memoria asignada

0x4A Habilita Bloque

0x4B Carga o ejecuta un programa

0x4C Salir (este servicio puede terminar un programa)

0x4D Obtiene el código de regreso de un subproceso

0x4E Encuentra el primer archivo con algún atributo en el nombre

0x4F Encuentra el siguiente archivo con algún atributo en el nombre

0x50 - 0x53 Servicio interno de DOS

0x54 Obtiene estado de verificación

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

80

Page 81: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

0x55 Servicio interno de DOS

0x56 Renombre archivo

0x57 Obtiene o actualiza la fecha y hora de un archivo

0x58 Servicio interno de DOS

0x59 Obtiene error extendido de DOS 3+

0x5A Crea un archivo sencillo DOS 3+

0x5B Crea un nuevo archivo DOS 3+

0x5C Acceso a un archivo DOS 3+

0x5E00 Obtiene el nombre de una máquina DOS 3+

0x5E02 Habilita impresora para DOS 3+

0x5E03 Obtiene impresora para DOS 3+

0x5F03 Redirecciona un servicio de DOS 3+

0x5F04 Cancela la redirección DOS 3+

0x62 Obtiene el segmento de un programa DOS 3+

0x67 Habilita manejador de contador DOS 3.30

0x68 Asigna archivo DOS 3.30

Apéndice II - TABLA DE INTERRUPCIONES DEL SISTEMA

INT 00: División por cero INT 01: Ejecución paso a paso INT 02: No Enmascarable (NMI) INT 03: Puntos de ruptura INT 04: Desbordamiento (INTO) INT 05: Volcar pantalla por impresora (BIOS) INT 06: Código de operación incorrecto INT 07: Reservada INT 08: IRQ 0: Contador de hora del sistema (BIOS) INT 09: IRQ 1: Interrupción de teclado (BIOS) INT 0A: IRQ 2: canal E/S, segundo 8259 del AT INT 0B: IRQ 3: COM2 INT 0C: IRQ 4: COM1 INT 0D: IRQ 5: disco duro XT, LPT2 en AT, retraso vertical PCjr INT 0E: IRQ 6: Controlador del disquete INT 0F: IRQ 7: LPT1 INT 10: Servicios de vídeo (BIOS) INT 11: Listado del equipo (BIOS) INT 12: Tamaño de memoria (BIOS) INT 13: Servicios de disco (BIOS) INT 14: Comunicaciones en serie (BIOS) INT 15: Servicios del sistema (BIOS) INT 16: Servicios de teclado (BIOS) INT 17: Servicios de impresora (BIOS) INT 18: IBM Basic (ROM del BASIC) INT 19: Arranque del sistema (BIOS) INT 1A: Fecha/hora del sistema INT 1B: Acción de CTRL-BREAK (BIOS)

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

81

Page 82: REPORTE DE PRÁCTICAS - .:: Instituto Tecnológico de … de...• DWORD DD 00 00 00 00 Dword (double word, doble palabra) 32 bits. • QWORD DQ 00 00 00 00 00 00 00 00 Qword (quadruple

Página de 82

InstitutoTecnológico No.38

Departamento de Sistemas y ComputaciónIngeniería en Sistemas ComputacionalesLenguajes de Interfaz SCC-1014 2-2-4

INT 1C: Proceso periódico del usuario (Usuario) INT 1D: Parámetros de vídeo (BIOS) INT 1E: Parámetros del disquete (BIOS) INT 1F: Tabla de caracteres gráficos (BIOS) INT 20: Fin de programa (DOS) INT 21: Servicio del sistema operativo (DOS) INT 22: Dirección de terminación (DOS) INT 23: DOS CTRL-BREAK (DOS) INT 24: Manipulador de errores críticos (DOS) INT 25: Lectura absoluta de disco (DOS) INT 26: Escritura absoluta en disco (DOS) INT 27: Terminar permaneciendo residente (DOS) INT 28: DOS Idle (programas residentes que usan funciones DOS) INT 29: DOS TTY (impresión en pantalla) INT 2A: Red local MS net INT 2B-2D: Uso interno del DOS INT 2E: Procesos Batch (DOS) INT 2F: Multiplex (DOS) INT 30: Compatibilidad CP/M-80 (xx:YYyy en JMP XXxx:YYyy) INT 31: Compatibilidad CP/M-80 (XX en JMP XXxx:YYyy) INT 32: Reservada INT 33: Controlador del ratón INT 34-3F: Reservadas INT 40: Interrupción de disquete (BIOS) INT 41: Parámetros del disco duro 1 (BIOS) INT 42: Apunta a la INT 10h original del BIOS si existe VGA INT 43: Caracteres gráficos EGA (BIOS) INT 44-45: Reservadas INT 46: Parámetros del disco duro 2 (BIOS) INT 47-49: Reservadas INT 4A: Alarma del usuario INT 4B-5F: Reservadas INT 60-66: Para uso de los programas INT 67: Interrupción de EMS (controlador EMS) INT 68-6F: Reservadas INT 70: IRQ 8: Reloj de tiempo real AT (2º chip 8259-AT) INT 71: IRQ 9: IRQ 2 redireccionada (2º chip 8259-AT) INT 72: IRQ 10: reservada (2º chip 8259-AT) INT 73: IRQ 11: reservada (2º chip 8259-AT) INT 74: IRQ 12: interrupción de ratón IBM (2º chip 8259-AT) INT 75: IRQ 13: error de coprocesador matemático (2º chip 8259-AT) INT 76: IRQ 14: controlador disco fijo (2º chip 8259-AT) INT 77: IRQ 15: reservada (2º chip 8259-AT) INT 78-7F: Reservadas INT 80-85: Reservadas para el Basic INT 86-F0: Usadas por el Basic INT F1-FF: Para uso de los programas

http://techapple.net/2013/01/tasm-windows-7-windows-8-full-screen-64bit-version-single-installer/http://yasm.tortall.net/http://www.nasm.us/http://mingw-w64.org/doku.php

Cd. Victoria Tamaulipas, México Agosto del 2005 Modificado Agosto 19 2013 José Regino Infante Ventura

82