Red de conocimiento informático - Conocimiento informático - El código de desensamblado se obtuvo del comando de depuración. Pregunta: ¡Cómo escribir un programa fuente (el ensamblador también está bien) para obtener el código de desmontaje como se muestra en la imagen!

El código de desensamblado se obtuvo del comando de depuración. Pregunta: ¡Cómo escribir un programa fuente (el ensamblador también está bien) para obtener el código de desmontaje como se muestra en la imagen!

Su pregunta está incompleta, faltan dos variables definidas en el segmento de datos (direcciones 0000 y 0003).

Los valores de estas dos variables deben completarse verificando el área de datos en la memoria. Utilizo "..." para tratarlos como datos no inicializados.

segmento datasg

var_x DB ?, ?, ? Según el análisis del código, hay 2 variables de tipo byte, cada variable tiene 3 unidades de datos

var_y DB ?, ?, ?

final de datasg

segmento de códigosg

Supongamos cs:codesg, ds:datasg

Inicio:

mov ax, datasg; 18A0 en el desmontaje es el valor del posicionamiento dinámico cuando se carga el segmento

mov ds, ax

mov si, offset var_x; aquí es una variable con una dirección efectiva de 0000H

mov di, offset var_y ;Aquí hay otra variable con una dirección efectiva de 0003H

mov cx, 3

otra vez:; esta es la dirección de 000EH, la dirección de destino del giro LOOP

mov al, [si]

sub al, 7

y al. , 0fh

mov [di], al

inc di

inc si

bucle nuevamente el valor de la dirección de destino es 000EH <; /p>

mov ah, 4ch

int 21h

codesg termina

fin inicio