微機原理與匯編-偽指令_第1頁
微機原理與匯編-偽指令_第2頁
微機原理與匯編-偽指令_第3頁
微機原理與匯編-偽指令_第4頁
微機原理與匯編-偽指令_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、段定義偽指令2、變量定義偽指令1.段定義偽指令段定義偽指令指示匯編程序如何按段組織程序和使用存儲器。段定義偽指令主要有:

SEGMENT/ENDSASSUMEORG1.段定義偽指令SEGMENT/ENDS格式:段名SEGMENT[定位類型][,組合類型][,字長類型][,類別]

……(段體)……

段名ENDS

任何一個邏輯段從SEGMENT語句開始,以ENDS語句結(jié)束。偽指令名SEGMENT和ENDS是本語句的關(guān)鍵字,不可以默認,并且必須成對出現(xiàn)。語句中段名是必選項,定位類型、組合類型、字長類型、類別為可選項。用戶自己選定,不能省略,其規(guī)定同變量或標號,一個段開始與結(jié)尾用的段名應(yīng)一致。2.段分配偽指令A(yù)SSUME

段分配偽指令用來完成段的分配,說明當前哪些邏輯段被分別定義為代碼段、數(shù)據(jù)段、堆棧段和附加段。

1、代碼段用來存放被執(zhí)行的程序;

2、數(shù)據(jù)段用來存放程序執(zhí)行中需要的數(shù)據(jù)和運算結(jié)果;

3、當用戶程序中使用的數(shù)據(jù)量很大或使用了串操作指令時,可設(shè)置附加段來增加數(shù)據(jù)段的容量;

4、堆棧段用來設(shè)置堆棧。

說明:格式中,ASSUME是偽指令名,是語句中的關(guān)鍵字,不可省略。段寄存器名后面必須有冒號,如果分配的段名不止一個,則應(yīng)用逗號分開。段名是指用SEGMENT/ENDS偽指令語句定義過的段名。ASSUME偽指令設(shè)置在代碼段內(nèi)(只能設(shè)置在代碼段內(nèi)),放在段定義語句之后。

格式:ASSUME段寄存器:段名[,段寄存器:段名,…]功能:說明源程序中定義的段由哪個段寄存器去尋址。段寄存器可以是CS,SS,DS,ES,FS或GS。

在用ASSUME語句來完成段的分配時,要注意以下幾點:①在一個代碼段中,如果沒有另外的ASSUME語句重新設(shè)置,則原有的ASSUME語句的設(shè)置一直有效。②每條ASSUME語句可設(shè)置1-6個段寄存器。③可以使用NOTHING將以前的設(shè)置刪除,例如:

ASSUMEES:NOTHING

;刪除對ES與某段的關(guān)聯(lián)設(shè)置

ASSUMENOTHING

;刪除對全部6個段寄存器的設(shè)置④段寄存器的裝入?!纠?】

DATA

SEGMENT;定義數(shù)據(jù)段

XX

DB

?

YY

DB

?

ZZ

DB

DATA

ENDS

EXTRA

SEGMENT;定義附加段

RSS1

DW?

RSS2

DW?

RSS3

DD?

EXTRA

ENDS

STACK

SEGMENT;定義堆棧段

DW50

DUP()

TOP

EQUTHISWORD

STACK

ENDS

CODE

SEGMENT;定義代碼段

ASSUMECS:CODE,DS:DATA

ASSUMEES:EXTRA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

MOVAX,EXTRA

MOVES,AX

MOVAX,STACK

MOVSS,AX

MOVSP,OFFSETTOP

……

CODEENDS

ENDSTART例1解析:

在例1中,用SEGMENT和ENDS分別定義了四個段:數(shù)據(jù)段、附加段、堆棧段和代碼段。在數(shù)據(jù)段和附加段中分別定義了一些數(shù)據(jù),在堆棧段中定義了50個字單元的堆??臻g。段分配偽指令A(yù)SSUME指明CS寄存器指向代碼(CODE)段,DS指向數(shù)據(jù)(DATA)段,ES指向附加(EXTRA)段,SS指向堆棧(STACK)段,如果一行寫不下,可分為兩個ASSUME語句來說明。2.變量定義偽指令變量定義偽指令用來定義變量的類型,并為變量中的數(shù)據(jù)項分配存儲單元。變量定義偽指令有兩種不同的格式。格式1格式:[變量名]DB/DW/DD/DQ/DT表達式格式2

格式1.[變量名]DB/DW/DD/DQ/DT表達式功能:DB(definebyte):定義一個字節(jié)類型的變量,其后的每個操作數(shù)均占用1個字節(jié)。

DW(defineword):定義一個字類型的變量,其后的每個操作數(shù)均占用1個字(2個字節(jié))。

DD(definedoubleword):定義一個雙字類型的變量,其后的每個操作數(shù)均占用2個字(4個字節(jié))。

DQ(definequadword):定義一個四字類型的變量,其后的每個操作數(shù)均占用4個字(8個字節(jié))。

DT(definetenbytes):定義一個十字節(jié)類型的變量,其后的每個操作數(shù)均占用5個字(10個字節(jié))。其中,各變量定義偽指令都將高位字節(jié)數(shù)據(jù)存放在高地址中,低位字節(jié)數(shù)據(jù)存放在低地址中。格式1又可分為以下幾種具體用法:(1)用數(shù)值表達式定義變量

【例2】K1DB10,4,10H

K2DW100,100H,-5

K3DD3*20,0FFFDH

變量K1,K2,K3經(jīng)匯編后的結(jié)果如圖1所示。圖1:(2)用地址表達式定義變量

【例3】RS1DWADDR1

DW

ADDR2

RS2

DDLOOP1

DDLOOP2匯編程序在匯編時,在相應(yīng)存儲區(qū)域中存入有關(guān)變量或標號的地址值,其中偏移地址或段基址均占一個字,低位字節(jié)占用第一個字節(jié)地址,高位字節(jié)占用第二個字節(jié)地址。若用DD定義變量或標號,則偏移地址占用低位字,段基址占用高位字。變量RS1,RS2經(jīng)匯編后的結(jié)果如圖2所示。圖2:(3)用字符串定義變量字符串必須用單引號引起來,其中字符的個數(shù)可以是一個,也可以是多個。注意空格也是字符(ASCII碼為20H)?!纠?】STRING1

DB

'123'

STRING2

DB

'HOWAREYOU?'

STRING3

DW

'C','DE'

變量STRING1,STRING2,STRING3經(jīng)匯編后的結(jié)果如圖3。注:對字符串的定義可用DB偽指令,也可用DW偽指令。用DW和DB定義的變量在存儲單元中存放的格式是不同的。用DW語句定義的字符串只允許包含一個或兩個字符,如果字符多于兩個時,必須用DB語句來定義。圖3:(4)用問號(?)定義不確定值的變量可為變量保留空單元,常用來存放運算的結(jié)果。

【例5】OPER1DB35H,?,0AH

OPER2DW0C0DH,?

OPER3DD?變量OPER1,OPER2,OPER3經(jīng)匯編后的結(jié)果如圖4所示。圖4:格式2的說明:與格式1的不同之處在于格式2增加了nDUP(duplicate)用于表示重復(fù)次數(shù),同時表達式需用圓括號括起。其中,重復(fù)次數(shù)n可以是常數(shù),也可以是表達式,它的值應(yīng)該是一個正整數(shù),數(shù)值范圍為1~65535,其作用是指定括號中操作數(shù)項的重復(fù)次數(shù)。括號中的操作數(shù)項

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論