¿Dónde está el error en el ensamblador?
nombre de archivo de lista (es decir, .LST), el ensamblador también mostrará un mensaje de error
debajo del archivo de lista para que el operador pueda encontrar inmediatamente el error y Dar correcto
. El formato del mensaje de error MASM5.0 es el siguiente:
Línea del archivo del programa fuente: ADVERTENCIA/ERROR Código del mensaje de error: Mensaje de descripción del error
Entre ellos, el código de descripción del error consiste de cinco caracteres, el primero es la letra A
, que indica un error del programa en lenguaje ensamblador, luego hay un número, especificando el tipo de error
Específicamente: '2' indica un; error grave, '4' indica una advertencia de error grave, '5' indica una advertencia recomendada y los últimos tres dígitos son el número de error.
Número de error
Descripción del error
Error de anidamiento del bloque
Error de anidamiento. Los procedimientos almacenados anidados, secciones de programas, estructuras, macros o bloques repetidos no pueden finalizar normalmente
. Por ejemplo, si una declaración anidada tiene una declaración de terminación externa pero ninguna
declaración de terminación interna
1
caracteres adicionales en la línea
Caracteres adicionales en la línea
Caracteres adicionales en la declaración, posiblemente porque se dieron demasiados argumentos en la declaración
2
Error interno: regístrese ya Definición
Este es un error interno. Si se produce este error, tenga en cuenta la entrada en la que se produjo el error
y póngase en contacto con Microsoft mediante el formulario de solicitud de ayuda del producto
3
Especificador de tipo desconocido p>
Especificador de tipo desconocido. Por ejemplo, escriba mal los caracteres tipográficos, escriba BYTE como
BIT, escriba NEAR como NAER, etc.
4
Redefinición de símbolos
Redefinición de símbolos. El mismo identificador se define en dos lugares. En el primer
escaneo del ensamblaje, la segunda posición de la definición del identificador dio un error
Error
5
Los símbolos son multidefinido
Los símbolos están multidefinidos. El mismo identificador se define en dos lugares. Este error ocurre cada vez que se encuentra un identificador en el segundo escaneo del ensamblaje
6
Error de etapa entre escaneos
Error de fase entre escaneos. Este error ocurre si el identificador obtiene una dirección diferente en el segundo escaneo
. Si utiliza la opción /D al iniciar MASM,
se generará el primer archivo de lista escaneado, lo que puede ayudarle a encontrar este error
7
Ya Hay una cláusula ELSE
Ya existe una declaración ELSE. Hay más de una declaración ELSE en el bloque condicional
8
Debe estar en el bloque condicional
No en el bloque condicional. Generalmente hay una declaración ENDIF o ELSE, pero no una declaración IF
9
El símbolo no está definido
El símbolo no está definido
El símbolo no está definido, se hace referencia a un identificador no definido en el programa
10
Error de sintaxis
Error de sintaxis. Declaración no reconocida por el ensamblador
11
Tipo ilegal en contexto
Especifica un tipo ilegal. Por ejemplo, especifique BYTE para un procedimiento almacenado en lugar de
NEAR o FAR
12
Los nombres de los grupos deben ser únicos
Nombres de los grupos debe ser único. Los símbolos utilizados como nombres de grupo se utilizarán como otros símbolos
13
Deben declararse al pasar 1
Deben definirse en el primer escaneo. Este error ocurre si se hace referencia al símbolo
en el primer escaneo antes de definirlo.
14
Declaración pública ilegal
Se especifica ilegalmente un identificador como tipo PUBLIC
15
Símbolo Ya no es un tipo
Redefine un símbolo para que se convierta en otro tipo. símbolo. Por ejemplo, redefina el nombre del segmento
como un nombre de variable
16
Las palabras reservadas se utilizan como símbolos
Se utilizan palabras reservadas en lenguaje ensamblador Como identificador
17
Referencia directa ilegal
Referencia directa ilegal. Durante el primer escaneo, se hizo referencia a un símbolo indefinido
.
18
El operando debe ser un registro
La ubicación del operando debe ser un registro, pero existe un identificador
19
Error de tipo de registro
Error de registro
20
El operando debe ser un segmento o grupo
A nombre del segmento o grupo. Por ejemplo, la declaración ASSUME debe especificar el segmento o nombre de grupo de un registro de segmento
en lugar de otra etiqueta o nombre de variable
etc.
21
El símbolo no tiene segmento
El atributo de segmento del identificador es desconocido
22
El El operando debe ser un especificador de tipo.
El operando debe proporcionar una especificación de tipo, como NEAR, FAR, BYTE, etc.
23
El símbolo ya está definido localmente
El símbolo ya está definido localmente
Se intentó definir un identificador externo en una declaración EXTRN
El símbolo se ha definido localmente. p>
Identificador de pieza
24
Parámetro de segmentación cambiado
Parámetro de segmentación cambiado. Como si el mismo identificador estuviera definido en diferentes segmentos
25
Alineación/tipo de fusión incorrecto
Uso de tipo local/de fusión en la definición del segmento Se produjo un error
26
Hacer referencia a múltiples símbolos definidos
Instrucción que hace referencia a múltiples símbolos definidos
27
Número de acción esperada p>
Requiere un operando, solo operandos
28
Operandos esperados
Requiere un operando, pero solo operandos
29
Dividir entre 0 o desbordamiento
Dividir entre 0 o desbordamiento
30
Recuento de desplazamiento negativo
Negativo valor de expresión de desplazamiento del operando SHL o SHR
31
El tipo de operando debe coincidir
El tipo de operando no debe coincidir. Los dos operandos de la instrucción de doble operando tienen diferentes longitudes
Uno es un byte y el otro es una palabra
32
Uso ilegal de externo p>
Error de uso de símbolo externo
33
Debe ser un nombre de campo de registro
Debe ser un nombre de campo de registro. Otro símbolo en la posición de un nombre de campo de registro
34
Debe ser un nombre de registro o un nombre de campo
Debe ser un nombre de registro o un campo de registro nombre. Otro símbolo en la posición de un nombre de registro o nombre de campo
35
El operando debe tener tamaño
Especifica la longitud del operando (por ejemplo, BYTE, WORD , etc.). Esto generalmente se puede corregir usando la operación PTR
36
Debe ser una variable, etiqueta o constante
La posición del nombre de la variable, etiqueta o constante debe ser reemplazado por otra cosa Reemplazo
37
Debe ser un nombre de campo de estructura
Debe ser un nombre de campo de estructura. Otro símbolo
Símbolo
38
El operando izquierdo debe ser información del segmento
El lado izquierdo del operando debe ser información del segmento. Si DA1 y DA2 son nombres de variables,
La siguiente afirmación es incorrecta: "MOV AX,DA1:DA2".
Se debe utilizar la ubicación DA1
Nombre del registro del segmento
39
Un operando debe ser una constante
Un operando debe ser una constante .
40
Los operandos deben estar en el mismo segmento de programa o una constante
El operador "-" se utiliza incorrectamente. Por ejemplo, "MOV AL,-VAR", donde VAR es el nombre de la variable
, se debe incluir una constante en la operación. Otro ejemplo es restar dos nombres de variables con segmentos diferentes
Error
41
Se esperaba usar operandos de tipo normal
Requiere el uso de operandos normales.
42
Constante esperada
Requiere una constante.
43
El operando debe tener un segmento
Error de uso del operador SEG.
44
Debe estar asociado a datos
Hay un segmento asociado a código donde debe estar asociado a datos
45
Debe estar asociado con código
Existe una sección asociada con datos donde debe estar asociado con código
Existe donde debe estar asociado con código La sección asociada con el código
no tiene constantes. Segmento de datos
46
Múltiples registros base
Utilice múltiples registros de direcciones base al mismo tiempo. Por ejemplo, "MOV AX,[SI][BP]"
47
Múltiples registros de índice
Utilice múltiples registros de direcciones al mismo tiempo. Por ejemplo, "MOV AX ,[SI][DI]"
48
debe ser un registro de índice o un registro de dirección base
Esta instrucción solo requiere el uso del registro de direcciones base o cambiar el registro de direcciones sin requerir el uso de
otros registros.
49
Uso ilegal del registro
Error
50
Valor fuera de rango
El valor es demasiado grande y excede el valor permitido. Por ejemplo, "MOV AL ,100H"
51
El operando no está en el segmento de código CS ASSUME actual
El operando no está en el código actual segmento. Normalmente, esto significa que la dirección de destino de la instrucción de transferencia no está en el segmento de código CS actual
52
Tipo de operador incorrecto
Tipo de operador incorrecto. Por ejemplo "mov var1,var2". Ambos operandos
son operandos de memoria y no se pueden ensamblar
53
%ld bytes fuera de rango
. p>El rango de salto de la instrucción de transferencia condicional excede -128~127 bytes. Fábrica de errores, mensaje
El mensaje también indica el número de bytes excedidos
54
El desplazamiento del índice debe ser constante
Dirección variable El desplazamiento del índice direccionado debe ser constante
55
Valor de registro ilegal
Valor de registro ilegal. El código objeto expresa un valor de registro mayor que 7
56
Modo Inmediato Ilegal
No se permite el direccionamiento inmediato. Por ejemplo, "MOV DS, CODE", donde CODE es el nombre del segmento
, no se puede pasar al registro de segmento DS como un valor inmediato
57
Tamaño inmediato del operando
Tamaño inmediato del operando
El modo inmediato es ilegal
El modo intermedio es ilegal
El modo intermedio es ilegal
Modo intermedio ilegal
El modo intermedio es ilegal
El modo intermedio es ilegal
El modo intermedio es ilegal
Intermedio el modo es ilegal
No permitido Utilice una dirección intermedia. Ejemplo: uso de memoria de palabras dobles
Operador
58
Registro de bytes ilegal
Las instrucciones que requieren registros de palabras usan registros de bytes.
Por ejemplo, PUSH,POP significa
El registro de operando debe ser un registro de palabra
59
Uso ilegal del registro CS
El instrucción incorrecta Se utiliza el registro de segmento CS: "MOV CS,AX" CS no se puede utilizar como
operando de destino
60
Debe ser un registro de bytes.
Debe ser un registro acumulador
Requiere otro registro en AX o AL. Por ejemplo, "SHL
DS,1"
62
CS faltante o inalcanzable
Intentando saltar a la ejecución CS marca inalcanzable . Generalmente se refiere a una instrucción
ASSUME faltante en la que CS está asociado con un segmento de código
63
Combinación de operandos ilegal
En un double En la instrucción de operando, la combinación de los dos operandos es incorrecta
. La combinación de operandos de los dos operandos en la instrucción es incorrecta
64
Cierre JMP/CALL a un CS diferente
Intente usar la instrucción de transferencia de atributo NEAR para saltar a una dirección que no está en el segmento de código actual
Dirección
65
La etiqueta no puede tener una anulación de segmento
Segmento error de prefijo
66
Debe haber instrucciones después del prefijo. Debe haber instrucciones después del prefijo.
Debe haber instrucciones, REPE, después del repetido. prefijo REP.
67
El operando de destino no puede cubrir ES
El operando de destino en la instrucción de operación de cadena no puede ser reemplazado por otros registros de segmento ES
68
No se puede utilizar el direccionamiento del registro de segmento
El operando se encuentra en la instrucción, pero la instrucción ASSUME no indica en qué registro de segmento se encuentra el segmento en el que se encuentra el operando. está relacionado con
Almacenamiento
69