版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、微機(wi j)技術 第十二講三峽(sn xi)大學覃 穎07176390287,共六十三頁本講課堂(ktng)講授內容:匯編語言(hu bin y yn)的基本語法共六十三頁語句(yj)類型及格式指令性語句(yj)由指令構成格式: 標號: 操作碼 操作數(shù) ;注釋【例】 START:MOV AX,DATA指示性語句由命令(偽指令)構成格式: 名字 偽指令 參數(shù) ;注釋【例】 DATA SEGMENT AT 2000H共六十三頁變量(binling)、常量、標號和表達式1、變量(binling)變量定義格式:變量名 變量定義偽指令 表達式1,表達式2, 【例】VAR1 DB 12H,34HVAR
2、2 DW 1234H,5678HVAR3 DD 12345678HVAR4 DQ 1122334455667788HVAR5 DT 11223344556677889900H共六十三頁變量(binling)、常量、標號和表達式1、變量(binling)變量具有三個屬性:段地址屬性:偏移地址屬性:類型屬性:字節(jié)DB(8 位)一個字節(jié)存儲單元字DW(16位)兩個連續(xù)字節(jié)存儲單元雙字DD(32位)四個連續(xù)字節(jié)存儲單元四字DQ(64位)八個連續(xù)字節(jié)存儲單元五字DT(80位)十個連續(xù)字節(jié)存儲單元共六十三頁變量、常量(chngling)、標號和表達式2、常量(chngling)數(shù)字常量:【例】MOV AX
3、,100DMOV BL,0FCHMOV CL,10001011B共六十三頁變量(binling)、常量、標號和表達式2、常量(chngling)字符型常量:【例】hello DB “HELLO WORLD!”ch DB Y, N,12HMOV AL,a共六十三頁變量(binling)、常量、標號和表達式2、常量(chngling)符號常量:用標示符(常量名)表示的常量。標示符命名規(guī)則:131個ASCII碼字符組成合法字符:AZ,az,09,?,$,下劃線?不能單獨作為標示符不能是獨立的保留字或運算符數(shù)字不能作為第一個字符共六十三頁變量(binling)、常量、標號和表達式2、常量(chngli
4、ng)符號常量:用標示符(常量名)表示的常量。符號常量定義格式:常量名=/EQU表達式【例】R=30PAIEQU3.1416CCEQU10001010B= 可重復定義 EQU 不可重復定義共六十三頁變量、常量(chngling)、標號和表達式3、標號(bioho)標號是指令性語句內存存放地址的符號表示。標號定義格式:標號名:匯編指令語句標號也有三個屬性:段地址、偏移地址和距離。距離屬性有FAR和NEAR兩種,可用LABEL定義:標號名LABEL距離共六十三頁變量(binling)、常量、標號和表達式4、表達式 表達式由常量、變量、標號(bioho)及連接它們的運算符組成。MASM匯編程序可以使
5、用兩種表達式,即數(shù)值表達式和地址表達式。共六十三頁變量、常量(chngling)、標號和表達式4、表達式一、數(shù)值表達式:一般由運算符連接各種( zhn)常量構成。MASM支持的常量運算符包括算術運算符、邏輯運算符和關系運算符。 共六十三頁變量、常量(chngling)、標號和表達式4、表達式1)算術運算符:包括加()、減()、乘(*)、除(/)、取模(MOD,求余數(shù))、左移(SHL,相當于乘法),右移(yu y)(SHR,相當于除法)等7種運算符。 【例】NUM DW 08H,32H +(55H SHR 2)MOV DX,1234H MOD 1000H共六十三頁變量(binling)、常量、標
6、號和表達式4、表達式2)邏輯(lu j)運算符:包括與(AND)、或(OR)、非(NOT)和異或(XOR)等4種運算符。 【例】AND AL,7FH AND 80H請注意兩個AND的區(qū)別!共六十三頁變量(binling)、常量、標號和表達式4、表達式3)關系(gun x)運算符:包括相等(EQ)、不等(NE)、小于(LT)、大于(GT)、小于或等于(LE)、大于或等于(GE)等6種運算符。 【例】MOV DX,10 LT 100匯編后指令代碼為:MOV DX,0FFFFH關系運算符運算的常量必須是無符號數(shù)。當關系成立時其結果為全1,否則為全0。共六十三頁變量、常量(chngling)、標號和表
7、達式4、表達式3)關系(gun x)運算符:【例】MOV BX,(VALUE LT 5) AND 20) OR (VALUE GE 5) AND 30) 相當于根據(jù)VALUE的值進行條件匯編:關系運算符可以和邏輯運算符組合使用。當VALUE5時匯編為:MOV BX,20當VALUE5時匯編為:MOV BX,30共六十三頁變量、常量(chngling)、標號和表達式4、表達式二、地址(dzh)表達式:地址(dzh)表達式的結果是一個存儲單元的地址(dzh)。常用的地址(dzh)表達式形式是:標號(或變量) / 數(shù)字注意:如果指令中的操作數(shù)需要用到地址表達式時,應注意其物理意義。比如將兩個地址作乘
8、/除操作就沒有意義,對不同段數(shù)據(jù)的地址相加減當然也沒有意義?!纠縈OV AX,VAR + 4共六十三頁變量、常量(chngling)、標號和表達式4、表達式表達式中可以使用(shyng)的運算符有6類,它們是算術運算符、 邏輯運算符、關系運算符、分析運算符、合成運算符、其它運算符等,其優(yōu)先級如下表所示:共六十三頁變量、常量(chngling)、標號和表達式4、表達式高優(yōu)先級低1( ), 2LENGTH,SIZE,WIDTH,MASK3PTR,OFFSET,SEG,TYPE,THIS 4*,/,MOD5,6EQ,NE,LT,LE,GT,GE7NOT8AND9OR,XOR共六十三頁偽指令(指示(
9、zhsh)性語句)1、變量(binling)定義偽指令格式:變量名 DB/DW/DD/DQ/DT 表達式, 功能:為變量分配1字節(jié)/字/雙字/四字/五字的存儲單元,并給它們賦值。說明:使用這些偽指令可以定義數(shù)值、字符串、數(shù)組等。共六十三頁偽指令(指示(zhsh)性語句)2、DUP重復子句偽指令格式:重復次數(shù) DUP (重復定義(dngy)的內容)功能:與變量定義偽指令配合,用于重復定義數(shù)據(jù)。說明:重復次數(shù)用于說明需要定義多少次括號中的重復定義的內容,常用于為變量預留存儲空間?!纠縎T1 DB 2 DUP(0)ST2 DW 2,2 DUP(?)ST3 DB 2 DUP(0,1,2,3)ST10
10、0ST3000001ST202020003?00?01?02?03共六十三頁偽指令(指示(zhsh)性語句)3、變量(binling)屬性偽指令格式:SEG 變量功能:獲得該變量所在的段地址值。【例】 MOV BX,SEG VAR1 在數(shù)據(jù)定義中變量具有5種屬性,可以用偽指令來獲得變量的相關屬性信息。1)段屬性共六十三頁偽指令(指示(zhsh)性語句)3、變量(binling)屬性偽指令格式:OFFSET 變量功能:獲得該變量所在段中的偏移地址值。【例】 MOV SI,OFFSET VAR2 在數(shù)據(jù)定義中變量具有5種屬性,可以用偽指令來獲得變量的相關屬性信息。2)偏移地址屬性共六十三頁偽指令(
11、指示(zhsh)性語句)3、變量(binling)屬性偽指令格式:TYPE 變量功能:獲得變量定義的類型?!纠?MOV AX,TYPE VAR3 在數(shù)據(jù)定義中變量具有5種屬性,可以用偽指令來獲得變量的相關屬性信息。3)類型屬性說明:類型以字節(jié)的整數(shù)倍表示,DB型為1,DW型為2,DD型為4,DQ型為8,DT型為10;NEAR型為FFFFH,F(xiàn)AR型為FFFEH 。共六十三頁偽指令(指示(zhsh)性語句)3、變量(binling)屬性偽指令格式:LENGTH 變量功能:獲得變量定義的數(shù)據(jù)元素個數(shù)。【例】 MOV AX,LENGTH VAR4 在數(shù)據(jù)定義中變量具有5種屬性,可以用偽指令來獲得變
12、量的相關屬性信息。4)長度屬性說明:只有使用DUP定義變量時才能夠得出有效的元素個數(shù),否則將得出長度為1。共六十三頁偽指令(指示(zhsh)性語句)3、變量(binling)屬性偽指令格式:SIZE 變量功能:獲得變量定義時占用的內存空間大小,以字節(jié)為單位表示。【例】 MOV AX,SIZE VAR5 在數(shù)據(jù)定義中變量具有5種屬性,可以用偽指令來獲得變量的相關屬性信息。5)大小屬性說明:SIZELENGTHTYPE 共六十三頁偽指令(指示(zhsh)性語句)3、變量(binling)屬性偽指令【例】設某數(shù)據(jù)段1000H:0000H開始存儲如下定義的各類變量:BUF1 DB 1,2,3,4,5B
13、UF2 DB 5 DUP(?)BUF3 DW 5 DUP(?)BUF4 DW 1,2,3,4,5SEG BUF11000HOFFSET BUF1 0TYPE BUF11LENGTH BUF11SIZE BUF11SEG BUF21000HOFFSET BUF2 5TYPE BUF21LENGTH BUF25SIZE BUF25SEG BUF31000HOFFSET BUF3 10TYPE BUF22LENGTH BUF25SIZE BUF210SEG BUF41000HOFFSET BUF4 20TYPE BUF42LENGTH BUF41SIZE BUF42共六十三頁偽指令(指示(zhsh)
14、性語句)4、數(shù)據(jù)類型偽指令格式(g shi):類型 PTR 表達式功能:指定表達式的數(shù)據(jù)類型。說明:該偽指令可以指定的數(shù)據(jù)類型有BYTE、WORD、DWORD三種。共六十三頁偽指令(指示(zhsh)性語句)5、符號(fho)定義偽指令格式:符號 EQU 表達式功能:將表達式的值賦給EQU左邊的符號。說明:表達式可以是常量、變量、標號、數(shù)值或地址表達式。EQU指令定義的符號是不可以被再定義的,除非使用PURGE偽指令將此定義撤銷后重新定義。共六十三頁偽指令(指示(zhsh)性語句)5、符號(fho)定義偽指令格式:符號 = 表達式功能:與EQU偽指令的功能完全相同。說明:與EQU指令的區(qū)別在于用
15、“”定義的符號可被再定義。共六十三頁偽指令(指示(zhsh)性語句)6、段定義(dngy)偽指令格式:段名SEGMENT 定位方式組合方式類別名 ;(段體) 段名 ENDS 功能:定義一個邏輯段。說明:任何一個邏輯段都是從SEGMENT開始,以ENDS結束。共六十三頁偽指令(指示(zhsh)性語句)6、段定義(dngy)偽指令定位方式:說明該段的起始地址邊界規(guī)則PAGE指定起始地址的低8位是0,稱頁邊界XXXX XXXX XXXX 0000 0000BPARA指定起始地址的低4位是0,稱段邊界(缺省)XXXX XXXX XXXX XXXX 0000BWORD指定起始地址的低2位是0,稱字邊界X
16、XXX XXXX XXXX XXXX XX00BBYTE指定起始地址為任意值XXXX XXXX XXXX XXXX XXXXB共六十三頁偽指令(指示(zhsh)性語句)6、段定義(dngy)偽指令組合方式:連接程序時設定本段與其它同名段的連接方式,適用于模塊化程序設計。PUBLIC同名段依次連接起來,形成一個連續(xù)的段COMMON同名段共用同一起始地址,相互重疊段的長度,取最長段的長度AT 表達式定位在表達式所指定的段地址(代碼段例外)共六十三頁偽指令(指示(zhsh)性語句)6、段定義(dngy)偽指令組合方式:連接程序時設定本段與其它同名段的連接方式,適用于模塊化程序設計。STACK同名段構
17、成一個連續(xù)的堆棧段,并自動初始化SPMEMORY表示本段定位在所有段的地址之上,高地址處無(NONE)不與任何段相連,各段有獨立段基址(缺省方式)共六十三頁偽指令(指示(zhsh)性語句)6、段定義(dngy)偽指令類別名:用單引號括起來的字符串 類別名不超過40個字符,用于控制段的存放次序。MASM將所有類別名相同的邏輯段按前述組合方式進行連接。共六十三頁偽指令(指示(zhsh)性語句)7、段分配(fnpi)偽指令格式:ASSUME 段寄存器:段名, 功能:說明源程序中定義的邏輯段由哪個段寄存器去尋址。段寄存器可以是CS,SS,DS,ES說明:1)ASSUME語句放在代碼段內,作為代碼段的第
18、一條指令。2)ASSUME語句只是將邏輯段與段寄存器關聯(lián)起來,并沒有給段寄存器賦值。段寄存器的賦值應在程序中用指令顯式指定。共六十三頁偽指令(指示(zhsh)性語句)7、段分配(fnpi)偽指令段寄存器的裝入:CS的裝入: CS和IP用于指向程序中即將執(zhí)行的指令地址,由匯編程序負責裝入,但需要在編程時在代碼段第一行加入一個標號,并在最后一行用END偽指令結束該標號。 CODE SEGMENTASSUME CS:CODE, START: CODE ENDSEND START共六十三頁偽指令(指示(zhsh)性語句)7、段分配(fnpi)偽指令段寄存器的裝入:DS、ES的裝入:必須通過編程,直接將
19、段基址通過通用寄存器裝入段寄存器。 CODE SEGMENTASSUME CS:CODE, DS:DATA1, ES:DATA2START:MOV AX,DATA1MOV DS,AXMOV AX,DATA2MOV ES,AX CODE ENDSEND START共六十三頁偽指令(指示(zhsh)性語句)7、段分配(fnpi)偽指令段寄存器的裝入:SS的裝入: 方法二:用程序裝入。SACK SEGMENT DW 100 DUP (?)TOP LABLE WORDSACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SACKSTART: MOV AX,SACKMOV SS,
20、AXMOV SP,OFFSET TOP 共六十三頁偽指令(指示(zhsh)性語句)7、段分配(fnpi)偽指令段寄存器的裝入:SS的裝入: 方法一:在段定義時將組合方式定義為STACK,并在ASSUME語句中,將堆棧段分配給段寄存器SS。匯編程序將該堆棧段的基址自動裝入到SS段寄存器中。SACK SEGMENT STACKDW 100 DUP (?)SACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SACKSTART: 共六十三頁偽指令(指示(zhsh)性語句)8、過程(guchng)定義偽指令格式:過程名 PROC NEAR/FAR RET 過程名 ENDP功能:
21、定義一個過程,名字由“過程名”指定說明:NEAR表示近過程,F(xiàn)AR表示遠過程,缺省為NEAR。共六十三頁偽指令(指示(zhsh)性語句)9、LABLE偽指令格式:名稱(mngchng) LABEL 類型/距離說明: LABEL偽指令用于給已定義的變量或標號取一個別名,并可重新定義它的類型或距離屬性。別名功能:VARB LABLE BYTEVARW DW 1234H,5678H改變調用距離功能:FNEXT LABLE FARNEXT:MOV AX,BX共六十三頁偽指令(指示(zhsh)性語句)10、屬性指定(zhdng)操作偽指令格式:THIS 類型功能:用來給后續(xù)數(shù)據(jù)定義新的類型。VARB E
22、QU THIS BYTEVARW DW 1234H,5678H共六十三頁偽指令(指示(zhsh)性語句)11、定位(dngwi)偽指令格式:ORG 表達式功能:指定后續(xù)代碼或數(shù)據(jù)的起始(偏移)地址。DATA SEGMENTORG 1000HVAR1 DB 12H,34HORG 2000HVAR2 DW 10 DUP(?)DATA ENDS共六十三頁偽指令(指示(zhsh)性語句)12、當前(dngqin)位置計數(shù)器$ 在匯編程序時,用$表示當前位置計數(shù)器(偏移地址),方便程序編寫和地址計算。DATA SEGMENTSTRING1 DB “BCDEFGHIJKLMOPR”COUNT = $ -
23、STRING1DATA ENDS共六十三頁偽指令(指示(zhsh)性語句)13、END偽指令格式(g shi):END 標號名功能:表明源程序結束。說明:一般放在源程序的最后一行,一個程序模塊只允許有一個END語句。共六十三頁簡化(jinhu)段偽指令1、內存模式(msh)語句.MODEL格式:.MODEL 模式類型功能:指定數(shù)據(jù)段和代碼段允許使用的長度。說明:模式類型也稱為內存模式、尋址模式,它表示如何在內存中為程序、數(shù)據(jù)、堆棧等分配空間并存取它們。共有7種模式類型。共六十三頁簡化(jinhu)段偽指令1、內存(ni cn)模式語句.MODELTINY:微模式(CSDSSSES)。所有數(shù)據(jù)及
24、代碼放在同一個物理段中,數(shù)據(jù)訪問都為NEAR類型,整個程序小于64KB,生成的可執(zhí)行文件擴展名為.COM,只在DOS操作系統(tǒng)下使用。SMALL:小模式(SSDSESCS)。所有數(shù)據(jù)放在一個64KB的物理段中(包括數(shù)據(jù)和堆棧),所有代碼則放在另一個64KB的物理段中。共六十三頁簡化(jinhu)段偽指令1、內存(ni cn)模式語句.MODELMEDIUM:中模式(數(shù)據(jù)小,程序大)。所有數(shù)據(jù)放在一個64KB的物理段中,代碼超過64KB時可以放在多個物理段中,程序中轉移或調用類型可以為FAR型。COMPACT:緊湊模式或壓縮模式(數(shù)據(jù)大,程序小)。所有代碼放在一個64KB的物理段中,程序中的轉移或
25、調用類型為NEAR。數(shù)據(jù)超過64KB時可以放在多個物理段中。共六十三頁簡化(jinhu)段偽指令1、內存(ni cn)模式語句.MODELLARGE:大模式(數(shù)據(jù)大,程序大)。代碼和數(shù)據(jù)都可以超過64KB,可放在多個物理段中,數(shù)據(jù)和代碼都可以是遠程訪問類型。HUGE:巨模式(數(shù)據(jù)巨大,程序大)。數(shù)據(jù)段中單個數(shù)據(jù)項的大小可以超過64KB,代碼段允許超過64KB,即有多個代碼段和數(shù)據(jù)段,都允許遠程訪問。共六十三頁簡化(jinhu)段偽指令1、內存(ni cn)模式語句.MODELFLAT:平面模式。所有代碼和數(shù)據(jù)被放在一個段中,但段內地址不再是16位,而是32位,所以整個程序可達4GB大小。MAS
26、M6.0以上匯編程序支持,可以在WINDOWS操作系統(tǒng)下使用。共六十三頁簡化(jinhu)段偽指令2、簡化(jinhu)段定義語句格式:.CODE 段名功能:表明其下面的指令是代碼段部分。說明:段名用于區(qū)分不同的代碼段,省略情況下默認段名為_TEXT。代碼段定義共六十三頁簡化(jinhu)段偽指令2、簡化段定義(dngy)語句格式:.STACK 字節(jié)數(shù)功能:定義一個用戶自己的堆棧段。說明:堆棧段的默認段名為STACK,“字節(jié)數(shù)”如果不寫則默認為1KB。堆棧段定義共六十三頁簡化(jinhu)段偽指令2、簡化(jinhu)段定義語句格式:.DATA 段名 .DATA? 段名 .CONST 段名功能
27、:表明其下面內容是數(shù)據(jù)段定義的變量或存儲空間預留。說明: “.DATA?” 定義未初始化的數(shù)據(jù)段; “.CONST”定義一個常數(shù)數(shù)據(jù)段;段名用于與其他數(shù)據(jù)段區(qū)分,省略情況下默認段名分別是_DATA/_BSS/CONST。數(shù)據(jù)段定義共六十三頁簡化(jinhu)段偽指令3、程序(chngx)開始偽指令.STARTUP格式:.STARTUP功能:用于指示程序開始位置,自動對DS,SS,SP寄存器進行初始化。共六十三頁簡化(jinhu)段偽指令4、程序(chngx)返回偽指令.EXIT格式:.EXIT功能:退出本程序,返回DOS操作系統(tǒng)。說明:其功能可以用如下兩條指令來代替:MOV AH,4CHINT 21H共六十三頁匯編語言(hu bin y yn)宏指令 宏是程序設計的一種(y zhn)方式,它把一段程序代碼用一個特定標識符(宏名)來表示。在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45171-2024塑料類食品接觸材料及制品在微波加熱條件下與食品接觸面溫度的測定
- 人教版八年級物理下冊《第七章力》單元檢測卷及答案
- 開發(fā)具有抗蟲特性的轉基因作物品種
- 新高考走班制選課排課解決方案
- 高一化學達標訓練:第四單元太陽能、生物質能和氫能的利用
- 2024屆江蘇省淮陰區(qū)高三二診模擬考試數(shù)學試卷含解析
- 2024高中物理第四章牛頓運動定律3牛頓第二定律課后作業(yè)含解析新人教版必修1
- 2024高中語文第一課走進漢語的世界第2節(jié)古今言殊-漢語的昨天和今天訓練含解析新人教版選修語言文字應用
- 2024高考化學一輪復習第1章認識化學科學章末化學素材與命題架構學案魯科版
- 2024高考地理一輪復習專練64區(qū)域能源礦產資源的綜合開發(fā)利用含解析新人教版
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗收規(guī)范
- 2024年大學試題(宗教學)-佛教文化筆試歷年真題薈萃含答案
- 乙肝 丙肝培訓課件
- 責任制整體護理護理
- 一年級科學人教版總結回顧2
- 精神發(fā)育遲滯的護理查房
- 有效排痰的護理ppt(完整版)
- 魯教版七年級數(shù)學下冊(五四制)全冊完整課件
- 算法向善與個性化推薦發(fā)展研究報告
- 聚合物的流變性詳解演示文稿
- 電氣設備預防性試驗安全技術措施
評論
0/150
提交評論