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!
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: p>
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