Este artículo utiliza tres preguntas de muestra que le llevarán cinco minutos para comprender el cálculo de asignación de memoria DUP
Explicación del concepto básico
Al definir los datos, encontraremos las siguientes instrucciones. Para comenzar a calcular, necesitamos averiguar cuántos bytes representan:
- Defina el número de bytes :
Palabra clave | abreviatura | Alias | Número de bytes definidos |
---|---|---|---|
definir byte | DB | BYTE | 1 |
definir palabra | DW | PALABRA | 2 |
definir palabra doble | DD | DWORD | 4 |
- mDUP (x1, x2, x3 ... xn) :
Tomem*n
un espacio y asigne valores iniciales x1, x2, x3 ... xn a cada m espacio por turno.
ejemplo
Después de ensamblar las siguientes declaraciones, ¿cuál es el número de bytes en la unidad de almacenamiento asignados para la variable BUF?
BUF DW 10H DUP(3 DUP(2,10H),3,5)
BUF DWORD 10H DUP(3 DUP(2,5),3,4,5)
- 2 * 16 * (3 * 2 + 1 + 1) = 256 = 100H
Análisis: DW define word define cada espacio como2
un byte, un total de10H
= 16 espacios. Después de eso, cada espacio se asignó nuevamente: un3
espacio pequeño + 13
+ 1 espacio5
. Los dos bytes asignados en cada espacio pequeño son2
y10H
- 4 * 16 * (3 * 2 + 1 + 1 + 1) = 576 = 240H
Análisis: DWORD define palabra doble define cada espacio como4
un byte, un total de10H
= 16 espacios. Después de eso, se asignó cada espacio: un3
espacio pequeño + 13
+14
+ 1 + 15
. Los dos bytes asignados en cada espacio pequeño son2
y5
ejercicio
BUF DW 10H DUP(3 DUP (2,?), 1, 2 DUP(?), 100 )
¿Cuál es el número de bytes del espacio de memoria asignado a la variable BUF?
responder
2 * 16 * (3 2 + 1 + 2 1 + 1) = 320 = 140H
Preste atención a la conversión de decimal y hexadecimal
Durante el proceso de cálculo, es mejor convertir a cálculo decimal y luego convertir el resultado de nuevo a hexadecimal (si es necesario)