Red de conocimiento informático - Conocimiento sistemático - Definición de segmento de datos en segmento de ensamblador

Definición de segmento de datos en segmento de ensamblador

Segmento de datos

STR1?DB'¿Cómo te llamas? ', 13, 10, '$' CN?EQU$-STR1

STR2?EQUSTR1 CN-5

DATOS?SEGMENTO ASSUMECS: CÓDIGO, DS: DATOS, ES: INICIO DE DATOS :?MOVAX, DATA MOVDS, AX MOVES, AX MOVDX, OFFSET?STR1 MOVAH, 9 INT21H MOVSI, OFFSET?STR1 MOVDI, OFFSET?STR2 MOVCX, CN ADDSI, CN-1 ADDDI, CN-1 STD REPMOVSB ​​​​MOVDX, OFFSET ?STR2 INT21H< MOVAH, 4CH INT21H

CODE?

es es la dirección del segmento de datos adicional ¿Es el programa un segmento de datos o un segmento de datos adicional? El programa es el mismo segmento que el segmento de datos y el segmento de datos adicional.

str1 tiene 21 bytes.

cn y str2 son constantes aquí.

Solo el segmento de datos está definido en el área de almacenamiento str1. (Pero str2 se usa como área de almacenamiento. Este uso es poco común, ¡no lo aprenda!)

====================== === ======================================

El problema con La operación anterior es: No hay búfer de solicitud para str2 y existe el riesgo de que se salga de los límites durante la ejecución.

============================================ = =================

El siguiente es el procedimiento estándar:

DATOS?SEGMENTO

STR1 ?DB' ¿cuál?es?tu?nombre?',13,10,'$' CN?EQU$-STR1

STR2?DBCN?DUP(?)

DATOS? FINALIZA

p>

CODE?SEGMENT ASSUMECS: CODE, DS: DATA, ES: DATA INICIO: ?MOVAX, DATA MOVDS, AXE MOVES, AX LEADX, ?STR1 MOVAH, 9 INT21H LEASI, STR1 LEADI, STR2 MOVCX, CN ADDSI, CN-1 ADDDI, CN-1 STD REPMOVSB ​​LEADX, STR2 INT21H MOVAH, 4CH INT21H

¿CÓDIGO?