lenguaje de interfaz

36
Laboratorio de Estructura de Computadores Tema 7: Formato de instrucciones Directivas y programas complejos Formato de instrucciones: Ejemplos de instrucciones Formato de instrucciones en µP 80x86/88 Directivas De definición de símbolos De definición de datos De definición de segmentos De definición de procedimientos De referencias externas De definición de macros De definición de bloques De control del ensamblador Instrucciones de manejo de cadenas Ensamblado de programas complejos

Transcript of lenguaje de interfaz

Laboratorio de Estructura de Computadores

Tema 7:Formato de instruccionesDirectivas y programas complejos

Formato de instrucciones:Ejemplos de instruccionesFormato de instrucciones en µP 80x86/88

Directivas

De definición de símbolos

De definición de datos

De definición de segmentos

De definición de procedimientos

De referencias externas

De definición de macros

De definición de bloques

De control del ensamblador

Instrucciones de manejo de cadenas

Ensamblado de programas complejos

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá2

Bibliografía básica

8088-8086/8087 programación ensamblador en entorno MS-DOSMiguel Angel Roselló.Ed. Anaya Multimedia

Microprocesadores: el 8088 / 86Fernando Remiro DomínguezAgustín Martín GarcíaEd. Akal-Bibiloteca tecnológica

Lenguajes ensambladores R. Martínez Tomás. Ed. Paraninfo

Lenguaje ensamblador de los 80x86Jon Beltrán de HerediaEditorial Anaya-Multimedia. 1996

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá3

Formato de las instrucciones (I)

Es la representación en binario de cada una de las instrucciones

Cada instrucción “contiene” explicitamente o implicitamente toda la información que necesita para ejecutarse:

Código de operación, indica a la UC el tipo de operación, aritmética, lógica, de transferencia, salto, etc.El valor o la posición donde se hallan los operandosEl lugar donde se tiene que depositar el resultadoDirección de la siguiente instrucción a ejecutar

Cod. operación Operandos Resultado Dir. sig. instrucc.

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá4

Formato de instrucciones (II)

Características generales:Las instrucciones se "encajan" en alguno de los formatos disponiblesLos formatos son sistemáticos (campos de longitud y posición fijas)El primero de los campos es el código de operaciónSiempre que se pueda, se supone información implícita para acortar:

Siguiente instrucción en la siguiente posición de memoria, salvobifurcacionesEn vez de usar la operación pura se asignan diferentes códigos de operación para diferentes modos de direccionamientoLa ubicación del resultado coincide con el operando destino

Según esto, un formato típico cuenta con esta información:

Cod. operación Operandos

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá5

Formato de instrucciones (III)Ejemplos de instrucciones

Z80

80x86/8088

Tipo deinstrucción

L. Máquina L. Ensamblador Operación

323353 LD (5333), A M(5333) ATransferenciaTransfiere el contenido del registro A a laposición de memoria 5333 h

- - -MultiplicaciónNo existe equivalente

Tipo deinstrucción

L. Máquina L. Ensamblador Operación

A33353 MOV [5333], AX M(5333) AXTransferenciaTransfiere el contenido del registro AX (acumulador)a la posición de memoria 5333 h

F7E3 MUL BX DX,AX AX x BXMultiplicaciónMultiplica el contenido de los registros AX y BX, ydeja el resultado en AX y DX (32 bits)

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá6

Formato de instrucciones (IV)Formato de instrucciones µP 80x86/8088 (I)

Cuenta con dos formatos:

Formato general: Formato especial:

Desplazamiento o dato inmediato

Especifica un operando como registro

Especifica el otro operando comoregistro o memoria

Determina el tamaño de los operandosDetermina el operando fuente y destino

Código deoperación

Mod Reg R/M

Byte 2

Código DW

Byte 1 Byte 3 Byte 4

Desplazamiento o dato inmediato

Campo de extensión

Código deoperación

Byte 2

Código

Byte 1 Byte 3 Byte 4 Byte 5 Byte 6

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá7

Formato de instrucciones (V)Formato de instrucciones µP 80x86/8088 (II)

Formato general:El primer byte contiene:

Código de operaciónEl bit de dirección de registro (D):

Si D = 1 tengo que REG = operando destinoSi D = 0 tengo que REG = operando fuente

El bit de tamaño del dato (W): especifica si la operación será realizada sobre datos de media palabra o de una palabra:

Si W = 0 los datos son de 8 bits (ó 16 bits)Si W = 1 los datos son de 16 bits (ó 32 bits)

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá8

Formato de instrucciones (VI)Formato de instrucciones µP 80x86/8088 (III)

El segundo byte contiene los operandos (uno de ellos es un registro):REG se usa para identificar un registro:

MOD indica el modo de direccionamiento según:

REG W=0 W=1000 AL AX001 CL CX010 DL DX011 BL BX100 AH SP101 CH BP110 DH SI111 BH DI

MOD Función:00011011

Modo memoria sin desplazamientoModo memoria con desplazamiento de media palabraModo memoria con desplazamiento de una palabraModo registro

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá9

Formato de instrucciones (VII)Formato de instrucciones µP 80x86/8088 (IV)

Donde D8 es un desplazamiento de tamaño media palabra (8 ó 16 bits) y D16 es un desplazamiento de tamaño palabra (16 bits ó 32 bits)

MOD = 11 CALCULO DE LA DIRECCION EFECTIVAR/M W=0 W=1 R/M MOD = 00 MOD = 01 MOD = 10000001010011100101110111

ALCLDLBLAHCHDHBH

AXCXDXBXSPBPSIDI

000001010011100101110111

[BX]+[SI][BX]+[DI][BP]+[SI][BP]+[DI]

[SI][DI]

direccion directa[BX]

[BX]+[SI]+D8[BX]+[DI]+D8[BP]+[SI]+D8[BP]+[DI]+D8

[SI]+D8[DI]+D8[BP]+D8[BX]+D8

[BX]+[SI]+D16[BX]+[DI]+D16[BP]+[SI]+D16[BP]+[DI]+D16

[SI]+D16[DI]+D16[BP]+D16[BX]+D16

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá10

Formato de instrucciones (VIII)Ejemplos de formatos µP 80x86/8088

Supongamos que se dispone de las siguientes variables, definidas en el segmento de datos:

Cadena DB 0, 0, 0, 0Dato DW 0

Nota: Cadena empieza en la posición de memoria 0h del DS y Dato en la posición 4h

Se desea saber cuál es el código en lenguaje máquina de las siguientes instrucciones del 80x86/88:MOV AL, BL

Byte1: C.O.: 1000 10 - D: 1 - W: 0Byte2: MOD:11 - REG:000 - R/M:011Código en hexadecimal: 8AC3 h

MOV Dato, BXByte1: C.O.: 1000 10 - D: 0 - W: 1Byte2: MOD:00 - REG:011 - R/M:110Código en hexadecimal: 891E 0400h

MOV BX, DatoByte1: C.O.: 1000 10 - D: 1 - W: 1Byte2: MOD:00 - REG:011 - R/M:110Código en hexadecimal: 8B1E 0400h

100010 1 0 11 000 011 Cod.Op. D W Mod Reg R/M

100010 0 1 00 011 110

Cod.Op. D W Mod Reg R/M

00000100 00000000

Dir.DatoB Dir.DatoA

100010 1 1 00 011 110

Cod.Op. D W Mod Reg R/M

00000100 00000000

Dir.DatoB Dir.DatoA

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá11

Formato de instrucciones (IX)Ejemplos de formatos µP 80x86/8088

MOV CL, Cadena[SI]Byte1: C.O.: 1000 10 - D: 1 - W: 0Byte2: MOD:10 - REG:001 - R/M:100Código hexadecimal: 8A8C 0000h

100010 1 0 10 001 100

Cod.Op. D W Mod Reg R/M

00000000 00000000

D.CadenaBD.CadenaA

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá12

Las directivas

También llamadas pseudo-instrucciones o pseudo-operacionesNo son como las sentencias “ejecutables” de los lenguajes de alto nivel, sino que sirven para reservar espacio de almacenamiento, asignar nombres a constantes, formar estructuras de datos, etc.No son órdenes destinadas al microprocesador, sino al programa ensamblador.Se pueden dividir en cuatro grupos funcionales:

Directivas de datosDirectivas condicionalesDirectivas de listadoDirectivas de macros

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá13

Directivas de datos

Definición de símbolosEQU (EQUIVALENT)

Formato: nombre EQU expresiónDescripción: asigna un nombre simbólico al valor de una expresión. El “nombre” no puede redefinirse a lo largo del programa.Ejemplo: columnas EQU 80

=Formato: nombre = expresiónDescripción: asigna un nombre simbólico al valor de una expresión. El “nombre” puede redefinirse a lo largo del módulo fuente. Útil en macros.Ejemplos: valor = 10

valor = valor + 1

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá14

Directivas de datos (II)Definición de datos

DB (DEFINE BYTE)Formato: [nombre_variable] DB expresiónDescripción: reserva memoria para una variable de tipo byte (8 bits) y los posteriores. “nombre_variable” es opcional y es el nombre asignado al primer byte.Operandos: “expresión” es el valor inicial de la variable y puede ser:

Una constante positiva o negativa o expresión de ellas (-128 ≤ expresión ≤ 127 con signo).Un signo “?” que indica indefinición de valor.Una cadena de caracteres delimitada por comillas simples o dobles.n1 DUP (n2) que indica repetición n1 veces de la expresión n2.

Ejemplos: valores DB 30, -15, 20DB 12*3

cadena DB “Hola mundo”

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá15

Directivas de datos (III)Definición de datos

DD (DEFINE DOUBLE)Formato: [nombre_variable] DD expresiónDescripción: reserva memoria para una variable de tipo doble palabra (32 bits) y los posteriores. “nombre_variable” es opcional y es el nombre asignado a la primera doble palabra.Operandos: “expresión” es el valor inicial de la variable y puede ser:

Una constante positiva o negativa o expresión de ellas.Un signo “?” que indica indefinición de valor.Una dirección completa de memoria (segmento y desplazamiento).n1 DUP (n2) que indica repetición n1 veces de la expresión n2.

Ejemplos: valores DD 300, -150, 2000DD 120*3

direc DD tabla ; donde tabla equivale a su dirección;completa (segmento:desplazamiento)

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá16

Directivas de datos (IV)

Definición de datosDQ (DEFINE QUADWORD)

Formato: [nombre_variable] DQ expresiónDescripción: reserva memoria para una variable de tipo cuádruple palabra (64 bits) y los posteriores. “nombre_variable” es opcional y es el nombre asignado a la primera cuádruple palabra.Operandos: “expresión” es el valor inicial de la variable y puede ser:

Una constante positiva o negativa o expresión de ellas .Un signo “?” que indica indefinición de valor.n1 DUP (n2) que indica repetición n1 veces de la expresión n2.

Ejemplos: valores DQ 300, -150, 2000DQ 120*3

datos DQ 4 DUP (0) ; Equivale a DQ 0, 0, 0 , 0

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá17

Directivas de datos (V)Definición de datos

DT (DEFINE TENBYTE)Formato: [nombre_variable] DT expresiónDescripción: reserva diez bytes de memoria para almacenar dígitos decimales empaquetados (dos dígitos por byte). El primer byte se reserva para el signo y los otros 9 para almacenar 18 dígitos decimales. El signo se almacena como00h (si positivo) o 80h (si negativo). “nombre_variable” es opcional y es el nombre asignado al primer byte.Operandos: “expresión” es el valor inicial de la variable y puede ser:

Una constante positiva o negativa o expresión de ellas .Un signo “?” que indica indefinición de valor.n1 DUP (n2) que indica repetición n1 veces de la expresión n2.

Ejemplos: valores DT 0123456789 negat DT -0123456789

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá18

Directivas de datos (VI)

Definición de datosDW (DEFINE WORD)

Formato: [nombre_variable] DW expresiónDescripción: reserva memoria para una variable de tipo palabra (16 bits) inicializando o no esa palabra y las posteriores. “nombre_variable” es opcional y es el nombre asignado a la primera palabra.Operandos: “expresión” es el valor inicial de la variable y puede ser:

Una constante positiva o negativa o expresión de ellas.Un signo “?” que indica indefinición de valor.El desplazamiento de una variablen1 DUP (n2) que indica repetición n1 veces de la expresión n2.

Ejemplos: valores DW 300, -150, 2000DW 120*3

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá19

Directivas de datos (VII)

Referencias externas PUBLIC

Formato: PUBLIC símboloDescripción: permite que los símbolos especificados sean accesibles por otrosmódulos durante un enlazado conjunto (LINK). El módulo que quiere invocar al símbolo debe contener la sentencia EXTRN.Ejemplo: PUBLIC dato

dato DB 23hEXTRN

Formato: EXTRN símbolo: tipoDescripción: identifica a los símbolos que fueron definidos (y declaradosPUBLIC) en otro módulo.Ejemplo: EXTRN dato:byte

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá20

Directivas de datos (VIII)

Definición de segmentos y procedimientosSEGMENT

Formato: nombre SEGMENT [alineamiento] [combinación ] Descripción: indica el comienzo del segmento “nombre”. El final del segmentose indica mediante la directiva ENDS. El nombre de ambas directivas debe ser el mismo.Alineamiento (opcional)

BYTEWORDPARAPAGE

Ejemplo: datos SEGMENTdatos ENDS

Combinación (opcional)PUBLICCOMMONATSTACKMEMORY

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá21

Directivas de datos (IX)

Definición de segmentos y procedimientosENDS (END SEGMENT)

Formato: nombre_segmento ENDSDescripción: indica el final del segmento “nombre_segmento” o bien indica el final de la estructura “nombre_estructura”.Operandos: nombre_segmento es obligatorio

ASSUMEFormato: ASSUME registro_segmento:nombre_segmento Descripción: indica al ensamblador el registro de segmento que va a utilizar para direccionar cada segmento dentro del módulo.Operandos: “registro_segmento”: DS, CS, SS o ES

“nombre_segmento”: generalmente el nombre asignadomediante la directiva SEGMENT.

Ejemplo: ASSUME CS:codigo

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá22

Directivas de datos (X)

Definición de segmentos y procedimientosPROC (PROCEDURE)

Formato: nombre_procedimiento PROC [atributo]Descripción: indica el comienzo del procedimiento “nombre_procedimiento”. Los procedimientos deben finalizar con la directiva ENDPOperandos: atributo = NEAR o FAR (si no se pone nada se supone NEAR)Ejemplo: rutina PROC

rutina ENDPENDP (END PROCEDURE)

Formato: nombre_procedimiento ENDPDescripción: indica el final de un procedimientoOperandos: nombre_procedimiento es obligatorio

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá23

Directivas de datos (XI)

Definición de macrosMACRO

Formato: nombre_macro MACRO lista de parámetrosDescripción: especifica el nombre y los parámetros de la macro. Los parámetrosse separan por comas. El final de la macro se especifica mediante la directivaENDM.Ejemplo: sumar MACRO operando1, operando2, resultado

cuerpo de la macroENDM

ENDM (END MACRO)Formato: ENDMDescripción: indica el final de una macro

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá24

Directivas de datos (XII)

Definición de macrosLOCAL

Formato: LOCAL etiquetaDescripción: indica al ensamblador las etiquetas que debe cambiar cada vez que se expande la macro. Con ello se evita las definiciones múltiples de estas etiquetas. LOCAL sólo puede usarse dentro de la definición de una macro.Ejemplo: retardo MACRO numero

local seguirmov cx, numero

seguir: loop seguirENDM

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá25

Directivas de datos (XIII)

Definición de bloquesSTRUC (STRUCTURE)

Formato: nombre_estructura STRUCDescripción: define una plantilla de campos a nivel de bytes. Es una forma de definir nuevos tipos de datos. La definición de una estructura comienza con la directiva STRUC y acaba con ENDS. En la definición de la estructura no se reserva memoria. La forma de acceder a cada campo de la estrutura es: nombre_estructura.campoOperandos:las directivas estándar de definición de datos son: DB, DW, DD, DQ y DT.Ejemplo: parametros STRUC

p1 dw ?p2 db ?parametros ENDS

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá26

Directivas de datos (XIV)

Control del ensamblador END

Formato: END [expresión]Descripción: indica el final del programa fuente. El operando “expresión” indicala dirección de comienzo del programa fuente. En el caso de varios módulos fuentes que se enlazan juntos para formar un solo programa ejecutable, sólo el módulo principal puede especificar expresión.Ejemplo: END inicio

.RADIXFormato: .RADIX expresiónDescripción: sirve para cambiar la base de numeración por defecto. Por defecto, los números sin sufijo se considera que están en base 10. Expresión está siempre en base 10.Ejemplo: .RADIX 16 ; base 16 (hexadecimal) por defecto

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá27

Directivas condicionales

Sirven para que el ensamblador incluya o ignore porciones de programa fuente según una condición en tiempo de ensamblaje.IFxxx [condición]...ELSE...ENDIFPuede incluirse o no la sentencia ELSEEjemplo:

PRUEBA = 0IF PRUEBA EQ 0... ; Instrucciones que sólo se utilizan en pruebas...ENDIF

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá28

Directivas de listado

Indican al ensamblador la información a obtener en el listado de salida y el formatode esa información. Se clasifican a su vez en:De formato del listado:

PAGE, TITLE, SUBTTLDe listado de macros:

.LALL: lista macros y expansiones

.SALL: suprime listado de macros y expansionesComentarios:

COMMENTMensajes:

%OUT: emite un mensaje por pantalla durante el ensamblado

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá29

Instrucciones de manejo de cadenas

Nombre: MOVS/MOVSB/MOVSW (MOV BYTE/WORD STRING)Formato: MOVS destino, fuente

MOVSB/MOSWDescripción: Transfiere el byte o la palabra apuntada por DS:SI al byte o palabra apuntada por ES:DI. Después de la transferencia, SI y DI se incrementan o decrementan, según el valor del indicador DF (DF=0 incremento; DF=1 decremento), el número de bytes transferidos. El prefijo REP sirve para repetir la operación.Operandos:

destino, fuente se emplean como referencia, pues por defecto MOVS emplea ES:DI como destino y DS:SI como fuente.

Restricciones: ningunaEjemplos: movsb

movs tabla1, tabla2

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá30

Instrucciones de manejo de cadenas (II)

Nombre: REP/REPZ/REPE/REPNZ/REPNE (REPEAT)Formato: REP/REPZ/REPE/REPNZ/REPNE instrucción de cadenaDescripción: Prefijo que impone la repetición de una instrucción de cadena mientras que el contenido del contador CX, disminuido en cada pasada, no llegue a cero. Esta repetición puede ser incondicional (REP) o condicional (REPZ/REPE o REPNZ/REPNE).Operandos: no tieneRestricciones: solo aplicable a instrucciones de cadenaEjemplos: rep movsb ; rep como prefijo

rep ;primero repmovs ; y luego instrucción de cadena

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá31

Instrucciones de manejo de cadenas (III)

Nombre: CMPS/CMPSB/CMPSW (COMPARE BYTE/WORD)Formato: CMPS destino, fuente

CMPSB/CMPSWDescripción: Comparación de bytes o palabras de cadenas. Actúan como CMP pero con cadenas apuntadas por DS:SI para la fuente y ES:DI para el destino. Después de la comparación, SI y DI son incrementados (DF=0) o decrementados(DF=1). Puede ir precedida por REP.Operandos:

destino, fuente se emplean como referencia, pues por defecto CMPS emplea ES:DI como destino y DS:SI como fuente.

Restricciones: ningunaEjemplos: cmps cadena1, cadena2

cmpsbcmpsw

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá32

Instrucciones de manejo de cadenas (IV)

Nombre: SCAS/SCASB/SCASW (SCAN BYTE/WORD)Formato: SCAS destino

SCASB/SCASWDescripción: análisis de un byte o de una palabra de una cadena. Ejecuta la substracción AL-destino para un byte, o AX-destino para una palabra. No almacenael resultado, pero posiciona los flags. Esto permite comparar los bytes o palabras sucesivas de una cadena. Puede ir precedida de REP para la repetición. ES:DI apunta a la cadena destino.Operandos:

destino se emplean como referencia, pues por defecto SCAS emplea ES:DI como destino.

Restricciones: ningunaEjemplos: scas cadena

sacsb

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá33

Instrucciones de manejo de cadenas (V)Nombre: LODS/LODSB/LODSW (LOAD BYTE/WORD TO AL/AX) Formato: LODS fuente

LODSB/LODSWDescripción: carga de un byte o de una palabra de una cadena. Transfiere un byte o una palabra de una cadena apuntada por DS:SI al acumulador AL o AX. Después incrementa o disminuye SI, según el estado del indicador DF, en 1 (byte) o en 2 (palabra). Para la repetición puede ir precedida por REP.Operandos:

fuente se emplean como referencia, pues por defecto LODS emplea DS:SI como destino.

Restricciones: ningunaEjemplos: lods cadena

lodsb

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá34

Instrucciones de manejo de cadenas (VI)Nombre: STOS/STOSB/STOSW (STORE BYTE/WORD FROM AL/AX) Formato: STOS destino

STOSB/STOSWDescripción: almacenamiento de un byte o de una palabra en una cadena. Transfiere un byte (AL) o una palabra (AX) a una cadena apuntada por ES:DI. Después de la ejecución se incrementa o disminuye DI, según el estado del indicador DF, en 1 (byte) o en 2 (palabra). Para la repetición puede ir precedida porREP.Operandos:

destino se emplean como referencia, pues por defecto STOS emplea ES:DI como destino.

Restricciones: ningunaEjemplos: stos cadena

stosw

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá35

Ensamblado de programas complejos (I)

Para enlazar programas formados por diferentes módulos fuente, se deben emplear las directivas EXTRN y PUBLIC en los módulos para las etiquetas compartidasUna vez creados los módulos objetos la sintaxis del link será:

LINK [opciones] módulos_objeto, [ejecutable];

dosseg.model small.stack 100h.data def inición de datos.code mov ax, @data mov ds, ax código del programa mov ah, 4Ch int 21hend

dosseg.model small.stack 100h.data definición de datos.code mov ax, @data mov ds, ax código del programa mov ah, 4Ch int 21hend

Fichero1.asm

Fichero2.asm

masm Fichero1.asm;

masm Fichero2.asm;

link Fichero1.obj Fichero2.obj, TodoFichero2.obj

Fichero1.obj

Todo.exe

Tema 7: Formato de instruccionesDirectivas y programas complejos

Laboratorio de Estructura de Computadores

Área de Arquitectura y Tecnología de ComputadoresDepartamento de Automática

Universidad de Alcalá36

Programa 2Extrn variable: bytePublic texto2Dosseg.model small.stack 100h.datatexto2db ‘Has pulsado$’

.codeLeer proc

mov ax, @datamov ds, axmov ah, 1int 21hmov variable, al

Programa 1 (continuación)

int 21hcall leerlea dx, texto2,mov ah, 9int 21hMov dl, variableMov ah, 2Int 21ih

End inicio

Programa 1Extrn texto2: byteExtrn leer: farPublic variableDosseg.model small.stack 100h.datatexto db ‘Pulsa tecla$’variable db ?

.codeinicio: mov ax, @datamov ds, axlea dx, textomov ah, 9

Ensamblado de programas complejos (II)Ejemplo

Programa 2 (continuación)

retLeer endpEnd

Para ensamblar el programaMasm prg1;Masm prg2Link prg1 prg2, todo