Vous êtes sur la page 1sur 278

Ingeniera en Sistemas Computacionales

Primera Unidad Lenguaje Ensamblador (SCM-0421)

Ing. Mario Jimnez Vzquez

Programa
1.- Fundamentos
2.- Elementos del Lenguaje

3.- Modularizacin
4.- Programacin Hbrida

1.- Fundamentos
1.1.- Introduccin 1.2.- El Microprocesador 1.3 .-Interrupciones 1.4.- Estructura de un programa en Lenguaje Ensamblador 1.5.- Procedimiento de ensamble, enlace y ejecucin 1.6.- Entorno de programacin

2.- Elementos del lenguaje


2.1.- Instrucciones lineales. 2.2.- Saltos. 2.3.- Tipos de ciclos.

2.4.- Operadores lgicos.


2.5.- Desplazamiento.

2.6.- Procesos de control.

3.- Modularizacin
3.1.- Macros 3.1.1.- Internas 3.1.2.- Externas 3.2.- Procedimientos 3.2.1.- Internos 3.2.2.- Externos

4.- Programacin Hbrida


4.1.- Directivas para compilacin hbrida 4.2.- Funciones en Lenguaje Ensamblador 4.3.- Bloques en Lenguaje Ensamblador 4.4.- Operadores 4.5.- Integrar mdulos de Ensamblador en Lenguajes de Alto Nivel

1.1.- Introduccin
1.1.1.- Uso y aplicaciones del Lenguaje Ensamblador. 1.1.2.- Escalabilidad de los procesadores

1.1.3.- Tipos de Lenguajes Ensambladores


1.1.4.- Clasificacin de memorias

1.1.5.- Unidades de entrada/ salida

Un Lenguaje Ensamblador es aquel en el que cada enunciado produce exactamente una instruccin de mquina. Existe una correspondencia uno a uno entre las instrucciones de mquina y los enunciados del programa en ensamblador.

Lenguaje Ensamblador
44 0012 B9 00 05 45 0015 C6 06 00 43r 08 46 47 001A BA 03 78 48 001D A0 00 43r 49 0020 EE 50 0021 E8 00 1C 51 0024 E8 00 2B 52 0027 D0 0E 00 43r 53 002B 80 3E 00 43r 80 54 0030 75 E8 55 56 0032 E2 E1 mov Cx, 5 ciclo: mov Dato, 08h
atras: mov dx, 378h mov al, Dato out dx, al call Retardo call pantalla Ror Dato,1 cmp Dato,80h jne atras

Loop ciclo

Si cada lnea del programa en Lenguaje Ensamblador contiene exactamente un enunciado y cada palabra de mquina contiene exactamente una instruccin de mquina, entonces un programa en ensamblador de n-lneas producir, a su vez, un programa en lenguaje de mquina de n-palabras.

Programa en Lenguaje de Alto Nivel o Medio Instrucciones

Compilar

Programa en Lenguaje Ensamblador Mnemnicos

Ensamblar

Programa Objeto Binario Multiplataforma

Enlazar

Programa en Lenguaje de Maquina Ejecutable Exadecimal

Leer Decodificar

Microprograma Unidad de Ejecutar Control Microinstruccio nes


Electrnica

La principal razn por la que se utiliza el lenguaje ensamblador, es porque resulta muy complejo programar directamente en lenguaje de mquina, los sistemas que se utilizan para resolver las necesidades computacionales de las empresas. Es ms fcil utilizar nombres y direcciones simblicas que manejar nicamente valores binarios, octales o hexadecimales.

Cuando se usa Ensamblador se puede acceder directamente a todos los recursos de un procesador, mientras que con un lenguaje de nivel medio o alto no es posible hacerlo, ya que el Ensamblador est diseado para hacer uso del conjunto de instrucciones completo de un procesador especfico.

La programacin en Ensamblador es mucho ms difcil que en lenguaje de alto nivel. Escribir un programa en Ensamblador es ms tardado que escribirlo en alto nivel.

Depurar un programa en Ensamblador es ms complejo. Es ms difcil mantener un programa en Ensamblador que en alto nivel.

Programando correctamente un sistema, se puede producir cdigo ms pequeo en lenguaje Ensamblador que en lenguaje de alto nivel. Esto es importante porque en todas las aplicaciones la rapidez de respuesta y el tamao son factores principales.

Como ejemplos se puede mencionar al cdigo de una tarjeta inteligente, el cdigo de un telfono celular, los controladores de dispositivos en un sistema operativo, las rutinas de BIOS y muchos otros. Algunos procedimientos requieren acceso total al hardware, cosa imposible en lenguajes de alto nivel.

Por ejemplo, los manejadores de interrupciones y trampas de bajo nivel de un sistema operativo, adems de los controladores de dispositivos de muchos sistemas incorporados de tiempo real.

Se estima que llevar a cabo la programacin de un sistema en lenguaje ensamblador es por lo menos 5 veces ms tardada que en un lenguaje de alto nivel.

Tambin se estima que el cdigo resultante de la programacin en ensamblador es por lo menos la tercera parte del cdigo obtenido en alto nivel y se ejecuta en la tercera parte del tiempo. Lo anterior implica que cuando se programa en alto nivel el cdigo generado depende del compilador, mientras que cuando se usa ensamblador el cdigo depende del programador.

En consecuencia el cdigo producido por el compilador ocupa un espacio mayor en la memoria y se almacena en archivos ms grandes. Por el contrario, el cdigo producido por el lenguaje ensamblador ocupa poco espacio en memoria y se almacena en archivos pequeos, por lo que ocupan poco espacio en los medios de almacenamiento, como disco duro u otros.

1.1.2.- Escalabilidad de los procesadores

Con frecuencia la arquitectura de una aplicacin se evala en trminos de su rendimiento; la capacidad que tiene para terminar un nmero de operaciones lgicas en un perodo especfico de tiempo. La meta es lograr una arquitectura que garantice que el rendimiento alcanzar un nivel suficientemente alto que permita darle un tiempo de respuesta adecuado a la demanda del usuario.

Una arquitectura escalable es aquella que tiene la capacidad de incrementar el rendimiento sin que tenga que redisearse por obligacin y simplemente se aprovecha de manera adecuada el hardware adicional.

La definicin de escalabilidad ms apropiada en los trminos que usaremos es: Un sistema se dice escalable si es capaz, de incrementar sus recursos y rendimiento a las necesidades solicitadas de manera efectiva o, en el caso de scale down, reducir costos.

Aunque la mayora de las veces se habla de escalar hacia arriba, es decir, hacer el sistema ms grande, no siempre es necesario. Muchas veces interesa hacer el sistema ms pequeo logrando reutilizar los componentes excluidos.

Para que un sistema sea escalable implica:

Funcionalidad y rendimiento.
Si un sistema escala, mejora su rendimiento, de manera que de forma ideal, al aumentar en N el nmero de elementos de proceso del sistema ste debe aumentar en N el rendimiento.

Escalabilidad en costos. De lo anterior se deduce que idealmente el costo de la escalabilidad de 1 a N en un sistema lleve un costo de N por el costo de un procesador. La escalabilidad perfecta es lineal, si una potencia 10 veces superior nos cuesta 15 veces ms, el sistema no est escalando bien.

Compatibilidad de componentes. De manera que la inclusin o exclusin de componentes en el sistema no suponga, por obligacin, la inutilizacin, infrautilizacin o costo adicional en los componentes.

Con todo esto queda patente que tener un alto factor de escalabilidad es un requisito interesante para cualquier sistema.

Procesadores Intel de la dcada de los aos 70


4004 Fecha de introduccin Velocidad de Reloj Ancho de Bus Nmero de Transistores (m) Memoria Direccionable Memoria Virtual 15/11/71 108 KHz 4 Bits 2 300 (10) 640 bytes -------8008 1/4/72 108 KHz 8 Bits 3 500 (10) 16 Kbytes ----------8080 1/4/74 2 MHz 8 Bits 6 000 (6) 64 Kbytes ---------8086 8/6/78 5 MHz 16 Bits 29 000 (3) 1 Mbyte ---------8088 1/6/79 5 MHz 8 Bits 29 000 (3) 1 Mbyte ----------

Procesadores Intel de la dcada de los aos 80s


80286 Fecha de introduccin Velocidad de Reloj Ancho de Bus Nmero de Transistores (m) Memoria Direccionable Memoria Virtual 1/2/82 6 MHz 16 Bits 134 000 (1.5) 16 Mbytes 1 Gbyte 80386DX 17/10/85 16 MHz 32 Bits 275 000 (1) 4 Gbytes 64 Tbytes 80386SX 16/6/88 16 MHz 16 Bits 275 000 (1) 4 Gbyte 64 Tbytes 80486DX 10/4/89 25 MHz 32 Bits 1.2 M (0.8) 4 Gbyte 64 Tbytes

Procesadores Intel de la dcada de los aos 90s


80486SX Fecha de introduccin Velocidad de Reloj Ancho de Bus Nmero de Transistores (m) Memoria Direccionable Memoria Virtual 22/4/91 16 MHz 32 Bits 1.185 M (1) 4 Mbytes 64 Gbyte PENTIUM 22/03/93 60 MHz 32 Bits 3.1 M (0.8) 4 Gbytes 64 Tbytes PENTIUM PRO 1/11/95 150 MHz 32 Bits 5.5 M (0.6) 4 Gbyte 64 Tbytes PENTIUM II 07/05/97 200 MHz 32 Bits 7.5 M (0.8) 4 Gbyte 64 Tbytes

PROCESADORES INTEL ACTUALES


PENTIUM III Fecha de introduccin Velocidad de Reloj Chipset 1999 500 MHz 810, 815 PENTIUM IV 2000 1.5 GHz 915, 925 PENTIUM M 2002 1.6 GHz 855, 915 PENTIUM D 2006 2.8 GHz 945, 955

Nmero de Transistores (m)


Pipeline Memoria Cach

8.2 M
(0.8)

42 M
(0.13) 20 Etapas

77 M
(0.13)

230 M
(0.09) 13 Etapas

512 Kb L2

2 Kb L2

1 Mb L2

2x1 Mb L2

Escalabilidad en el AMD Athlon 64

El ncleo del K8 ha sido concebido desde un principio para su perfecta implementacin en sistemas multiprocesador, tarea que se ve ampliamente beneficiada con la implementacin de la tecnologa Hyper Transport.

Un equipo basado en 8 procesadores Opteron puede tener 64 bancos de memoria directamente conectados (128 GB de RAM) y 4 enlaces Hyper Transport.

Sockets
Uno de los aspectos ms controvertidos en todo a lo que la nueva generacin AMD64 respecta es el tema de los sockets, debido a que desde un principio AMD opt por la convivencia de los sockets 754, 939 y 940. Empezamos con este ltimo, el 940, que fue el primero en aparecer y est dirigido a servidores y estaciones de trabajo:

Como su nombre indica, un socket940 tiene 940 pines. En l se pueden instalar microprocesadores Opteron, dedicados a servidores y estaciones de trabajo (workstation) de sistemas multiprocesador.

Tambin se pueden instalar los Athlon64 FX, la versin ms potente del Athlon64, si bien la tendencia es que en poco tiempo slo se dedique esta plataforma para el Opteron.

Prueba de ello es que el nuevo Athlon64 FX 55 ha salido nicamente para socket 939.

El siguiente socket en aparecer es el socket 754, de 754 pines, destinado a la familia A64 de gama baja, es decir, aqullos Athlon64 que no tienen habilitado el doble canal de memoria y funcionan con memoria DDR sin registrar.

Hasta hace poco tiempo estos microprocesadores eran la nica opcin que un usuario medio poda adquirir, dado el elevadsimo precio de la siguiente familia de microprocesadores Athlon 64: los Athlon64 FX, cuyo precio es muy superior (prcticamente el triple) y desde el principio han estado enfocados a las plataformas socket 939 y 940, sin demasiadas ofertas en cuanto a placas base.

El hecho de que desde un principio estuviese determinado que esta plataforma iba a ser en poco tiempo sustituida por la 939, a la par de las limitaciones que por naturaleza tiene (sin soporte para doble canal de memoria), unido a la no necesidad imperativa del cambio a los 64bits, ha hecho que la presencia de Athlon 64 en los hogares sea ms bien simblica.

La situacin ha venido a ser un tanto comparable a aqul Intel Pentium 4 en socket 423, con la diferencia de que entonces no se saba con tanta certeza la poca duracin que iba a tener en el mercado.

El ltimo en discordia es el socket 939. Es exactamente igual que el 940 a excepcin de que tiene un pin menos, debido a que los microprocesadores que sean insertados en l no requieren memoria ECC (Error-Correcting Code memory) dado que el controlador de memoria est integrado en el propio microprocesador, de manera que es el microprocesador quien requiere un pin menos para trabajar con memoria sin registrar.

la plataforma 939 tiene un futuro ms que prometedor, y es que un usuario tericamente podra comprar hoy un Athlon 64 939 y cambiarlo dentro de un ao y medio por un nuevo microprocesador mucho ms potente y econmico, sin necesidad de tener que sustituir ms hardware que el propio microprocesador

Escalabilidad de los Procesadores

Procesador Pentium III

Parte externa

Parte Interna

Procesador Pentium IV

Parte externa

Parte Interna

1.1.3.- Tipos de Lenguajes Ensambladores

Se pueden distinguir tres tipos de ensambladores: Ensambladores bsicos.

Ensambladores modulares
Ensambladores modulares 32-bits o de alto nivel.

Ensambladores bsicos

Son de muy bajo nivel, y su tarea consiste bsicamente en ofrecer nombres simblicos a las distintas instrucciones, parmetros y cosas como los modos de direccionamiento.
Estos ensambladores reconocen una serie de directivas (o meta instrucciones) que indican ciertos parmetros de funcionamiento del ensamblador.

Ensambladores modulares, o macro ensambladores. Son descendientes de los ensambladores bsicos, fueron muy populares en las dcadas de los 50 y los 60, antes de la generalizacin de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador y proporcionan una serie de directivas para definir e invocar macroinstrucciones (o simplemente, macros).

Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrs para trabajar con programas con estructuras de 16 bits.

Permiten tambin el uso de macros, y pueden utilizar estructuras de programacin ms complejas propias de los lenguajes de alto nivel.

As (Unix) Netwide Assembler (NASM) Flat Assembler (FASM) RosASM High Level Assembler Language (HLA) GNU Assembler (Gas) Microsoft Macro Assembler (MASM) Turbo Assembler (TASM) GoASM A86 y A386 assemblers GNU toolchain MPLAB

El Microsoft Macro Assembler (MASM)

Es un ensamblador para la familia x86 de microprocesadores. Fue producido originalmente por Microsoft para el trabajo de desarrollo en su sistema operativo MSDOS, y era por cierto tiempo el ms popular ensamblador disponible para ese sistema operativo.

El MASM soport una amplia variedad de facilidades para macros y programacin estructurada, incluyendo instrucciones de alto nivel para bucles, llamadas a procedimientos y alternacin (por lo tanto, MASM es un ejemplo de un ensamblador de alto nivel).

Versiones posteriores agregaron la capacidad de producir programas para los sistemas operativos Windows. MASM es una de las pocas herramientas de desarrollo de Microsoft para las cuales no haba versiones separadas de 16 bits y 32 bits.

El Turbo Assembler (TASM), un paquete ensamblador principalmente destinado a la plataforma del IBM PC y sus compatibles. Fue la oferta de Borland en el mercado de herramientas de programacin en lenguaje ensamblador para la familia de los microprocesadores x86.

Como se pudiera esperar, trabajaban bien con los compiladores de lenguaje de alto nivel de Borland para las PCs, como Turbo C y Turbo Pascal. Junto con el resto de lenguajes de programacin Turbo, Turbo Assembler ya no se encuentra en el mercado.

El paquete Turbo Assembler vino junto con el enlazador Turbo Linker, y era interoperable con el depurador Turbo Debugger. Para la compatibilidad con el ensamblador Microsoft Macro Assembler (MASM) de Microsoft, TASM tambin poda ensamblar los archivos de cdigo fuente del MASM por medio de su modo MASM. Al igual que ste, es un ensamblador de alto nivel

El gas, o GNU Assembler, es el ensamblador del proyecto GNU. Es el back-end por defecto del GNU Compiler Collection y es usado para compilar Linux y otros sistemas operativos como el sistema operativo GNU.

Es una parte del paquete GNU Binutils, y se puede acceder a l con el comando as cuando se escribe desde el shell.
Al igual que el resto de aplicaciones GNU, es un software libre, y se lanza bajo la licencia GNU General Public License.

1.1.4.- Clasificacin de memorias

Por su tecnologa de fabricacin SRAM (Static Random Access Memory) DRAM (Dynamic Random Access Memory) SDRAM (Synchronous DRAM) DDR SDRAM (Double Data Rate SDRAM) RIMM RDRAM (Rambus In line Memory Module) FPM (Fats Page Mode) EDO (Extended Data Output) BEDO (Burst EDO) PB SRAM (Pipeline Burst SRAM)

Por su encapsulado:

SIMM (Single In line Memory Module)


DIMM (Dual In line Memory Module) DIP (Dual In line Pin)

Por su uso: Memoria Principal Memoria Cach (RAM de alto desempeo) Tag RAM (RAM de alto desempeo) RAM Disk (Disco en RAM) Memoria Virtual (RAM en disco) Paginada Segmentada Segmentos paginados

1.1.5.- Unidades de entrada / salida

La arquitectura de entrada-salida de una computadora es la interfaz con el exterior . Esta arquitectura se disea de manera que permita una forma sistemtica de controlar las interacciones con el mundo exterior y proporcione al sistema operativo, o programa monitor, la informacin que necesita para gestionar eficazmente la actividad de entrada-salida.

Hay tres tcnicas de control de entrada/salida (E/S) principales:

E/S programada E/S con interrupciones

Acceso Directo a Memoria (DMA)

E/S programada, en la que la E/S se produce bajo el control directo y continuo del programa que solicita la operacin. E/S mediante interrupciones, en la que el programa genera una orden de E/S y despus contina ejecutndose hasta que el hardware de E/S lo interrumpe para indicar que la operacin ha concluido.

Acceso Directo a Memoria (DMA, Direct Memory Access), en el que un procesador de E/S especfico toma el control de la operacin de E/S para transferir un gran bloque de datos.

Dos ejemplos importantes de interfaces de E/S externas son: El SCSI (Small Computer System Interface) y el Firewire. El SCSI es una interfaz paralela para dispositivos externos, mientras que Firewire es una interfaz serie de alta velocidad.

Unidades de entrada-salida

Estndar

Paralelo
Serie

Dispositivos Estndar Teclado Ratn Pantalla Impresora Mdem Red

Puertos Paralelo (estndar)

LPT1
LPT2

Impresora
Puerto Paralelo

Pantalla
Puerto RGB

La interfaz Centronics implementada en el puerto paralelo usa dos conectores, uno tipo-D de 25 terminales ubicado en la parte posterior de la PC y otro tipo-Centronics de 36 terminales ubicado en la impresora.

El puerto paralelo puede trabajar tanto como receptor como transmisor en todos sus bits de datos (D0-D7). Esto permite su uso con dispositivos diferentes a las impresoras, como lectores de disco y protectores de programas, entre otros, que pueden conectarse y trabajar con el puerto paralelo.

Direcciones e Interrupciones de los Puertos Paralelos Estndar

LPT LPT 1 LPT 2

PUERTOS E/S 378H, 379H, 37AH 278H, 279H, 27AH

IRQ IRQ5 IRQ7

Programacin del Puerto Paralelo


Para leer el Puerto Paralelo, primero se debe inicializar enviando el valor 20H al Registro de Control (37AH). MOV AL, 20H MOV DX, 37AH OUT DX, AL

Programacin del Puerto Paralelo


Una vez que est preparado para lectura, el puerto se lee de la siguiente manera: MOV DX, 378H

IN AL, DX

Programacin del Puerto Paralelo


Para escribir en el Puerto Paralelo, primero se debe inicializar enviando el valor 00H al Registro de Control (37AH).
MOV AL, 00H

MOV DX, 37AH


OUT DX, AL

Programacin del Puerto Paralelo


Una vez que el puerto est inicializado, se escribe en l de la siguiente manera: MOV DX, 378H

MOV AL, DATO


OUT DX, AL

Programacin del Puerto Paralelo


Una alternativa para enviar datos utilizando el puerto paralelo, consiste en usar la Interrupcin 21: MOV DL, carcter ASCII MOV AH, 05h INT 21h

1.1.5 Unidades de entrada/ salida


Puertos Serie (estndar)
COM1 COM2

1.1.5 Unidades de entrada/ salida


Puertos Serie (alta velocidad)
USB Firewire

1.1.5 Unidades de entrada/ salida


Puertos Serie (Inalmbricos)
Bluetooth (radiofrecuencia) Infrarrojo (luz infrarroja)

USB (Universal Serial Bus)


Para conectar dispositivos Plug and Play. Ahorra recursos de puertos e IRQs. Se pueden conectar hasta 127 dispositivos a una computadora. Tiene velocidades de transferencia de: 1.5 Mbit/seg (teclado y mouse) 12 Mbit/seg (otros dispositivos)

USB (Universal Serial Bus)


El conector serie A se recomienda para Teclados y Mouses, que normalmente permanecen conectados.
El conector serie B se recomienda para cmaras, scanners, impresoras, modems, telfonos, bocinas, etc., que eventualmente pueden desconectarse sin apagar el equipo.

IEEE-1394 (i-link o FireWire)


Standard 1394 del Institute of Electrical and Electronics Enginneers Dispositivos Plug and Play de audio, video y multimedia. Velocidades de transferencia de 100, 200 y 400 Mbits/seg. Se pueden conectar hasta 63 dispositivos a una tarjeta adaptadora

Usa un cable simple con 6 conductores, que incluye dos pares diferenciales de lneas de reloj y datos, ms dos lneas de alimentacin.

Es posible conectar y desconectar dispositivos sin apagar el equipo. Originalmente la interfaz fue desarrollada por Apple y Texas Instruments.

Accelerated Graphics Port (AGP)


Una de las ltimas adiciones a las computadoras personales lo constituye el Puerto Acelerado de Grficos (AGP).

El AGP opera a la frecuencia de reloj del bus del microprocesador. Est diseado de tal manera que la transferencia entre la tarjeta video y la memoria del sistema se realice a la mxima velocidad.

Accelerated Graphics Port (AGP)


El bus AGP (2X) puede transferir datos a una velocidad de hasta 528 Mbytes por segundo. El bus AGP (4X) podr transferir hasta1 Gbyte por segundo. El bus PCI tiene una velocidad de transferencia mxima de 100 Mbytes por segundo.

1.2.- El microprocesador
1.2.1 Buses
1.2.2 Registros 1.2.3 Modos de direccionamiento

1.2.- El microprocesador
Un procesador se puede caracterizar por:
Su arquitectura Su modelo de programacin Su conjunto de instrucciones Sus modos de direccionamiento Su Lenguaje Ensamblador

1.2.1 Buses

Caracterizacin de un Bus
Arquitectura: Tradicional o Alto Desempeo

Tipo: Dedicado o Multiplexado


Arbitraje: Centralizado o Distribuido

Temporizacin: Sncrono o Asncrono


Uso: Direccin o Datos

Tipo de transferencia:
Lectura Escritura Lectura-Escritura Escritura-Lectura Bloque

1.2.1 Buses
CLK La terminal de reloj proporciona al procesador la seal bsica de temporizacin. La seal debe tener un ciclo activo del 33% para proporcionar la temporizacin interna adecuada. Vcc Proporciona la seal de alimentacin de +5VCD, +/- 10% al procesador.

1.2.1 Buses
NMI.- La Interrupcin no-enmascarable, es parecida a INTR, excepto porque no verifica el bit de bandera IF, al activar NMI, la entrada utiliza el vector de interrupcin 2.

RESET .- La entrada de restauracin ocasiona que el procesador se reinicie si se mantiene en alto por un mnimo de cuatro perodos de reloj. Al activarse el 8086/8088 inician en la memoria FFFF0H e inhabilita interrupciones futuras restaurando el bit IF.

1.2.1 Buses
INTR.- Solicitud de interrupcin, se utiliza para solicitar una interrupcin por hardware. Si INTR se mantiene en alto cuando IF=1, el procesador entra en un ciclo de reconocimiento de interrupcin (INTA se activa), despus de ejecutar la instruccin actual.

1.2.1 Buses
RD Seal de lectura, cuando est en cero el bus de datos est preparado para recibir datos desde la memoria o desde un puerto de e/s.
READY Se utiliza para insertar estados de espera en la temporizacin del procesador. Si est en cero, el procesador inserta un estado de espera y permanece inactivo.

1.2.2.- Registros

1.2.2 Registros La arquitectura de un procesador est definida por los elementos que lo integran, sus caractersticas, las operaciones que se realizan entre ellos, y cmo se realizan.

1.2.2 Registros
El Modelo de Programacin de un procesador est formado por los registros internos, a los que se puede acceder utilizando el conjunto de instrucciones.

AH AH AH AH

AX BX CX DX

AL BL CL DL

Accumulator Base Counter Data Stack pointer Base pointer Source index Destination

SP BP SI DI

CS DS SS ES

Code Segment Data Segment Stack Segment Extra Segment Pointer Instruction

IP
OF DF IF TF SF ZF AF PF

CF

Flags

Descripcin de los registros


AX (Acumulador).- Se utiliza para almacemiento de datos en general y algunas instrucciones especficas como: multiplicacin, divisin, operaciones de I/O y manejo de cadenas.
BX (Base).- Se utiliza para contener valores de direcciones cuando se accede a la memoria. Cuando se utilizan rutinas de interrupcin, este registro debe contener un valor que se usa para seleccin de opciones.

Descripcin de los registros


CX (Contador).- Durante la ejecucin de un ciclo, este registro contiene el valor del ndice de conteo. DX (Datos).- Utilizado para almacenamiento general y tambin en operaciones de multiplicacin y divisin.

SP (Apuntador del stack).- Contiene valores de desplazamiento para el stack.

Descripcin de los registros


BP (Apuntador base).- Es similar al SP. Algunas instrucciones hacen uso de l para guardar el valor de un desplazamiento. SI (ndice fuente).- Para ciertas instrucciones contiene la direccin fuente. DI (ndice destino).- Se complementa con SI, contiene la direccin destino para algunas instrucciones.

Descripcin de los registros


CS (Segmento de cdigo).- Apunta al inicio del segmento donde se encuentra situado el programa en ejecucin.
DS (Segmento de datos).- Seala el inicio del segmento de datos.

SS (Segmento del Stack).- Seala el inicio del segmento del stack.

Descripcin de los registros


ES (Segmento extra).- Seala el inicio del segmento extra.

IP (Apuntador de instrucciones).- Apunta a la localidad de memoria donde se encuentra la prxima instruccin a ser ejecutada.
CF (Acarreo).- Contiene el acarreo resultante de una operacin aritmtica.

PF (Paridad).- Indica paridad par o impar, resultante de una operacin en los 8-bits de datos de menor orden. AF (Acarreo auxiliar).- Contiene un acarreo externo del bit 3 en un dato de 8-bits, para aritmtica especializada.

ZF (Cero).- Indica el resultado de una operacin aritmtica o de comparacin. Si el resultado es cero ZF = 1.

SF (Signo).- Contiene el signo resultante de una operacin aritmtica (0-positivo, 1-negativo). TF (Trampa).- Permite la operacin paso a paso del procesador. Se ejecuta una instruccin y se detiene para examinar sus efectos sobre los registros y la memoria. IF (Interrupcin).- Habilita e inhabilita la atencin a interrupciones.

DF (Direccin).- Designa la direccin, a la izquierda o a la derecha, para mover o comparar cadenas de caracteres. OF (Desbordamiento).- Indice desbordamiento del bit ms significativo, despus de una operacin aritmtica.

AX BX CX DX BP SI DI SP

AH BH CH DH

AL BL CL DL

Acumulator Base Count Data Pointer Base Index Source Index Destination Stack Pointer Flags Instructor Pointer Status Machine Register

REGISTROS DEL MICROPROCESADOR 80286

F IP MSW Segment CS DS ES SS

Code Segment Data Segment Extra Segment Stack Segment

Selectors TR LDTR

EAX EBX ECX EDX ESP EBP ESI EDI

AH BH CH DH SP

AL BL CL DL

Register Purpose General

BP
SI DI

CS DS ES SS FS GS

Segment Register

EIP EFLAGS

IP FLAGS

Pointer Instruction Flags registers

The internal structure of the 80386 microprocessor ilustrating the general, segment and flags registers.

1.2.3.- Modos de Direccionamiento

1.2.3 Modos de Direccionamiento


Los Modos de Direccionamiento son las diferentes maneras en que el CPU puede acceder a los datos, tomando en consideracin que stos pueden encontrarse en: * CPU,

* Memoria,
* Puertos de entrada y salida.

Direccionamiento de datos
Registro Inmediato Directo Indirecto a registro Base ms ndice Relativo a registro Relativo a base ms ndice

Register addressing. Se usa para transferir un byte o una palabra desde el registro fuente hasta el registro destino. Ejemplo: MOV AX,CX

Copiar el contenido del registro CX dentro del registro AX.

Direccionamiento Inmediato
Immediate Addressing.- Se usa para transferir el byte o word inmediato al registro destino. Ejemplo: MOV AX,1234H
Copia 1234H dentro del registro AX.

Direccionamiento Directo
Direct Addressing.- Transfiere un byte o word entre la memoria y un registro. Ladireccin de memoria del dato se almacena con la instruccin.
Ejemplo: MOV AX,DATO Toma el contenido de 16-bits de la direccin de memoria DATO y los mueve al registro AX.

Indirecto de Registro
Register Indirect.- Transfiere un byte o word entre un registro y la localidad de memoria direccionada por otro registro
Ejemplo: MOV AX,[BX] Mueve los 16-bits contenidos en la localidad de memoria direccionada por el registro BX dentro del registro AX.

Direccionamiento Base ms ndice


Base-plus-index.- Se usa para transferir un byte o word entre un registro y la localidad de memoria indicada por la suma de un registro base y un registro ndice.
Ejemplo: MOV AX,[BX+SI] Mueve los 16-bits contenidos en la direccin apuntada por la suma de BX+SI y los lleva dentro del registro AX.

Direccionamiento Relativo a Registro


Register Relative.- Transfiere un byte o word entre un registro y la localidad de memoria direccionada por un registro y un desplazamiento.
Ejemplo:

MOV AX,[BX+4] MOV AX,ARRAY[SI]

Relativo a la Base ms ndice


Base relative-plus-index.- Se usa para transferir un byte o word entre un registro y la localidad de memoria direccionada por un registro base y un registro ndice ms un desplazamiento.
Ejemplo:

MOV AX,ARRAY[BX+DI]
MOV AX,[BX+DI+4]

1.3.- Interrupciones

1.3.1.- Hardware
1.3.2.- Software

1.3.- Interrupciones
Una computadora no es de utilidad si no cuenta con dispositivos que puedan comunicarse con el mundo exterior.

Para ello deber contar con dispositivos para introducir datos al sistema que puedan ser almacenados en la memoria y procesados por el CPU.

Igualmente, se deben recuperar los resultados del procesamiento a travs de dispositivos de salida.
Desde el punto de vista de la Arquitectura de Computadoras, los puertos de entrada-salida y las interrupciones constituyen un sistema de comunicacin con el exterior.

Aunque la revisin peridica de los puertos de entrada-salida es simple, puede resultar ineficiente. Las Interrupciones representan una manera muy eficiente para atender dispositivos asncronos. El perifrico atrae la atencin del procesador a travs de una interrupcin, ste concluye la instruccin actual y ejecuta una rutina de interrupcin, para continuar con la tarea anterior posteriormente.

1.3.1.- Interrupciones por hardware

1.3.1 Interrupciones por hardware


Generalmente se utilizan para atender a dispositivos perifricos asncronos que, por su velocidad de operacin, no requieren de la atencin peridica del procesador.

Las interrupciones pueden utilizar las lneas NMI (interrupcin no-enmascarable) e INTR (interrupt request).

La interrupcin se atiende a travs de un vector de interrupcin. Para administrar las interrupciones se utiliza un controlador de interrupciones dedicado.

La familia de procesadores de Intel cuenta con dos terminales de entrada para interrupciones (NMI e INTR) y una terminal de salida (INTA) que reconoce la interrupcin de INTR, dos banderas de interrupcin (IF y TF), adems de una instruccin de retorno de interrupcin (IRET).

1.3.2 Interrupciones por Software

1.3.2.- Interrupciones por Software


Para generar interrupciones bajo control del programa se utilizan las instrucciones INT n, INTO e IRET. Para habilitar e inhabilitar las interrupciones se utilizan STI y CLI, respectivamente.

Es comn utilizar algunas funciones especializadas del BIOS y del DOS llamndolas como interrupciones, esto evita el tener que escribir una gran cantidad de cdigo, facilitando el uso de los recursos de la computadora personal.

INT 10H. Interrupcin de los servicios de video controla el video en un sistema. INT 11H. Se utiliza para determinar el tipo de dispositivos instalados en un sistema. INT 12H. Determina el tamao de la memoria instalada en el sistema. INT 13H. Controla los discos flexibles y rgidos de la computadora.

INT 14H. Controla los puertos de comunicaciones serie (COM1, COM2, ...) INT 15H. Controla varios dispositivos del sistema, como cassette, joystick, watchdog y permite acceder al modo protegido. INT 16H. Controla el teclado de la computadora.

INT 17H. Controla el puerto paralelo de la impresora (LPT). INT 33H. Esta funcin proporciona un control completo de las acciones del mouse. INT 21H. Con esta interrupcin del DOS pueden realizarse una gran cantidad de funciones, incluyendo manejo de dispositivos como teclado, pantalla, puertos, manejo de archivos, hora y fecha del sistema, entre otros. Esta interrupcin utiliza rutinas del BIOS.

1.4 Estructura de un programa en Lenguaje Ensamblador


1.4.1 Data Segment 1.4.2 Stack Segment 1.4.3 Code Segment 1.4.4 Instrucciones del programa 1.4.5 Directivas

Existen normas para escribir un programa en lenguaje ensamblador. La primera se refiere a la estructura del programa, despus cada lnea sigue un formato, finalmente se deben respetar las instrucciones y los modos de direccionamiento; la sintaxis y la ortografa son muy estrictas.

La estructura de los programas en Lenguaje Ensamblador de la familia x86 est basada en el uso de segmentos de: Cdigo, Datos, Pila y Extra. De esta manera la memoria se divide en segmentos de longitud fija, 64K en el modelo original.

Por esta razn, las primeras acciones que se realizan en un programa escrito en lenguaje ensamblador consisten en declarar el modelo de memoria y los segmentos que se van a utilizar para manipular los datos almacenados en la memoria.

1.4.1 Data Segment


El Segmento de Datos es un rea reservada para guardar datos, cuya direccin de inicio est dada por DS. El segmento de datos se declara al principio del programa y sus caractersticas estn definidas en el modelo de memoria utilizado. El segmento de datos puede almacenar datos numricos y alfanumricos. Los datos se definen dentro del segmento de datos, puede definirse su tipo y su tamao.

1.4.2 Stack Segment


El Segmento de Pila es un rea reservada de la memoria, cuya direccin de inicio est dada por SS. El segmento de Pila se declara al principio del programa y se puede definir su tamao o utilizar uno por omisin.

El segmento de pila puede almacenar datos, contenidos de registros y banderas, es un segmento tipo LIFO. Para acceder a la pila se utilizan las instrucciones PUSH y POP, la posicin superior de la pila est apuntada por SP.

1.4.3 Code Segment


El Segmento de Cdigo es un rea reservada de la memoria, cuya direccin de inicio est dada por CS.

El segmento de Cdigo se declara al principio del programa y se puede definir su tamao o utilizar uno por omisin.
El segmento de Cdigo contiene el cdigo del programa ejecutable.

Componentes de un programa en Lenguaje Ensamblador


Comentarios

Palabras Reservadas
Identificadores Instrucciones Directivas

Comentarios en Lenguaje Ensamblador


El uso de comentarios mejora la claridad de un programa.

Un comentario empieza con (;) y todos los caracteres a la derecha no generan cdigo de mquina.
Un comentario puede ocupar una lnea completa o aparecer a continuacin de una instruccin o directiva.

Ejemplos de Comentarios
;Toda la lnea es un ejemplo de comentario ADD AX,BX ;Comentario en una instruccin .DATA ;Comentario en una directiva

Palabras Reservadas en Lenguaje Ensamblador


Instrucciones: MOV, ADD, etc.
Directivas: END, SEGMENT, etc. Operadores: FAR, SIZE, etc.

Smbolos predefinidos: @Data, @Model

Identificadores
Un identificador es un nombre que se aplica a elementos en un programa. Los dos tipos de identificadores son:
nombre, que se refiere a la direccin de un elemento de dato y etiqueta, que se refiere a la direccin de una instruccin.

Caracteres de un Identificador
Letras del alfabeto: Dgitos: A-Z 0 al 9

Caracteres especiales:

interrogacin (?) subrayado ( _ ) signo de pesos($) arroba (@) punto (.)

Reglas de los Identificadores


Un identificador inicia con letra o carcter especial, menos el punto.

Se recomienda que los nombres de identificadores sean descriptivos y significativos. Todos los identificadores deben definirse en algn lugar del programa.

Ejemplos de Identificadores
COUNT PAGE45 _DATONUEVO $F100

1.4.4 Instrucciones

1.4.4.- Instrucciones
Son acciones a realizar, identificadas por Nemnicos como MOV y ADD, que el ensamblador traduce a cdigo objeto y que corresponden una a una a instrucciones en Lenguaje de Mquina.

1.4.4.- MOV
Nemnico: MOV destino, fuente Funcin: Destino = fuente Banderas: Ninguna Descripcin: MOV transfiere un byte o una palabra desde el operando fuente hasta el operando destino. Ejemplos: * MOV AX,BX * MOV CL,AL * MOV BX,300 * MOV BH,25

1.4.4.- ADD
Nemnico: ADD destino, fuente Funcin: destino=destino+fuente Banderas: AF,CF,OF,PF,SF,ZF Descripcin: La suma de los dos operandos, los cuales pueden ser bytes o words, remplaza al operando destino.

Ejemplos:

* ADD DX,CX * ADD AX,400 * ADD label, BL

1.4.4.- CLC
Nemnico: CLC (Sin operandos) Funcin: CF = 0 Banderas: CF Descripcin: CLC pone en cero a la bandera de carry (CF) sin afectar otras banderas.

1.4.4 CMP
Nemnico: CMP destino, fuente Funcin: destino fuente Banderas: AF,CF,OF,PF,SF,ZF Descripcin: CMP sustrae la fuente del destino, los cuales pueden ser bytes o words, pero no devuelve el resultado, ni los operandos cambian. Slo se actualizan las banderas y pueden utilizarse con instrucciones subsecuentes de salto condicional.

Ejemplos: * CMP DX,CX

* CMP AX, BX
* CMP AL,25

* CMP BH,Label

1.4.5.-Directivas

1.4.5 Directivas
Son enunciados que permiten controlar la manera en que un programa se ensambla y lista.

Actan slo durante el ensamblado de un programa y no generan cdigo ejecutable de mquina.

1.4.5 Directivas
PAGE y TITLE SEGMENT y ENDS PROC y ENDP ASSUME END DB, DW EQU

Se coloca al inicio del programa, establece el nmero mximo de lneas (10-255) para listar en una pgina y el nmero mximo de caracteres (60-132) en una lnea. Formato: PAGE [longitud] [, ancho]

Ejemplo: PAGE 60,132


Por omisin se toma: PAGE 50,80

1.4.5 Directivas SEGMENT y ENDS


Un programa ensamblado en formato .EXE consiste en uno o ms segmentos. Las directivas para definir un segmento tienen el formato:
NOMBRE OPERANCIN OPERANDO COMENTARIO

Nombre Nombre

SEGMENT Ends

[OPCIONES] ;Inicia Segmento Fin de Segmento

1.4.5 Directiva SEGMENT


El operando de una directiva SEGMENT puede tener tres tipos de opciones:

Alineacin Combinar Clase


F O R M A T O

Nombre

SEGMENT

combinar

combinar

clase

1.4.5 Tipo Alineacin


Indica el lmite en el que inicia el segmento.
PARA alinea el segmento con el lmite de un prrafo, de manera que la direccin inicial es divisible entre 16.

Por omisin el ensamblador toma PARA.

1.4.5 Tipo Combinar


Indica si se combina el segmento con otros segmentos cuando se enlazan despus de ensamblar. Los tipos combinar son:

STACK COMMON PUBLIC AT

1.4.5 Tipo Clase


La entrada clase, encerrada entre apstrofos, se utiliza para agrupar segmentos cuando se enlazan. Microsoft recomienda utilizar las clases: code para el segmento de cdigos, data para el segmento de datos y stack para el segmento de pila.

Ejemplos: STACKSG SEGMENT PARA STACK Stack STACKSG ENDS

DATASG SEGMENT PARA Data DATASG ENDS

1.4.5 Directivas PROC y ENDP


El segmento de cdigo contiene el cdigo ejecutable de un programa. Tambin tiene uno o ms procedimientos, definidos con la directiva PROC.

La directiva ENDP indica el fin de un procedimiento. Los procedimientos deben quedar totalmente contenidos dentro de un segmento.

Ejemplo con PROC y ENDP


NOMBRE Nomsegmto Nomproc .. .. Nomproc nomsegmto OPERACIN SEGMENT PROC .. .. ENDP ENDS OPERANDO PARA FAR COMENTARIO ;procedimiento dentro del segmento de cdigo.

1.4.5 Directiva ASSUME


Se utiliza para indicar al ensamblador el propsito de cada segmento en el programa. SS para direccionar la pila. DS para direccionar el segmento de datos. CS para direccionar el segmento de cdigo.

Ejemplos con ASSUME:

OPERACIN ASSUME

OPERANDO SS:Nompila, DS:nomsegdatos, CS:nomsegcdigo

1.4.5.- Directiva END


La directiva END finaliza todo el programa.
En la mayora de los programas, el operando contiene el nombre del primero o nico PROC designado como FAR, donde inicia la ejecucin del programa.

1.5 Procedimientos de ensamble, enlace y ejecucin


1.5.1 Captura y edicin
1.5.2 Ensamble

1.5.3 Enlace
1.5.4 Ejecucin

1.5.5 Depuracin

1.5.1 Captura y Edicin

1.5.1 Captura y Edicin


Los archivos fuente de cdigo ensamblador deben estar en formato ASCII estndar. Para esto puede usarse cualquier editor que permita crear archivos sin formato adicional, como Edito Wordpad.

1.5.1 Captura y Edicin


Las declaraciones pueden ser introducidas en maysculas y/o minsculas. Una buena prctica de programacin es poner todas las palabras reservadas (directivas e instrucciones) en maysculas y todo lo del usuario en minsculas para fines de facilidad de lectura del cdigo.

Las sentencias pueden comenzar en cualquier columna, no pueden tener ms de 128 caracteres, no se permiten lneas mltiples ni cdigos de control, y cada lnea debe ser terminada con una combinacin de line-feed y carriage-return. Los comentarios se declaran con ; y terminan al final de la lnea.

1.5.2 Procedimiento de Ensamble

1.5.2 Procedimiento de Ensamble


El ensamblador (Assembler) convierte un archivo fuente simblico en un archivo objeto hexadecimal. El archivo fuente debe tener una extensin ASM para que pueda ser reconocido por el ensamblador.

1.5.2 Procedimiento de Ensamble


Una de las tareas del ensamblador es calcular el desplazamiento de cada elemento en el segmento de datos y de cada instruccin en el segmento de cdigo.

El ensamblador tambin crea un encabezado al frente del mdulo .OBJ generado, parte del encabezado tiene informacin acerca de direcciones incompletas.
El mdulo .OBJ an no est en forma ejecutable.

1.5.3 Procedimiento de Enlace

1.5.3 Procedimiento de Enlace


El programa enlazador (linker) lee los archivos objeto (extensin OBJ), creados por el ensamblador, los enlaza con el conjunto de instrucciones del procesador, y genera un archivo ejecutable de salida (extensin EXE).

Una de las tareas del enlazador es combinar los programas ensamblados en forma separada en un solo programa ejecutable.

1.5.4 Procedimiento de Ejecucin

Si un archivo tiene menos de 64K de longitud, se puede convertir de archivo ejecutable en archivo de comandos (extensin .COM). Este archivo se origina en la localidad 100H y tiene la ventaja de que requiere poco espacio en disco y en memoria, adems de que se ejecuta rpidamente.

El Sistema Operativo ofrece soporte a dos tipos de programas ejecutables: .COM y .EXE. Un programa .COM consta de un solo segmento que contiene cdigo, datos y pila.

Un programa .EXE consta de segmentos de cdigo, programa y pila separados.

Cuando se llama un programa desde el disco para su ejecucin, el cargador del sistema operativo realiza las siguientes acciones: Accede al programa .EXE en eldisco. Construye un prefijo de segmento de programa (PSP) de 256 bytes (100H) en un lmite de prrafo en la memoria interna disponible.

Almacena el programa en memoria inmediatamente despus del PSP. Carga la direccin del PSP en los registros DS y ES. Carga la direccin del segmento de cdigo en el CS y establece el IP al desplazamiento de la primera instruccin (generalmente cero) en el segmento de cdigo.

Carga la direccin de la pila en el SS y establece el SP al tamao de la pila. Transfiere el control al programa para ejecucin, iniciando con la primera instruccin del segmento de cdigo.

En esta forma, el cargador del DOS inicializa los registros CS:IP y SS:SP Aunque se debe observar que el cargador almacena la direccin del PSP tanto en el registro DS como en el ES, aunque normalmente se requiere la direccin del segmento de datos en estos registros.

Como consecuencia, los programas tienen que inicializar el DS con la direccin del segmento de datos.

1.5.5 Procedimiento de Depuracin

Una de las teoras en computacin dice que el programa que funciona bien desde la primera vez seguramente tiene errores.

El nmero de errores posibles en un programa es proporcional al nmero de lneas e inversamente proporcional a la experiencia del programador.

El dominio de la arquitectura del sistema as como del ensamblador facilitan la escritura de programas sin errores.

La prctica de la programacin en ensamblador tambin ayuda a escribir programas libres de errores.

El propio ensamblador ayuda a encontrar errores ortogrficos o de sintaxis durante el proceso de ensamble.
El enlazador tambin participa en la localizacin de errores en tiempo de ejecucin.

An con esa ayuda, es posible que en el momento de ejecutar un programa surjan problemas de diseo que lleven a resultados errneos.

Por todo lo anterior se recomienda desarrollar un programa paso a paso evitando pensar y teclear inmediatamente.

Se recomienda plantear el problema a resolver y las acciones a realizar. Elaborar un algoritmo que establezca los pasos a seguir.

Codificar el programa utilizando correctamente la arquitectura del sistema, el conjunto de instrucciones, los modos de direccionamiento y el lenguaje ensamblador.

Elaborar un diagrama de flujo que defina claramente todas las rutas de ejecucin del programa, los procesos, entradas y salidas. Definir las variables, incluyendo los tipos y tamaos.

Realizar una prueba de escritorio para evaluar todos los pasos anteriores, antes de capturar el programa. Capturar el programa utilizando el programa codificado ya corregido, si tiene muchas lneas es conveniente que alguien ms lo revise.

Si a pesar de todo lo anterior surgen problemas durante la ejecucin, lo cual es altamente probable, se recomienda utilizar el Turbo Debugger, herramienta de depuracin que facilita la prueba de programas as como la correccin de errores al permitir la ejecucin paso a paso de los programas.

Adems de que permite visualizar el estado de los registros del CPU, las banderas, as como el contenido de los segmentos en memoria.

1.6 Entorno de programacin


1.6.1 Wordpad y Edit

1.6.2 Turbo Assembler


1.6.3 Turbo Linker

1.6.4 Turbo Debugger

1.6.1 Wordpad y Edit

1.6.1 Wordpad y Edit


Wordpad es un editor de texto de Windows que facilita la captura y edicin de archivos de texto sin caracteres de control ocultos, por lo que se puede utilizar para capturar programas que se utilicen en el entorno del ensamblador.

Al guardar los archivos que se utilicen con TASM o MASM se debe tener cuidado en salvarlos como archivos de texto con formato para MS-DOS, de otra manera el ensamblador enviar mensajes de error al encontrar caracteres desconocidos.

Tambin es posible utilizar Notepad, sin embargo slo es til para capturar programas de tamao reducido por lo que no se recomienda para programas extensos.

Edit es un editor de texto del MS-DOS que resulta muy adecuado para trabajar con programas en ensamblador, debido a que su entorno de trabajo es el mismo que el del Turbo Assembler, por lo que es muy simple la captura y edicin programas en ensamblador. Este editor puede llamarse desde el entorno del MS-DOS.

1.6.2 Turbo Assembler

El Turbo Assembler (TASM), es un paquete ensamblador principalmente destinado a la plataforma del IBM PC y sus compatibles. Fue la oferta de Borland en el mercado de herramientas de programacin en lenguaje ensamblador para la familia de los microprocesadores x86.

Como se pudiera esperar, trabaja bien con los compiladores de lenguaje de alto nivel de Borland para los PCs, como Turbo C y Turbo Pascal.

Junto con el resto de paquetes de lenguajes de programacin Turbo, Turbo Assembler ya no es mantenido por Borland.

El ensamblado se lleva a cabo invocando al TASM. Este puede ser llamado, usando una lnea de comando, de la siguiente manera: TASM nombre_archivo.asm [opciones] donde: nombre_archivo- Corresponde al programa fuente opciones- modo en que realizar el ensamble

opciones.- Pueden ser: /a.- ordena los segmentos en orden alfabtico /s.-ordena los segmentos en orden del fuente /c.-genera un archivo de referencias cruzadas /iPATH.-busca PATH para archivos incluidos /l.-genera un listado de ensamble /la.-genera un listado expandido de ensamble /z.-despliega lnea fuente con mensaje de error. /zi, /zd, /zn.- Debug info: zi= completa, zd= nmeros lnea, zn= ninguna

1.6.3 Turbo Linker

El paquete Turbo Assembler incluye el enlazador Turbo Linker, y es interoperable con el de-purador Turbo Debugger.

Para la compatibilidad con el ensamblador Microsoft Macro Assembler (MASM) de Microsoft, TASM tambin ensambla los archivos de cdigo fuente del MASM por medio de su modo MASM.

Formato del comando:

TLINK archivo_objeto [opciones]


donde: archivo_objeto- nombre del archivo objeto opciones- modo en el que se enlaza

Opciones: /x.- sin mapa /m.- mapa incluyendo nombres pblicos /s.- mapa ms mapa detallado de segmentos /l.- mapa ms nmeros de lnea fuente /i.- inicializa todos los segmentos /L.- especifica rutas de bsqueda de libreras /v.- informacin simblica de debug completa

1.6.4 Turbo Debugger

Turbo Debugger es un conjunto de herramientas diseadas para ayudar a depurar programas desarrollados con la lnea de compiladores y ensambladores de Borland.

Turbo Debugger ayuda a depurar programas escritos para Win16, Win32 y DOS.

Al cargar el programa en Turbo Debugger se puede controlar la ejecucin del programa y visualizar diferentes aspectos de la ejecucin del programa.

Al monitorear las salidas del programa, cdigo fuente, estructuras de datos y valores del programa, es posible localizar an los errores ms difciles.

Dentro de las caractersticas de Turbo Debugger se encuentran las siguientes: Evaluacin completa de expresiones en ensamblador, C, C++ y Pascal.

Control total de la ejecucin del programa, incluyendo animaciones. Acceso de bajo nivel a los registros del CPU y la memoria del sistema.

Capacidad de inspeccin de datos completa.

Facilidades para el manejo de ejecucin paso a paso de los programas, incluyendo puntos de ruptura (breakpoints).
Soporte total de programacin orientada a objetos.

Formato del comando:

TD archivo_executable
donde: archivo_ejecutable- nombre del archivo enlazado

Vous aimerez peut-être aussi