Red de conocimiento informático - Conocimiento sistemático - Preguntas básicas de compilación (con respuestas. Por favor explique)

Preguntas básicas de compilación (con respuestas. Por favor explique)

P1: Datos DW' AB 'almacenados en la memoria desde el byte bajo al byte alto: ()

BA

Pregunta de comparación: DB' ABC 'cambiará los datos de los bytes de orden bajo Los bytes de orden superior se almacenan en la memoria en orden: ()

Ba

Mi pregunta (1) es una comparación de dos preguntas. Estoy muy frustrado. ¿Es incorrecta la respuesta a la segunda pregunta? ¿Por qué C ya no está ahí?

Respuesta: La respuesta a la segunda pregunta es incorrecta. La respuesta correcta es ABC.

(2)La primera pregunta. Si se cambia a 'ABCD'. La respuesta es: ¿DCBA?

Respuesta: Si la primera pregunta se cambia a 'ABCD', no podrás aprobar el examen. DW es una directiva que define datos de palabras (dos bytes). Más de dos caracteres significa más de lo que la palabra unidad puede representar. El método correcto es: DW 'AB', 'CD' y el orden de almacenamiento en la memoria es: BADC.

;-

P2: Las instrucciones que son completamente equivalentes a las instrucciones BX y BUF son:

Respuesta Mov BX, BUF B. LDS BX, BUF C .MOV BX, palabra PTR BUF

d .MOV BX, desplazamiento BUF A: D

(1) ¿Cuál es la diferencia entre C y D? Sé que no debo elegir AB. Entonces ¿por qué no elegir C?

Respuesta: La respuesta dada es completamente correcta.

Instrucción

Li·BX

La función es cargar la dirección efectiva de la variable BUF en el registro BX, la instrucción

MOV BX , palabra PTR BUF

La primera palabra (dos bytes) de la variable BUF se envía al registro BX.

Uno es la dirección y el otro es el contenido de la dirección.

;-

T3: Problemas de análisis del programa

Proceso HTOA

También AL, 0FH

Aluminio agregado , 90H

DAA

Convertidor analógico a digital aluminio, 40 horas

DAA

Remojado en agua para ablandar

HTOA·ENDP

Por favor responda: 1. Si AL=09H antes de que se ejecute la subrutina, AL=() después de que se ejecute la subrutina.

2. Si AL=0DH antes de que se ejecute la subrutina, AL =()1 después de que se ejecute la subrutina 39 horas y 2 minutos.44H

Mis preguntas (1) ¿Qué significa DAA?

Respuesta: DAA es un número decimal más DAA (ajuste decimal después de la suma), que se utiliza para ajustar el valor de al. Es el resultado de indicarle a Add o ADC que opere en dos códigos BCD comprimidos. El código BCD comprimido almacena dos códigos BCD en un byte, y los cuatro bits inferiores y los cuatro bits superiores son ambos un código BCD. Las reglas de ajuste son las siguientes:

*, si los cuatro bits inferiores de AL son mayores que 9, o el bit de bandera AF=1, entonces AL=AL 6 y establezca AF = 1;

* p>

*, Si los cuatro bits superiores de AL son mayores que 9, o CF=1, entonces AL=AL 60H, con CF = 1;

*, si los dos puntos anteriores son no es cierto, borre las banderas AF y CF.

Después del ajuste, el valor de al sigue siendo un código BCD comprimido, es decir, los dos códigos BCD comprimidos se agregan y ajustan, y el resultado sigue siendo un código BCD comprimido.

Formato de instrucción: DAA

Banderas afectadas: AF, CF, PF, SF y ZF (indefinido).

(2) Por favor explique cada instrucción.

Por ejemplo, AND AL, 0FH significa que cuando AL=09H, 09H y 0FH se combinan juntos. Como resultado, AL=09H.

Proceso HTOA

Y AL, 0FH Y lógico. Si AL=09, después de ejecutar la instrucción, AL=09.

Agregar AL, 90HAL 90H→AL, AL=99H

DAA;

ADC AL, número decimal 40H más ajuste

DAA

Remojado en agua para suavizar

HTOA·ENDP

; -

P4: Se permiten expresiones en el funcionamiento de las instrucciones. Por ejemplo, BUF1 y BUF2 son nombres de variables. La sintaxis de las siguientes instrucciones es correcta: (d)

Respuesta .MOV AX, BUF1*BUF2 B .MOV AX, BUF1/BUF2 C .MOV AX, BUF1 ES: BUF2 D .MOV AX, BUF2 -BUF1

Mi pregunta (1) es por qué elegí D. ¿Qué pasó con el resto?

Respuesta: Las variables o etiquetas aparecen en expresiones y representan sus direcciones, y la multiplicación, división y suma de direcciones no tienen sentido. Por lo tanto, el lenguaje ensamblador Intel 8086/8088 prohíbe directamente esta expresión sin sentido. Sin embargo, la resta de direcciones es significativa. Puede obtener la capacidad de la unidad de almacenamiento ocupada por una o más variables y puede obtener la capacidad de la unidad de almacenamiento ocupada por un segmento del programa.