Red de conocimiento informático - Conocimiento sistemático - Problemas con el lenguaje ensamblador

Problemas con el lenguaje ensamblador

Aquí hay dos problemas:

1. Parte del código y el formato es un marco de algoritmo antiguo utilizado para garantizar que DOS pueda devolverse correctamente una vez finalizado el programa.

START PROC FAR; debe definirse con FAR para garantizar que el RET final se ensamble en el RETF devuelto por la llamada lejana

PUSH DS las tres instrucciones que comienzan desde aquí están activadas; la pila forma un puntero lejano que apunta a la primera dirección de la PSP

MOV AX, 0

PUSH AX

...... Aquí está; el código del programa principal

p>

RET ;Este retorno es un retorno lejano

START ENDP

Este marco es un formato fijo.

Para conocer los principios detallados, consulte la información relevante. Implica la estructura PSP del programa EXE de carga de DOS, así como los requisitos funcionales de INT 20H de versiones inferiores de DOS.

En versiones superiores de DOS, con la llamada a función 4CH DOS, no es necesario utilizar este formato de cuadro.

2. El nombre del segmento DSEG y la dirección del segmento correspondiente son una constante determinada cuando el programa se carga en la memoria. El operando del nombre del segmento DSEG utilizado en la instrucción es direccionable inmediatamente. La combinación de direccionamiento de la instrucción MOV no permite que los datos inmediatos se transfieran directamente al registro de segmento.

Entonces, para cargarlo en el registro de segmento DS, la única forma es pedir prestado un registro de uso general para su transferencia.

Entonces:

MOV AX, DSEG; obtiene la dirección del segmento y este valor inmediato se puede enviar al registro general. AX también se puede sustituir por BX, SI, etc.

MOV DS, AX ; el registro general se puede pasar al registro de segmento