Definición de segmento de datos en segmento de ensamblador
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?