Red de conocimiento informático - Conocimiento informático - ¡Ayude a interpretar el código en lenguaje ensamblador!

¡Ayude a interpretar el código en lenguaje ensamblador!

Segmento de programa

proceso principal lejos

suponga cs: programa

inicio: ¡Las cuatro oraciones anteriores están escritas para el compilador! El compilador se utiliza para engañar al sistema ~ Entiéndalo usted mismo

;============================= = =============================================

push ds; Al presionar este valor, ¿es necesario presionar la dirección del segmento del programa? ¿La dirección base del programa? Se recomienda escribir push cs

sub ax, ax de esta manera; ¡puede que sea mejor escribir xor ax, ax!

push ax; si realmente presiona la dirección base del programa, entonces esta debería ser la dirección de desplazamiento del programa, apuntando al primer código del programa,

; es, push ds ~~~~~~~~~

; La suposición del código anterior se debe a que presionó dos valores y luego comenzó a usar la instrucción ret al final del programa.

; Esta es la instrucción de retorno para llamar a una llamada a un procedimiento almacenado. Cuando la instrucción de llamada se inserta en la pila, primero se inserta cs en la pila y luego se inserta ip.

; La instrucción ret se inserta primero en ip, luego ingresa el valor de cs y luego apunta a la línea en el segmento de código indicado donde ingresaste el valor de ds y luego ingresa un 0.

;Creo que estás intentando realizar un bucle una y otra vez, pero el valor ds que estás presionando hace que esto sea imposible en algunos sistemas.

;Si no estás haciendo un bucle, ¿qué significan estas tres líneas de código?

mov cap, 4; ¡El significado de algunos códigos no es obvio de un vistazo! ¡Tienes que ponerlo en contexto para entender su propósito!

; No adivines el significado del código ahora, lo veremos más tarde

rotate: mov cl, 4 No hay nada más que decir aquí~

rol bx, cl

mov al, bl

and al, 0fh

add al, 30h

cmp al , 3, 3

y al, 0fh

agregar al, 30h

cmp al, 3ah

jl printit

agregar al , 7h

imprimir:

mov dl, al

mov ah, 2

int 21h

dec ch; Bueno, solo aquí nos damos cuenta de lo que es el mov ch, 4! Tenga en cuenta que el resultado de esta instrucción afectará los indicadores AF, OF, PF, SF y ZF

jnz rotar arriba dijimos que el indicador ZF se ve afectado por la instrucción dec, es decir, si el valor; de ch es 0, entonces la bandera ZF es 1;

; Si el valor de ch no es 0 (zf = 0), el propósito de jnz es saltar a la bandera rotar. ¡Se basa en el valor de la bandera zf!

; zf está escrito como la bandera cero en el libro, ¡y muchas instrucciones lo afectarán!

; La instrucción jl anterior es una transferencia menor/igual y se verá afectada por SF y OF.

ret ; Sin combinar el contexto del programa, es difícil entender el verdadero significado de este código, porque el programa no utiliza la instrucción de llamada, pero existe este código

> ; Entonces supongo que quieres escribir un programa de bucle infinito.

; Este es un método de programación común en algunos programas a nivel de sistema.

final principal

el programa termina

fin

; Bueno, todo lo demás que no fue decodificado se dijo arriba. claro primero, cometiste un error en el programa, "y al, ofh "¡cometiste un error tipográfico! es "y al,0fh".

; Déjame adivinar a qué te refieres. Su programa es un bucle infinito en algunos entornos, pero no en entornos DOS. Por eso recomiendo presionar el valor de CS para este propósito.

; el análisis del programa de ensamblaje no consiste en mirarlo frase por frase, sino en contexto.

; yo también soy novato, ¡agrégame 271757468 para aprender juntos!

; yo también soy novato, ¡agrégame 271757468 para aprender juntos!