匯編語言——偽指令


assume

作用:

  1. 編寫程序,需要經過編譯軟件,經過編譯后,才形成機器碼,再去控制CPU。但對於assume語句,並不生成機器碼。因此,代碼中仍必須有給段寄存器的操作。
  2. assume對除了CS以外的其他段寄存器,僅僅只是關聯了段名,以便在訪問段內變量時程序可以知道用哪個段寄存器,並沒有在程序加載時將段地址裝入段寄存器。

換句話說,assume的作用是讓編譯器知道在代碼段中使用的變量來自於哪個段,從而可以利用段寄存器尋址。而將段地址裝入段寄存器的任務仍然要在代碼中實現。

 

 

 

db,dw,dd

作用:

db定義字節類型變量,一個字節數據占1個字節單元

dw定義字類型變量,一個字數據占2個字節單元

dd定義雙字類型變量,一個雙字數據占4個字節單元

 

 

 

segment系列指令

定義格式:

segment_name segment [定義類型] [組合類型] [類別名]

…  ;這里寫代碼

segment_name ends

作用:

segment是段,是段定義的偽指令

1.定位類型

指明段開始的邊界,如para,它使段定位在小段的邊界,段首地址正好能被16整除,定位類型未指明時默認為para。

段的定位類型又4種,分別是:
(1)page(頁起始),起始地址以00H結尾,能被256整除

(2)para(節起始),起始地址以0H結尾,能被16整除

(3)word(字起始),起始地址末尾為0,是偶地址

(4)byte(字節起始),起始地址為任意邊界

 

2.組合類型

決定本段是否要和其他段組合在一起,組合類型有:stack, common, public

 

3.類別名

連接時用於相關段組合在一起,如代碼段 ’code’ ,數據段 ‘data’ ,堆棧段 ‘stack’

 

 

 

變量定義命名方法

格式:

變量名 db/dd/dw 數據

 

(代碼中可使用)

type 變量名

seg 變量名

size 變量名

offset 變量名

 

作用:

type可以獲取變量的類型,如果是db定義的則為1,dw定義的則為2,以此類推。

seg可以獲得變量的段地址

offset可以獲得變量的偏移地址

length對於變量中使用DUP的情況,返回分配的單元數(例如 3 dup(?))則返回3

size為 type*length

 

 

 

 

 

$

$為地址計數器偽指令,用於表示下一個可用單元的地址

 

 

 

 

 

equ

格式:

<符號名> equ <表達式>

作用:

equ為等值偽指令,用於給符號定義一個值,別的符號名、表達式或指令助記符

 

 

 

 

 

 struc

格式:

結構體名 struc

成員名 dw/dd/db 默認值

結構體名 ends

作用:
定義結構體

 

例子

 

 

 

 

 

 

 

dup

dup是一個操作符,用來進行數據重復

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM