版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
匯編語(yǔ)言的基本表達(dá)及其運(yùn)行
5.1匯編語(yǔ)言和匯編程序的基本概念
5.1.1匯編語(yǔ)言匯編語(yǔ)言是一種面向CPU指令系統(tǒng)的程序設(shè)計(jì)語(yǔ)言,它采用指令系統(tǒng)的助記符來(lái)表示操作碼和操作數(shù),用符號(hào)地址表示操作數(shù)地址,因而易記、易讀、易修改,給編程帶來(lái)很大方便。用匯編語(yǔ)言編寫(xiě)的程序能夠直接利用硬件系統(tǒng)的特性,直接對(duì)位、字節(jié)、字寄存器、存儲(chǔ)單元、I/O端口等進(jìn)行處理,同時(shí)也能直接使用CPU指令系統(tǒng)和指令系統(tǒng)提供的各種尋址方式編制出高質(zhì)量的程序,這種程序不但占用內(nèi)存空間少,而且執(zhí)行速度快。
5.1.2匯編程序
用匯編語(yǔ)言編寫(xiě)的源程序在輸入計(jì)算機(jī)后,需要將其翻譯成目標(biāo)程序,計(jì)算機(jī)才能執(zhí)行相應(yīng)指令,這個(gè)翻譯過(guò)程稱為匯編,完成匯編任務(wù)的程序稱為匯編程序。有基本匯編ASM(Assembler)和宏匯編MASM(MacroAssembler)兩種。匯編程序以匯編語(yǔ)言源程序文件作為輸入,并由它產(chǎn)生兩種輸出文件:目標(biāo)程序文件和源程序列表文件。目標(biāo)程序文件經(jīng)連接定位后由計(jì)算機(jī)執(zhí)行;源程序列表文件將列出源程序、目標(biāo)程序的機(jī)器語(yǔ)言代碼及符號(hào)表。
5.2匯編語(yǔ)言源程序書(shū)寫(xiě)格式
5.2.1匯編語(yǔ)言源程序的分段結(jié)構(gòu)通常,一個(gè)匯編源程序一般應(yīng)該由3個(gè)邏輯段組成,即數(shù)據(jù)段、堆棧段和代碼段。每個(gè)邏輯段以SEGMENT語(yǔ)句開(kāi)始,以ENDS語(yǔ)句結(jié)束。整個(gè)源程序以END語(yǔ)句結(jié)束。數(shù)據(jù)段用來(lái)在內(nèi)存中建立一個(gè)適當(dāng)容量的工作區(qū),以存放常數(shù)、變量等操作數(shù)據(jù)。堆棧段用來(lái)在內(nèi)存中建立一個(gè)適當(dāng)?shù)亩褩^(qū),以便在中斷、子程序調(diào)用時(shí)使用。代碼段包括了許多以符號(hào)表示的指令,其內(nèi)容就是程序要執(zhí)行的指令。5.2.2匯編語(yǔ)言源程序的語(yǔ)句類型和語(yǔ)句格式
1.語(yǔ)句類型
8086宏匯編MASM使用的語(yǔ)句可以分成3種類型:指令語(yǔ)句:這類指令能夠產(chǎn)生目標(biāo)代碼,是CPU可以執(zhí)行的能夠完成特定功能的語(yǔ)句,主要由機(jī)器指令組成。在匯編時(shí)一條指令語(yǔ)句被翻譯成對(duì)應(yīng)的機(jī)器碼,對(duì)應(yīng)著特定的操作。偽指令語(yǔ)句:偽指令語(yǔ)句是為匯編程序和連接程序提供一些必要控制的管理性語(yǔ)句,它不產(chǎn)生目標(biāo)代碼,僅僅在匯編過(guò)程中告訴匯編程序應(yīng)如何匯編,并完成相應(yīng)的偽操作。宏指令語(yǔ)句:宏指令語(yǔ)句是由編程者按照一定的規(guī)則來(lái)定義的一種較“宏大”的指令,可包括多條指令或偽指令。2.語(yǔ)句格式一般情況下,匯編語(yǔ)言的語(yǔ)句可以由以下幾部分組成:
[名字]操作符
[操作數(shù)][;注釋]
名字是一個(gè)符號(hào),它表示本條語(yǔ)句的符號(hào)地址。一般來(lái)說(shuō),名字可以是標(biāo)號(hào)和變量,統(tǒng)稱為標(biāo)識(shí)符。注意:標(biāo)號(hào)和變量都具備3種屬性——段屬性、偏移屬性及類型屬性。操作符可以是機(jī)器指令、偽指令和宏指令的助記符。操作數(shù)字段是操作符的操作對(duì)象。操作符在完成相應(yīng)的操作時(shí)要求有一系列的操作數(shù)。當(dāng)有兩個(gè)或兩個(gè)以上的操作數(shù)時(shí),各操作數(shù)之間用逗號(hào)隔開(kāi)。注釋字段是以“;”開(kāi)頭的說(shuō)明部分,可以用英文或者中文書(shū)寫(xiě)。注釋字段是語(yǔ)句的非執(zhí)行部分。
5.38086匯編語(yǔ)言中的標(biāo)識(shí)符、表達(dá)式和運(yùn)算符
5.3.1標(biāo)識(shí)符匯編語(yǔ)言每條語(yǔ)句的第一個(gè)字段是它的名字字段,名字可以是標(biāo)號(hào)或變量,這兩者又稱為標(biāo)識(shí)符。重點(diǎn)是要掌握其組成規(guī)則和它的3個(gè)屬性。
5.3.2表達(dá)式和運(yùn)算符在表達(dá)式中,運(yùn)算符充當(dāng)著重要的角色。
8086宏匯編有算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、分析運(yùn)算符和綜合運(yùn)算符共5種。下面分別討論5種運(yùn)算符的作用:(1)算術(shù)運(yùn)算符用于完成算術(shù)運(yùn)算,有+(加法)、-(減法)、×(乘法)、/(除法)、MOD(求余)、SHL(左移)、SHR(右移)共7種運(yùn)算。(2)邏輯運(yùn)算符的作用是對(duì)其操作數(shù)進(jìn)行按位操作。邏輯運(yùn)算符有AND(與)、OR(或)、XOR(異或)和NOT(非)。(3)關(guān)系運(yùn)算符的運(yùn)算對(duì)象是兩個(gè)性質(zhì)相同的項(xiàng)目。其結(jié)果為:關(guān)系成立或不成立。有EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)共6種。
(4)分析運(yùn)算符是對(duì)存儲(chǔ)器地址進(jìn)行運(yùn)算的。有5個(gè):SEG(求段基值)、OFFSET(求偏移量)、TYPE(求變量類型)、LENGTH(求變量長(zhǎng)度)和SIZE(求字節(jié)數(shù))。
(5)綜合運(yùn)算符可以用來(lái)建立和臨時(shí)改變變量或標(biāo)號(hào)的類型以及存儲(chǔ)器操作數(shù)的存儲(chǔ)單元類型,而忽略當(dāng)前的屬性,所以又稱為屬性修改運(yùn)算符。
有6個(gè)綜合運(yùn)算符:PTR、段屬性前綴、SHORT、THIS、HIGH和LOW。
各類運(yùn)算符和常數(shù)、寄存器名、標(biāo)號(hào)、變量一起共同組成表達(dá)式。在計(jì)算具有多個(gè)運(yùn)算符的表達(dá)式值時(shí),按以下規(guī)則操作:l
優(yōu)先級(jí)高的先運(yùn)算,優(yōu)先級(jí)低的后運(yùn)算。l
當(dāng)優(yōu)先級(jí)相同時(shí),按表達(dá)式中從左到右的順序進(jìn)行運(yùn)算。l
使用括號(hào)可以提高表達(dá)式運(yùn)算的優(yōu)先級(jí)。5.4偽指令語(yǔ)句
在匯編語(yǔ)言中,偽指令是給匯編程序的命令,在匯編過(guò)程中由匯編程序進(jìn)行處理。例如定義數(shù)據(jù)、分配存儲(chǔ)區(qū)、定義段及定義過(guò)程等都采用偽指令表示。
5.4.1數(shù)據(jù)定義偽指令
數(shù)據(jù)定義偽指令用來(lái)定義一個(gè)變量的類型,并將所需要的數(shù)據(jù)放入指定的存儲(chǔ)單元中,也可以只給變量分配存儲(chǔ)單元,而不賦予特定的值。1.數(shù)據(jù)定義偽指令的一般格式為:[變量名]偽指令
操作數(shù)
[,操作數(shù)…][;注釋]2.常用的數(shù)據(jù)定義偽指令
定義字節(jié)變量偽指令DB
定義字變量偽指令DW
定義雙字變量偽指令DD
定義四字變量偽指令DQ
定義十字節(jié)變量偽指令DT5.4.2符號(hào)定義偽指令
符號(hào)定義偽指令的用途是給一個(gè)符號(hào)重新命名,或定義新的類型屬性等。這些符號(hào)可以包括匯編語(yǔ)言的變量名、標(biāo)號(hào)名、過(guò)程名、寄存器名以及指令助記符等。常用的符號(hào)定義偽指令有EQU、=、LABLE。
5.4.3段定義偽指令
段定義偽指令的用途是在匯編語(yǔ)言程序中定義邏輯段,用它來(lái)指定段的名稱和范圍,并指明段的定位類型、組合類型及類別。常用的段定義偽指令有SEGMENT、ENDS和ASSUME等。
5.4.4過(guò)程定義偽指令
在程序設(shè)計(jì)中,經(jīng)常將一些重復(fù)出現(xiàn)的語(yǔ)句組定義為子程序。子程序又稱為過(guò)程,可以采用CALL指令來(lái)調(diào)用。使用格式:過(guò)程名PROC[NEAR]/FAR
…
(語(yǔ)句系列)
RET
…(語(yǔ)句系列)過(guò)程名ENDP
調(diào)用一個(gè)過(guò)程的格式為:
CALL過(guò)程名
5.4.5結(jié)構(gòu)定義偽指令
結(jié)構(gòu)就是相互關(guān)聯(lián)的一組數(shù)據(jù)的某種組合形式。用偽指令STRUC和ENDS把相關(guān)數(shù)據(jù)定義語(yǔ)句組合起來(lái),便構(gòu)成一個(gè)完整的結(jié)構(gòu)。使用格式:結(jié)構(gòu)名
STRUC
…
(數(shù)據(jù)定義語(yǔ)句序列)結(jié)構(gòu)名ENDS5.4.6模塊定義與連接偽指令
在編寫(xiě)規(guī)模較大的匯編語(yǔ)言源程序時(shí),可以將整個(gè)程序劃分為幾個(gè)獨(dú)立的源程序,稱之為模塊。將各模塊分別進(jìn)行匯編,生成各自的目標(biāo)程序,最后將它們連接成為一個(gè)完整的可執(zhí)行程序。各模塊之間可以相互進(jìn)行符號(hào)訪問(wèn)。為了進(jìn)行模塊之間連接和實(shí)現(xiàn)相互的符號(hào)訪問(wèn),以便進(jìn)行變量傳送,通常使用以下幾個(gè)偽指令:
NAME、END、PUBLIC、EXTRN。
5.4.7程序計(jì)數(shù)器$和ORG偽指令
1.程序計(jì)數(shù)器$
字符“$”在8086宏匯編中具有一種特殊的意義,把它稱為程序計(jì)數(shù)器。表示位置計(jì)數(shù)器的當(dāng)前值,它可以在數(shù)值表達(dá)式中使用。在程序中,“$”出現(xiàn)在表達(dá)式里,它的值為程序下一個(gè)所能分配的存儲(chǔ)單元的偏移地址。
2.ORG偽指令
ORG是起始位置設(shè)定偽指令,用來(lái)指出源程序或數(shù)據(jù)塊的起點(diǎn)。利用ORG偽指令可以改變位置計(jì)數(shù)器的值。
5.5匯編語(yǔ)言程序上機(jī)過(guò)程
5.5.1匯編語(yǔ)言的工作環(huán)境及上機(jī)步驟
1.硬件環(huán)境目前8086匯編語(yǔ)言程序一般多在IBMPC/XT及其兼容機(jī)上運(yùn)行,要求機(jī)器具備基本配置即可以了。
2.軟件環(huán)境主要是指支持匯編語(yǔ)言程序運(yùn)行和幫助建立匯編語(yǔ)言源程序的一些軟件,主要包括:(1)DOS操作系統(tǒng)(2)編輯程序EDIT.COM(3)宏匯編程序MASM.EXE(4)連接程序LINK.EXE(5)調(diào)試程序DEBUG.COM
3.運(yùn)行匯編語(yǔ)言程序的步驟
(1)用編輯程序EDIT.COM建立擴(kuò)展名為.ASM的匯編語(yǔ)言源程序文件;(2)用匯編程序MASM.EXE將匯編語(yǔ)言源程序文件匯編成用機(jī)器碼表示的目標(biāo)程序文件,其擴(kuò)展名為.OBJ;(3)若在匯編過(guò)程中出現(xiàn)語(yǔ)法錯(cuò)誤,根據(jù)錯(cuò)誤信息提示(如位置、類型、說(shuō)明),用編輯軟件重新調(diào)入源程序進(jìn)行修改。無(wú)錯(cuò)誤時(shí)采用連接程序LINK.EXE把目標(biāo)文件轉(zhuǎn)化成可執(zhí)行文件,其擴(kuò)展名為.EXE;(4)生成可執(zhí)行文件后,在DOS命令狀態(tài)下直接鍵入文件名就可執(zhí)行該文件。5.6匯編語(yǔ)言程序運(yùn)行實(shí)例
本節(jié)中給出的程序是從鍵盤輸入10個(gè)字符,然后以與鍵入相反的順序?qū)?0個(gè)字符輸出到顯示屏幕上。設(shè)定源程序名為STR.ASM。5.6.1用EDIT建立匯編語(yǔ)言源程序在DOS狀態(tài)下,調(diào)用EDIT編輯程序建立文件名為STR.ASM的匯編源程序。其屏幕顯示如下圖:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療方面的計(jì)算機(jī)編程行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 國(guó)際貨運(yùn)代理行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 區(qū)塊鏈社交網(wǎng)絡(luò)行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 廣告重定向技術(shù)行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 電視機(jī)天線細(xì)分市場(chǎng)深度研究報(bào)告
- 化油器產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 頭發(fā)用手持電動(dòng)吹風(fēng)機(jī)產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 工業(yè)用烤箱產(chǎn)品供應(yīng)鏈分析
- 在線教育考核服務(wù)行業(yè)營(yíng)銷策略方案
- 保險(xiǎn)柜的保養(yǎng)或修理行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 《人工智能基礎(chǔ)》課件-AI的前世今生:她從哪里來(lái)
- 3.2 代數(shù)式的值(第1課時(shí))(課件)-2024-2025學(xué)年七年級(jí)數(shù)學(xué)上冊(cè)(人教版2024)
- 中醫(yī)師承跟師筆記50篇
- 血液透析高鉀血癥的護(hù)理查房
- 滬教版四年級(jí)上冊(cè)期中復(fù)習(xí)數(shù)學(xué)試卷(一)
- ISO28000:2022供應(yīng)鏈安全管理體系
- 新北師大單元分析二上第六單元《測(cè)量》單元教材解讀
- 2023陜西中考英語(yǔ)試卷分析
- 工程監(jiān)理工作流程圖大全WORD完整版
- 實(shí)驗(yàn)一蒸餾工業(yè)乙醇
- 精裝房驗(yàn)房項(xiàng)目表格.doc
評(píng)論
0/150
提交評(píng)論