segment是段,是段定義的僞指令。在彙編中有資料段,代碼段,堆棧段和附加段
[格式]
segment_name SEGMENT 【定位類型】 【組合類型】 【類别名】
···;here is your code
segment ends
注:【】都是在英文輸入法下的符号,此處無法打出是以才用了中文狀态下的【】
參數解釋:
-
【定位類型】
指明段開始的邊界,如para,它使段定位在小段的邊界,段首位址正好能被16整除,定位類型未指定時預設為para
段的定位類型有4種,分别是:
- page(頁起始),起始位址以00H結尾,能被256整除
- para (節起始),起始位址以0H結尾,能被16整除
- word(字起始),起始位址末位為0,是偶位址
- byte (位元組起始),起始位址為任意邊界
-
【組合類型】
決定本段是否要和其他段組合在一起,組合類型有:stack,common,public
-
【類别名】
連接配接時用于相關段組合在一起,如代碼段’code’,資料段’Data’,堆棧段’Stack’
例子: stack segment para stack ‘stack’
解釋: para表明該段起始位址對齊到para。 1 para= 16 bytes。stack聲明該段是堆棧段,這樣在最後的連結link時,會将該最終建立的exe檔案頭部的SS:SP域指向該段的末尾
‘stack’表明該段的組合名為’stack’。同一程式不同子產品中,相同組合名的段會組合到一起。組合名也決定了最後exe檔案中各個段的排列順序
參考文檔:
微機中的一些解釋
SEGMENT僞指令說明