![第3章 偽指令及匯編語言源程序_第1頁](http://file4.renrendoc.com/view/15da3c4ed8f95608054aeda7193f62f3/15da3c4ed8f95608054aeda7193f62f31.gif)
![第3章 偽指令及匯編語言源程序_第2頁](http://file4.renrendoc.com/view/15da3c4ed8f95608054aeda7193f62f3/15da3c4ed8f95608054aeda7193f62f32.gif)
![第3章 偽指令及匯編語言源程序_第3頁](http://file4.renrendoc.com/view/15da3c4ed8f95608054aeda7193f62f3/15da3c4ed8f95608054aeda7193f62f33.gif)
![第3章 偽指令及匯編語言源程序_第4頁](http://file4.renrendoc.com/view/15da3c4ed8f95608054aeda7193f62f3/15da3c4ed8f95608054aeda7193f62f34.gif)
![第3章 偽指令及匯編語言源程序_第5頁](http://file4.renrendoc.com/view/15da3c4ed8f95608054aeda7193f62f3/15da3c4ed8f95608054aeda7193f62f35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本章主要教學(xué)內(nèi)容1.指令的格式、功能及應(yīng)用。2.匯編語言源程序4種常見的結(jié)構(gòu)形式。3.匯編語言源程序書寫規(guī)則、語句格式及程序分段。本章主要教學(xué)目的及要求1.熟悉匯編語言的基本表達(dá)、偽指令語句及應(yīng)用。2.掌握匯編語言源程序書寫規(guī)則、語句格式及程序分段。3/8/20231一個(gè)完整程序語句類型指令(性)語句完成一定操作功能,能夠翻譯成機(jī)器代碼的語句指示性語句(偽指令語句)為匯編程序在翻譯匯編語言源程序時(shí)提供有關(guān)信息,并不翻譯成機(jī)器代碼3.1語句類型及格式3.1.1語句類型3/8/20232該程序的功能是完成兩個(gè)字節(jié)數(shù)據(jù)相加。
DATASEGMENT
;段定義開始(DATA段)
BUF1DB34H ;第1個(gè)加數(shù)
BUF2DB2AH
;第2個(gè)加數(shù)
SUMDB?
;準(zhǔn)備用來存放和數(shù)的單元
DATAENDS
;段定義結(jié)束(DATA段)
CODESEGMENT
;段定義開始(CODE段)
ASSUMECS:CODE,DS:DATA
;規(guī)定DATA、CODE分別為數(shù)據(jù)段和代碼段START:MOVAX,DATAMOVDS,AX ;給數(shù)據(jù)段寄存器DS賦值
MOVAL,BUF1 ;取第1個(gè)加數(shù)
ADDAL,BUF2
;和第2個(gè)加數(shù)相加
MOVSUM,AL ;存放結(jié)果
MOVAH,4CH INT21H ;返回DOS狀態(tài)CODEENDS
;段定義結(jié)束(CODE段)
ENDSTART ;整個(gè)源程序結(jié)束
偽指令語句指令語句3/8/202333.1.2語句格式指令性語句:格式:[名字:]操作碼[操作數(shù)[,操作數(shù)]][;注釋]偽指令語句:格式:[名字]偽操作[操作數(shù)[,操作數(shù),…]][;注釋]含義:由用戶按一定規(guī)則定義的標(biāo)識符組成:英文字母、數(shù)字、特殊符號形式:標(biāo)號和變量名字定義滿足的規(guī)則(1)數(shù)字不能作為第一個(gè)字符(2)單獨(dú)的問號(?)不能作為名字(3)最大有效長度為31(4)保留字不能作為名字使用語句的說明部分3/8/20234操作碼
含義:指明操作的性質(zhì)或功能。書寫規(guī)則:操作碼與操作數(shù)之間用空格分開。操作數(shù)含義:指定參與操作的數(shù)據(jù)。個(gè)數(shù):一般指令,1個(gè)或2個(gè),也可以沒有;偽指令和宏指令,可以有多個(gè)。書寫規(guī)則:操作數(shù)多于1個(gè)時(shí),操作數(shù)之間用逗號分開3/8/20235算術(shù)運(yùn)算表達(dá)式+-*/MOD(取余)關(guān)系運(yùn)算表達(dá)式EQLTGTGE數(shù)值常數(shù)操作數(shù)符號常數(shù)(常數(shù)用符號名代替)表達(dá)式邏輯運(yùn)算表達(dá)式ANDORXORNOT字符串3/8/20236例:D1EQU25 D2EQUX1+12 D3EQU[SI+2]
2.等號偽指令=格式與功能和EQU類似3.解除定義偽指令PURGE格式:PURGE<符號1,符號2,…,符號n>功能:解除指定符號的定義例:Y1=7
例:Y1EQU7PURGEY1Y1EQU128
EQU與=的差異:同一個(gè)程序中=可以對一個(gè)符號重復(fù)定義,EQU不能對同一個(gè)符號重復(fù)定義例:Y1=7Y1=128的定義是正確的
Y1EQU7Y1EQU128的定義是錯(cuò)誤的
3.2.1符號定義偽指令1.等值偽指令EQU格式:<符號名>EQU<表達(dá)式>功能:給符號名定義一個(gè)值、別的符號名、表達(dá)式或助記符。3.2偽指令
3/8/202373.2.2數(shù)據(jù)定義偽指令格式:[變量名]偽操作操作數(shù)[,操作數(shù),…][;注釋]功能:為操作數(shù)分配存儲單元,用變量與存儲單元相聯(lián)系偽操作一個(gè)操作數(shù)占用空間變量DB1個(gè)字節(jié)字節(jié)變量DW2個(gè)字節(jié)(1個(gè)字)字變量DD4個(gè)字節(jié)(雙字)雙字變量DF(386以上CPU)3字單元三字變量DQ4字單元四字變量。DT10個(gè)字節(jié)單元十字節(jié)變量注意:使用DT助記符時(shí),對于10進(jìn)制操作數(shù),必須給出后綴D3/8/20238操作數(shù)常數(shù)代表數(shù)據(jù)字節(jié)數(shù)據(jù)例:DATABDB18H,-1,30字?jǐn)?shù)據(jù)例:DATAWDW18H,2A45H雙字?jǐn)?shù)據(jù)例:DATADDD18H,2F3A124BH表達(dá)式代表內(nèi)存單元地址例:ADDR1DWNEXT
ADDR2DDNEXT段地址高字節(jié)偏移地址高字節(jié)偏移地址低字節(jié)偏移地址高字節(jié)段地址低字節(jié)偏移地址低字節(jié)ADDR1ADDR2字符串存放各字符的ASCII碼例:STR1DB‘ABCD’STR1DB‘A’,‘B’,‘C’,‘D’STR1DB41H,42H,43H,44H注意:字符多于2個(gè)時(shí),只能使用DB定義?只分配單元,不定義初值例:BUF1DB5,6,7,?BUF2DW56H,78H,?,345FH例:操作數(shù)用復(fù)制操作符DUP,表示操作數(shù)重復(fù)若干次
BUF1DB2DUP(2,3,4)BUF2DW1,2,3DUP(6)FF1E180045001800182A004B123A2FDATABDATAWDATAD3/8/20239分析操作符TYPE<變量或標(biāo)號>含義:計(jì)算出變量的類型值或標(biāo)號的類型值類型值:變量:1、2、4、6、8、10;標(biāo)號:-1、-2LENGTH<變量>含義:計(jì)算分配給使用DUP定義的變量的單元數(shù),其它變量的LENGTH值為1SIZE<變量>含義:計(jì)算出分配給變量的字節(jié)數(shù)值:TYPE和LENGTH的乘積
OFFSET<變量或標(biāo)號>含義:計(jì)算出變量或標(biāo)號的段內(nèi)偏移地址例:MOVSI,OFFSETDAB1SEG<變量或標(biāo)號>含義:計(jì)算出變量或標(biāo)號的段地址例:MOVAX,SEGDAB13/8/202310【例3-6】若有變量定義
DAB1DB20,20,20,20,20DAB2DB5DUP(20)
DAW1DW20,20,20,20,20DAW2DW5DUP(20)
DAD1DD20,20,20,20,20DAD2DD5DUP(20)則TYPEDAB1=1,TYPEDAB2=1TYPEDAW1=2,TYPEDAW2=2TYPEDAD1=4,TYPEDAD2=4LENGTHDAB1=1,LENGTHDAB2=5LENGTHDAW1=1,LENGTHDAW2=5LENGTHDAD1=1,LENGTHDAD2=5SIZEDAB1=1,SIZEDAB2=5SIZEDAW1=2,SIZEDAW2=10SIZEDAD1=4,SIZEDAD2=203/8/202311格式:THIS<屬性或類型>含義:將變量或標(biāo)號定義成指定的類型變量可指定為BYTE、WORD、DWORD類型標(biāo)號可指定為NEAR、FAR類型合成操作符PTR格式:<類型>PTR<表達(dá)式>含義:給表達(dá)式強(qiáng)行指定類型變量可指定為BYTE、WORD、DWORD類型標(biāo)號可指定為NEAR、FAR類型例:DA1DW345FHDA2EQUBYTEPTRDA1DA3EQUDA2+1THIS例:DATABEQUTHISBYTEDATAWDW764EH注意:變量的類型與其他操作數(shù)的匹配。例:OPR1DB23H,4AHOPR2DW127FH,25A6H
如下兩條指令是錯(cuò)誤的:
MOVAX,OPR1MOVBL,OPR2
使用PTR,如下才正確:
MOVAX,WORDPTROPR1;3/8/202312格式:
<段名>SEGMENT[定位][組合][‘類別’][屬性]┆;段體
<段名>ENDS注意:1.完整段定義由SEGMENT和ENDS這一對偽指令實(shí)現(xiàn)2.指令后的4個(gè)關(guān)鍵字用于確定段的各種屬性3.如不指定,則采用默認(rèn)參數(shù);但如指定,要按上列次序用途:在匯編語言程序中定義邏輯段,指定段的名稱和范圍,并指明段的定位類型、組合類型及類別。3.2.3段定義偽指令1.段定義3/8/202313定位類型含義:規(guī)定段的起始地址要求方式PARA:段地址從段邊界開始BYTE:段地址從字節(jié)邊界開始WORD:段地址從字邊界開始PAGE:段地址從頁邊界開始3/8/202314組合類型含義:規(guī)定本段與其他段的關(guān)系方式NONE:與其他段在邏輯上沒有關(guān)系PUBLIC:與其它同名、同類別的段相鄰地連在一起COMMON:與其他同名、同類別的段相覆蓋MEMORY:幾個(gè)邏輯段連接時(shí),本段定位在地址最高的地方STACK:此段為堆棧段,連接方式與PUBLIC段相同AT表達(dá)式:本邏輯段根據(jù)表達(dá)式求值的結(jié)果定位段地址3/8/202315類別含義:指出各程序模塊中類別相同的段,將它們連接在同一物理段內(nèi)連接方式:將所有的同類別段相鄰分配類別名稱:可以任意屬性類型含義:規(guī)定16位段或32位段表示方式USE16:表示16位段USE32:表示32位段注意:大多數(shù)MASM程序使用‘code’、‘data’和‘stack’來分別指名代碼段、數(shù)據(jù)段和堆棧段。3/8/202316ASSUME<段寄存器名>:NOTHING
;取消段性質(zhì)的規(guī)定2.指定段址偽指令
格式:ASSUME<段寄存器名>:<段名>[,<段寄存器名>:<段名>…]功能:建立段寄存器與段的缺省關(guān)系注意:ASSUME偽指令并不為段寄存器設(shè)定初值3.設(shè)置段地址值
含義:在程序的代碼段開始處進(jìn)行DS、SS、ES的段基址裝填。例:MOVAX,DATAMOVDS,AX格式:ORG〈表達(dá)式〉功能:設(shè)置某個(gè)單元的起始地址例:DATASEGMENTORG100HXDB12HYDW?
ORG200HZDD9C56HDATAENDS
4.ORG偽指令3/8/2023175.地址計(jì)數(shù)器$的使用含義:表示下一個(gè)可用單元的地址例:ORG$+8ARRAYDW1,2,$+4,3,4
假設(shè)ARRAY的偏移地址為0074H,則$+4中$的值為0078H應(yīng)用:常用來確定數(shù)組中元素的個(gè)數(shù)例:BUF1DB1,2,3,4,5
CNT1EQU$-BUF(常用)
BUF2DW1,2,3,4,5
CNT2EQU($-BUF2)/2CNT1、CNT2的值分別為數(shù)組BUF1、BUF2中數(shù)據(jù)元素的個(gè)數(shù)3/8/202318格式:.MODEL
模式選擇符功能:指明簡化段所用內(nèi)存模式模式選擇符TINY:微模式,所有數(shù)據(jù)及代碼放入同一個(gè)物理段內(nèi)SMALL:小模式,程序中只有一個(gè)數(shù)據(jù)段和一個(gè)代碼段MEDIUM:中模式,程序中有一個(gè)數(shù)據(jù)段、多個(gè)代碼段COMPACT:壓縮模式,程序中有多個(gè)數(shù)據(jù)段、一個(gè)代碼段LARGE:大模式,程序中有多個(gè)數(shù)據(jù)段、多個(gè)代碼段3.2.4簡化段定義偽指令1.模式選擇偽指令.MODEL3/8/2023192.數(shù)據(jù)段定義偽指令.DATA格式:.DATA[名字]功能:定義一個(gè)數(shù)據(jù)段注意:如果有多個(gè)數(shù)據(jù)段,則用名字區(qū)別。只有一個(gè)數(shù)據(jù)段時(shí),隱含段名為@DATA3.堆棧段定義偽指令.STACK
格式:.STACK[長度]功能:定義一個(gè)堆棧段,并形成SS及SP的初值注意:SP的默認(rèn)值為1024,隱含段名為@STACK4.代碼段定義偽指令.CODE格式:.CODE[名字]功能:定義一個(gè)代碼段注意:如果有多個(gè)代碼段,則用名字區(qū)別。只有一個(gè)代碼段時(shí),隱含段名為@CODE5.程序返回偽指令.EXIT格式:.EXIT功能:返回DOS6.程序開始偽指令.STARTUP格式:.STARTUP功能:指示程序的開始位置3/8/2023203.2.5程序開始和結(jié)束偽指令
NAME偽指令格式:NAME模塊名功能:匯編程序?qū)⒂么嗣鳛槟K名TITLE偽指令格式:TITLE文本功能:在沒有NAME時(shí),用其前6個(gè)字符作為模塊名END偽指令格式:END[標(biāo)號]功能:表明源程序的結(jié)束3/8/2023213.2.6指令集選擇偽指令
選擇指令集的指令都以點(diǎn)(.)作為引導(dǎo),程序中使用時(shí)放在段外,一般放在程序的開始部分,對整個(gè)源程序起作用。.8086:選擇8086/8088指令集,此偽指令可以省略。.286:選擇80286指令集,不包括特權(quán)指令。.286P:選擇80286指令集,包括特權(quán)指令。.287:選擇80287數(shù)字協(xié)處理器指令集。.386:選擇80386指令集,不包括特權(quán)指令。.386P:選擇80386指令集,包括特權(quán)指令。.387:選擇80387數(shù)字協(xié)處理器指令集。.486:選擇80486指令集,不包括特權(quán)指令。.486P:選擇80486指令集,包括特權(quán)指令。.586:選擇Pentium指令集,不包括特權(quán)指令。.586P:選擇Pentium指令集,包括特權(quán)指令。3/8/2023223.2.7過程定義偽指令
過程定義偽指令格式:
<過程名>PROCNEAR/FAR┆RET┆<過程名>ENDP
功能:把具有獨(dú)立功能的程序段定義為過程,供其它程序調(diào)用
3/8/2023233.3匯編語言源程序結(jié)構(gòu)
完整段定義結(jié)構(gòu):用段定義偽指令,對用到的邏輯段分別定義典型的結(jié)構(gòu):數(shù)據(jù)段名
SEGMENT
數(shù)據(jù)段名ENDS堆棧段名SEGMENT
堆棧段名ENDS代碼段名SEGMENTASSUME┅START:段地址裝填
MOVAH,4CHINT21H
代碼段名ENDSENDSTART【例3-11】求字存儲單元中兩個(gè)數(shù)之差,結(jié)果存入下一個(gè)相鄰的字單元中。NAMEEXAMPLEDATASEGMENTBUFDW3483H,4596HRESDW? DATAENDSSTACKSEGMENTSTACK‘STACK’STADW100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE.DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,BUFSUBAX,BUF+2MOVRES,AXMOVAH,4CHINT21HCODEENDSENDSTART3/8/202324簡化段定義結(jié)構(gòu)典型的結(jié)構(gòu):
.MODELSMALL.DATA…….STACK.CODESTART:MOVAX,@DATAMOVDS,AX……MOVAH,4CHINT21HENDSTART例:NAMEEXAMPLE.MODELSMALL.DATABUFDW3483H,4596HRESDW?.STACK200.CODEMOVAX,@DATAMOVDS,AXMOVAX,BUFSUBAX,BUF+2MOVRES,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年活乳鴿行業(yè)深度研究分析報(bào)告
- 加盟商申請書
- 2020-2025年中國白半透明紙行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y戰(zhàn)略研究報(bào)告
- 買保險(xiǎn)申請書
- 2025年萬能清潔膠市場調(diào)研報(bào)告
- 2025年度新型建筑工程安全員責(zé)任履行協(xié)議
- 2025年度冷鏈運(yùn)輸合同法分則實(shí)施細(xì)則
- 2025年度家用電器出口貿(mào)易合同樣本
- 2025年度合伙人分伙協(xié)議書:人工智能技術(shù)研發(fā)合伙人分伙合同
- 2025年歐式四開大門項(xiàng)目投資可行性研究分析報(bào)告
- 《纏論的實(shí)戰(zhàn)技法》課件
- 新版標(biāo)準(zhǔn)化機(jī)電專業(yè)管理體系解讀課件
- 承包魚塘維修施工合同范例
- 耶魯綜合抽動嚴(yán)重程度量表正式版
- 水利水電工程建設(shè)常見事故類型及典型事故分析(標(biāo)準(zhǔn)版)
- 《小學(xué)英語教學(xué)設(shè)計(jì)》課件全套 陳冬花 第1-10章 小學(xué)英語教學(xué)設(shè)計(jì)概述-小學(xué)英語課堂管理
- 政府采購項(xiàng)目采購需求調(diào)查指引文本
- 2024建筑用輻射致冷涂料
- 2024年浙江省公務(wù)員錄用考試《行測》題(A類)
- 《化工設(shè)備機(jī)械基礎(chǔ)(第8版)》完整全套教學(xué)課件
- 2024年江西省中考英語試題含解析
評論
0/150
提交評論