¡Ayude a interpretar el código en lenguaje ensamblador!
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!