ディレクティブ DUP

高級言語プログラマのためのアセンブラ入門』 185ページあたり

DUP(値)」と「DUP(?)」の違いを確認。

CODE    SEGMENT
        ASSUME  cs:CODE,ds:DATA,ss:STK
START:
        mov     ax,DATA
        mov     ds,ax
        ;-----------------------codeここから
        ;-----------------------codeここまで
        mov     ah,4CH
        int     21H

CODE    ENDS

DATA    SEGMENT
        ;-----------------------dataここから
;MYDB    DB 2000 DUP(0)
MYDB    DB 2000 DUP(?)
        ;-----------------------dataここまで
DATA    ENDS

STK     SEGMENT STACK
        DB      100H DUP(?)
STK     ENDS
        END     START

で、「DB 2000 DUP(?)」を「DB 2000 DUP(0)」にすると
生成された exe ファイルが大きくなった。


COM 形式だと変わらない?

  • コード、データ、スタックが一つのセグメントに収まっているから???
  • 使っていないから最適化されてしまった???
  • でも、EXE でも使っていないのに?