Explicación de código ensamblador
-
29-09-2019 - |
Pregunta
Me han comenzado a aprender ensamblador. Me encontré con estas líneas.
;*************************************************;
; OEM Parameter block / BIOS Parameter Block
;*************************************************;
TIMES 0Bh-$+start DB 0
bpbBytesPerSector: DW 512
bpbSectorsPerCluster: DB 1
bpbReservedSectors: DW 1
Estoy confundido en la primera línea de la declaración "BpbBytesPerSector: DW 512". Aquí creo DW es definir la palabra. Así DW 512 medios que definen 512 palabras significa 1.024 bytes. Ahora, la etiqueta es "bpbBytesPerSector". Bytes por sector deben ser 512 (esto es lo que pienso). Del mismo modo que no puedo entender siguientes dos líneas. Estoy totalmente confundido en esto. ¿Alguien puede explicar me.Thanks de antemano.
Solución
No, medios dw
definen el solo palabra 512. Eso significa asignar espacio para un palabra aquí y establezca el valor en 512.
Esto está creando un bloque de parámetros del BIOS (BPB) y romper hacia abajo:
0000 TIMES 0Bh-$+start DB 0 ; allocate 11 zero bytes.
000B bpbBytesPerSector: DW 512 ; define one word 512
000D bpbSectorsPerCluster: DB 1 ; define one byte 1
000E bpbReservedSectors: DW 1 ; define one word 1
0010
Otros consejos
Como ya se señaló @paxdiablo, el número es sólo el valor de la palabra. Cuando / si desea definir un conjunto de 512 palabras como usted describió, que tendría que utilizar algo como:
myarray dw 512 dup(?)
Aquí el 512
es el número de repeticiones y el ?
es el valor que se debe poner en cada uno (que significa "?" "Dejar sin inicializar", pero se puede especificar un valor, si lo prefiere).