Directorio de artículos
-
- ¿Qué aspecto tiene el lenguaje ensamblador?
- Montaje de BRAZO
-
- Condiciones de instrucción y códigos de estado
- Modo de direccionamiento de ensamblaje ARM
- Operación de datos (operación ALU)
- Operación lógica (y, o, no, exclusiva o)
- Operación de comparación
- Operación de memoria
- Saltar, estado de operación
- Operación de registro de estado
- Instrucción de generación de excepciones
- Pseudo instrucciones ARM
¿Qué aspecto tiene el lenguaje ensamblador?
-
Ejemplo: agregue 100 a un valor en el registro.
X86: agregue eax, # 100
68K: ADD # 100, D0
ARM: agregue r0, r0, # 100 -
Ejemplo: carga desde un puntero de registro para registrar
x86: mov eax, DWORD PTR [ebx]
68K: MOVE L (A0), D0
ARM: ldr r0, [r1] -
Ejemplo: estructura del código de inicio ARM
-
Formato de instrucción de ensamblaje ARM :
Operación [cond] {estado} Rd, Rn, Operand2
Montaje de BRAZO
Condiciones de instrucción y códigos de estado
- Código de condición (cond)
- Código de estado (estado)
Modo de direccionamiento de ensamblaje ARM
- Direccionamiento inmediato :
ADD R0, R0, # 0x3F - Direccionamiento de registro:
ADD R0, R1, R2 - Registrar direccionamiento indirecto
LDR R0, [R1]
STR R0, [R1] - Registre el direccionamiento por desplazamiento
ADD R3, R2, R1, LSL # 2 (R1 se desplaza dos bits a la izquierda y se agrega R1, y luego se asigna a R3) - Dirección base direccionamiento
LDR R0, [R1, # 4] (sume el valor señalado por la dirección R1 más 4 a R0)
LDR R0, [R1], # 4 (sume 4 al valor tomado de la dirección R1 R0)
LDR R0, [R1, R2] - Direccionamiento de múltiples registros
LDMIA R0, {R1, R2, R3, R4} - Direccionamiento relativo
BL NEXT (saltar a NEXT)
MOV PC, LR
Operación de datos (operación ALU)
Operación lógica (y, o, no, exclusiva o)
Operación de comparación
Operación de memoria
Instrucciones de lectura y escritura de registro único, instrucciones de
lectura y escritura de registros múltiples
- Modo de dirección
(1) Modo de bloque de datos: IA (dirección más 4 después de la transmisión), IB (dirección más 4 antes de la transmisión), DA (dirección menos 4 después de la transmisión), DB (dirección menos 4 antes de la transmisión)
(2) Modo de pila: Pila inferior completa, EA (pila de disminución vacía), FD (pila de disminución completa), ED (pila de incremento vacía), FA (pila de incremento completa)
Instrucciones de intercambio de datos
Saltar, estado de operación
Código de operación | Operandos | Descripción | Función |
---|---|---|---|
segundo | Instrucción de salto | pc <-etiqueta | |
licenciado en Derecho | Salto de conexión con retorno | pc -> - etiqueta | |
BX | Saltar y cambiar de estado Pulgar | ||
BLX | Saltar con retorno y cambiar de estado Pulgar |
Operación de registro de estado
Operación del registro de estado: divida las instrucciones de 32 bits en cuatro campos: [7: 0] campo de bit de control c, [15: 8] campo de bit extendido x, [23:16] campo de bit de estado s, [31:24] condición Campo de bandera f
Código de operación | Operandos | Descripción | Función |
---|---|---|---|
SEÑORA | Transferir el valor del registro de estado del programa al registro general | ||
MSR | CPSR R0; SPSR, R0; CPSR_c R0 | Registro general al registro de estado del programa |
Instrucción de generación de excepciones
Código de operación | Operandos | Descripción | Función |
---|---|---|---|
SWI | SWI 0x02 | Instrucción de interrupción suave | |
BKPT | BKPT | Instrucción de interrupción de punto de interrupción |
Pseudo instrucciones ARM
En el programa de lenguaje ensamblador ARM, hay algunos mnemónicos de instrucción especial. Estos mnemónicos son diferentes de los mnemónicos del sistema de instrucción. No hay un código de operación correspondiente. Estos mnemónicos de instrucción especial generalmente se llaman pseudoinstrucciones. La operación se llama pseudo operación. La función de las pseudoinstrucciones en el programa fuente es hacer varios preparativos para completar el programa de ensamblaje. Estas pseudoinstrucciones solo funcionan en el proceso de ensamblaje. Una vez finalizado el ensamblaje, se completa la misión de la pseudoinstrucción.
- Seudoinstrucciones básicas comunes
Símbolos comúnmente usados en programas en lenguaje ensamblador
- Convenciones de nomenclatura de símbolos:
(1) Los símbolos distinguen entre mayúsculas y minúsculas, y el compilador considerará los símbolos en mayúsculas y minúsculas con el mismo nombre como dos símbolos diferentes.
(2) El símbolo debe ser único dentro de su ámbito de acción.
(3) El símbolo personalizado no puede coincidir con la palabra reservada del sistema.
(4) El nombre del símbolo no debe ser el mismo que el de la instrucción o pseudoinstrucción - Símbolos, variables El
ensamblador ARM (Thumb) admite variables numéricas, variables lógicas y variables de cadena
- Constante
(1) Una constante digital es generalmente un entero de 32 bits. Cuando se usa como un número sin signo, su rango de valores es 0 ~ 232-1, cuando se usa como un número con signo, su rango de valores es -231 ~ 231-1
( 2) Solo hay dos valores para las constantes lógicas: verdadero o falso
(3) Una constante de cadena es una cadena fija, que generalmente se usa para solicitudes de información cuando el programa se está ejecutando - Carácter de sustitución de
variable Una variable del programa puede obtener una constante mediante la operación de sustitución. El operador de sustitución es: "" $ ""
Ejemplo:
LCLS S1
LCL S2
S1 SETS "Test!"
S2 SETS "This is a $S1" ;字符串变量S2的值为 This is a Test!
- Expresiones y operadores
Operación de registro
Operación de registro
Pseudoconjunto de definición de datos
Pseudoconjunto de definición de datos
Directiva de control
Muestra:
GBLL Test ;声明一个全局的逻辑变量,变量名为Test
……
IF Test = TRUE
指令序列1
ELSE
指令序列2
ENDIF
GBLA Counter ;声明一个全局的数学变量,变量名为Counter
Counter SETA 3 ;由变量Counter控制循环次数
……
WHILE Counter < 10
指令序列
WEND
MACRO
$OP hello world $param1,$param2
MOV R3,#0x02
MEXIT
MEND