Red de conocimiento informático - Conocimiento sistemático - Ejercicios de programación en lenguaje ensamblador

Ejercicios de programación en lenguaje ensamblador

1. Escribe el resultado de ejecutar el siguiente segmento de programa, (AL)=? (DL)=?

¿E indica qué función completa este segmento de programa?

MOV CL, 4

MOV AL, 87d=57H

MOV DL, AL

Y AL, 0FH

O AL, 30H

SHR DL, CL

O DL, 30H

(AL)=37H (DL)=35H

La función completa del segmento del programa es: enviar los bits altos del número hexadecimal en AL a DL, desplazar los bits bajos,

y luego convertirlos en los códigos ASCII correspondientes.

2. Supongamos DS=2100H, BX=0100H, SI=0002H;

[21100H]=12H, [21101H]=34H, [21102H]=56H, [21103H]=78H.

2100: 100H=12H, 34H, 56H, 78H

Analice el contenido del registro después de ejecutar las siguientes instrucciones.

(1) MOV AX, [101H]; ax=5634H

(2) MOV AX, [BX 2]; p>(3) MOV AL, [BX][SI 1]; al=[0103H]=78H

(4) MOV AX, 100H[SI]; p>

3. Identifique si las siguientes instrucciones son correctas o no. En caso de instrucciones incorrectas, explique la causa del error.

(1) MOV DS, 100 ×; no se permite asignar un valor inmediato al segmento de datos

(2) MOV [1000H], 23H ×; número a la memoria, debe especificar Word o byte

(3) MOV [1000H], [2000H] ×; el origen y el destino no pueden ser el mismo número de memoria

(4 ) MOV DATA, 1133H?; si se usa Si DATA ha definido un segmento de datos, DATA ya no se puede usar como nombre de variable

(5) MOV 1020H, DX ×;

(6) MOV AX, [0100H BX BP] ×; al direccionar, solo se puede usar un BX y BP

(7) MOV CS, AX CS no se pueden usar; asignado directamente

(8) PUSH AL ×; la pila no puede enviar bytes, solo palabras (palabras dobles de 32 bits)

(9) PUSH WORD PTR[SI] √

(10) IN AL, 378H ×; el direccionamiento del puerto es mayor que 0FFH, la fuente del número de puerto debe colocarse en DX

(11) OUT 80H, AX √

(12) MOV CX, [AX SI]× AX no se puede utilizar para direccionamiento de memoria