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.

¿Fue útil?

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).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top