3

私はアセンブリを学び始めました。私はこれらの線に出くわしました。

;*************************************************;
;   OEM Parameter block / BIOS Parameter Block
;*************************************************;

TIMES 0Bh-$+start DB 0

bpbBytesPerSector:      DW 512
bpbSectorsPerCluster:   DB 1
bpbReservedSectors:     DW 1

宣言「bpbBytesPerSector:DW512」の最初の行で混乱しています。ここで、DWは定義語だと思います。したがって、DW 512は、512ワードの定義が1024バイトを意味することを意味します。これで、ラベルは「bpbBytesPerSector」になります。セクターあたりのバイト数は512である必要があります(これは私が思うことです)。同様に、次の2行も理解できません。私はこれについて完全に混乱しています。誰か説明してもらえますか。よろしくお願いします。

4

2 に答える 2

6

いいえ、は単一dwの単語512を定義することを意味します。つまり、ここで1つの単語にスペースを割り当て、値を512に設定します。

これは、BIOSパラメータブロック(BPB)を作成し、それを分解しています。

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
于 2010-11-05T06:21:55.870 に答える
0

@paxdiablo がすでに指摘しているように、数字は単語の値にすぎません。あなたが説明したように512語の配列を定義したい場合/場合は、次のようなものを使用します:

myarray dw 512 dup(?)

ここで、512は繰り返し回数、?はそれぞれに入れる値です (「?」は「初期化しないままにする」という意味ですが、必要に応じて値を指定することもできます)。

于 2010-11-05T18:06:44.307 に答える