Saltar al contenido

¿Qué tamaño de variable usar (db, dw, dd) con el ensamblado x86?

Tenemos el resultado a esta aprieto, al menos eso esperamos. Si continuas con interrogantes puedes dejarlo en el apartado de preguntas y con gusto te ayudaremos

Solución:

Revisión rápida,

  • base de datos – Definir byte. 8 bits
  • DW – Definir palabra. Generalmente 2 bytes en un sistema típico x86 de 32 bits
  • DD – Definir palabra doble. Generalmente 4 bytes en un sistema típico x86 de 32 bits

Del tutorial de ensamblaje x86,

La instrucción pop elimina el elemento de datos de 4 bytes de la parte superior de la pila compatible con hardware en el operando especificado (es decir, registro o ubicación de memoria). Primero mueve los 4 bytes ubicados en la ubicación de la memoria [SP] en el registro especificado o ubicación de memoria, y luego incrementa SP en 4.

Su número es de 1 byte. Intenta declararlo con DD para que se convierta en 4 bytes y coincida con pop semántica.

La lista completa es:

DB, DW, DD, DQ, DT, DDQ y DO (utilizados para declarar datos inicializados en el archivo de salida).

Ver: http://www.tortall.net/projects/yasm/manual/html/nasm-pseudop.html

Se pueden invocar en una amplia gama de formas: (Nota: para Visual-Studio, use la sintaxis “h” en lugar de “0x”, por ejemplo, no 0x55 sino 55h):

    db      0x55                ; just the byte 0x55
    db      0x55,0x56,0x57      ; three bytes in succession
    db      'a',0x55            ; character constants are OK
    db      'hello',13,10,'$'   ; so are string constants
    dw      0x1234              ; 0x34 0x12
    dw      'A'                 ; 0x41 0x00 (it's just a number)
    dw      'AB'                ; 0x41 0x42 (character constant)
    dw      'ABC'               ; 0x41 0x42 0x43 0x00 (string)
    dd      0x12345678          ; 0x78 0x56 0x34 0x12
    dq      0x1122334455667788  ; 0x88 0x77 0x66 0x55 0x44 0x33 0x22 0x11
    ddq     0x112233445566778899aabbccddeeff00
    ; 0x00 0xff 0xee 0xdd 0xcc 0xbb 0xaa 0x99
    ; 0x88 0x77 0x66 0x55 0x44 0x33 0x22 0x11
    do      0x112233445566778899aabbccddeeff00 ; same as previous
    dd      1.234567e20         ; floating-point constant
    dq      1.234567e20         ; double-precision float
    dt      1.234567e20         ; extended-precision float

DT no acepta constantes numéricas como operandos y DDQ no acepta constantes flotantes como operandos. Cualquier tamaño mayor que DD no acepta cadenas como operandos.

Al final de la post puedes encontrar las ilustraciones de otros usuarios, tú igualmente eres capaz insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *