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] √ p>
(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