2013-04-10 36 views
0

我知道這裏的代碼應該創建一個包含16位代碼和數據的段。當在TASM中聲明段時,「para public use16」是什麼意思?

segment code16 para public use16 
assume cs:code16, ds:code16 

但我不確定這裏的格式是什麼。

我認爲segment表示我們正在聲明一個段,code16是名稱,但我不確定para public use16

而且可能是assume cs:code16, ds:code16意味着我們將用它來代碼和數據。

+1

你的'assume'告訴TASM'cs'和'ds'被假定爲指向'code16'段。 – 2013-04-10 21:01:27

回答

6

para
這是segment alignmentpara是「段落」的縮寫,在此上下文中意味着16個字節。所以你在16字節的邊界上對齊該段。

public
這是segment combine typepublic表示具有該名稱的所有分段應連接成單個分段。

use16
這意味着該段將使用16位編碼的指令通過默認,以及32位指令將需要預先固定的操作碼,如果他們願意,否則是ambigous。

+0

我認爲16位或32位指令集是CPU的全局設置,即實模式與保護模式。這是否意味着每個段可以有不同的指令集? – sashoalm 2013-04-11 05:45:35

+0

@sashoalm:許多指令對16位和32位操作數具有相同的編碼(例如'PUSH AX'和'PUSH EAX')。一個前綴('0x66')用於分隔兩者。 'useNN'設置控制哪兩個將被加上前綴,即_assembler_應該如何對指令進行編碼(例如,'use16'的16位編碼將是默認值,而32位變量將以前綴爲前綴)。 _CPU_在運行代碼時如何解釋代碼是一個不同的問題,但是您當然應該確保您組裝的代碼與您打算運行代碼的模式相同。 – Michael 2013-04-11 05:59:11

相關問題