Ritmo-lenguaje: contribución al aprendizaje de la correcta ...
lenguaje de interfaz
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