1. Existe un traductor que puede traducir programas fuente escritos en lenguaje ensamblador a lenguaje de máquina que la CPU pueda reconocer. Este compilador se llama programa (ensamblador).
2. El valor del código ASCII del carácter "a" es (41H).
3. El segmento implícito de la instrucción MOVAX [BP] es (SS).
4. Instrucción de direccionamiento inmediato (addax, 1234H).
5. Indique al STC que establezca el bit de acarreo (conjunto 1).
6.AX = 5aah, BX=FFFFH. Después de ejecutar las instrucciones XOR AX y BX, AX = (a5h).
7.AX=100H, DX=123H. Después de ejecutar la instrucción MUL DX, DX=(1).
8.AX=100H, DX=123H. Después de ejecutar las instrucciones SUB AX y DX, el bit de acarreo = (1).
9.BX=100H, CX=1202H. Después de ejecutar las instrucciones SHL BX y CL, BX=(400H).
10 Se sabe que (AH)=12H, (BL) = 09h, luego de ejecutar ADC AH y BL, AH=(BBH o BCH).
En segundo lugar, rellena los espacios en blanco.
1...Hay muchas instrucciones para hacer DX=0, escribe dos tipos de (MOV DX, 0), (sub DX, DX), (XOR DX, DX), (y DX, 0).
2. La función de la instrucción JNE es (saltar cuando los dos números no son iguales).
3. En la transferencia de parámetros de subrutina, la función de la instrucción RET 2 es (saber la dirección al regresar y luego abrir 2 bytes).
4.al, la función en 60H es (leer un byte del puerto 60H a AL).
5. Si la impresora pierde el código ASCII (0D, 0A), la impresora ejecutará (retorno de carro) y (avance de línea).
En tercer lugar, preguntas de respuesta corta.
1. La subrutina regresa al programa DOS (al menos un programa solo necesita escribir comandos de teclado).
1:
Mover eje, datos
Mover ds, ax
……
Mover ah, 4ch
Int 21h
2:
Empujar ds
XOR hacha, hacha
Empujar hacha
p>
……
Remojado en agua para suavizar
2. Enumere 7 registros que se pueden utilizar para cálculos y operaciones.
Disponible: Ax, bx, cx, dx, si, di, bp.
No disponible: ds, cs, es, ip, ss, sp.
3. ¿Por qué utilizar macros cuando la velocidad de ejecución es crítica y subrutinas cuando el espacio de almacenamiento es crítico?
Al ensamblar el programa fuente, el ensamblador procesa las llamadas de macro y la CPU ejecuta directamente las llamadas de subrutina cuando se ejecuta el programa. Cuando se llama a una subrutina, se ejecutarán más instrucciones de llamada e instrucciones RET que el código después de la llamada de macro y se requieren instrucciones adicionales para pasar parámetros, por lo que la velocidad de ejecución es ligeramente más lenta; Utilice macros cuando la velocidad sea crítica. Dado que cada llamada de macro requiere una expansión de macro y el contenido del cuerpo de la macro se copia nuevamente, los programas escritos en ensamblaje de macro tendrán segmentos de programa iguales o similares repetidos en el código de destino, ocupando una gran cantidad de espacio de memoria; instrucción de llamada. No importa cuántas veces se llame, el código de destino de la subrutina solo aparece una vez en el programa ejecutado final y el código de destino es relativamente corto. Entonces, la clave para el espacio de almacenamiento es usar subrutinas.
4. Descripción: Tres métodos de transferencia de parámetros de subrutina.
1. Pasar parámetros usando registros
2. Pasar parámetros usando variables de memoria
3. Pasar parámetros en la pila
lenguaje C. Las subfunciones generalmente usan la pila para pasar parámetros.
En cuarto lugar, diseñar preguntas operativas.
Escriba una subrutina para convertir los valores 0~F (establecidos en al, A~F están en mayúscula) en valores ASCII para su visualización (el parámetro de retorno lo pasa AL). Se requiere una definición de procedimiento, una subrutina denominada ZH.
ZH está más cerca
Pulido químico mecánico aluminio, 9
JA A1
Aluminio añadido, 30H
A1: Añadir aluminio, 37H
ENDP
Quinto, problema de cálculo.
Programa para calcular la suma acumulada de números impares del 1 al 11. Todos los segmentos y programas, así como los programas principales y subrutinas, necesitan utilizar variables o matrices para volver a la funcionalidad de DOS. Requisitos: utilice la programación de macroensamblaje y el programa estará completo. (Si el programa es relativamente largo, escríbalo en dos columnas).
Segmento de datos aa db 1, 3, 5, 7, 9, 11, 24h strg db '00$ 'Segmento de pila final de datos pila Db 200 dup(0) segmento de código final de pila suponiendo cs: código, ds: data, ss: Stack a 1 proc far Inicio: Mov ax, data Mov ds, ax Mov ax, 0 Mov si, 0 Mov cx, 6 call A2 mov ah, al shr ah, 6544
Segmento de datos
bdB'00$'
Fin de datos
Superposición de segmento SSEG 'Overlay'
DB 80H DUP( ? )
Fin SSEG
Segmento de código
Asumir ds: datos, SS: SSEG, cs: código
Proceso A1 lejos
Inicio: MOV AX, DATA
MOV DS, AX
Llamar L1
MOV Ah, Al
MOV CL, 4
Shh, CL
Además, AL, 0FH
Agregar, 30H
Agregar aluminio, 30H
MOV B[0], ah
MOV B[1], aluminio
mov dX, offset B
mov ah, 9h
int 21h
MOV, 4CH
INT 21H
A1 ENDP
Cerca de L1 PROC
MOV AL, 0
MOV BL, 1
MOV CL, 6
LOOP1: Agregar AL, BL
Agregar BL, 2
Bucle LOOP1
Remojar en agua para suavizar
L1 ENDP
Fin del código
Fin Comienzo