




已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
4.1 匯編語言的格式 4.2 語句行的構(gòu)成 4.3 指示性語句(Directive statements) 4.4 指令語句 4.5 匯編語言程序設(shè)計及舉例,退出,第4章 匯編語言程序設(shè)計,4.1 匯編語言的格式,8086的匯編語言的源程序是分段的,由若干個段形成一個源程序。源程序的一般格式為: NAME1 SEGMENT 語句 語句 NAME1 ENDS,NAME2 SEGMENT 語句 語句 NAME2 ENDS END 標(biāo)號,4.2 語句行的構(gòu)成,4.2.1 標(biāo)記(Token) 1IBM宏匯編的字符集 IBM宏匯編中所使用的字符集僅是ASCII和EBCDIC(擴(kuò)展的BCD碼)字符集的一個子集。它由以下幾部分組成: (1)字母 (2)數(shù)字 (3)特殊字符 2界符(Delimiters) 界符是一些特殊字符,利用它們可以表明某個標(biāo)記的結(jié)束,它們本身也有一定的意義,這一點(diǎn)就與分隔符(空格)不同。,3常量(Constants) 凡是出現(xiàn)在8086源程序中的固定值(它在程序運(yùn)行期間不會變化),就稱為常量。 IBM宏匯編中允許的常量有數(shù)字常量和字符串常量兩種。 (1)數(shù)字(整數(shù))常量 二進(jìn)制常量 以字母B結(jié)尾的由一串“0”和“1”組成的序列。例如,00101100B。 十進(jìn)制常量 由若干個0到9的數(shù)字組成的序列,可以以字母D作結(jié)尾,或沒有任何字母作結(jié)尾。例如,1234D或1234。, 八進(jìn)制常量 以字母Q結(jié)尾,由若干個0到7的數(shù)字組成的序列。例如255Q、377Q等。 十六進(jìn)制常量 以字母H結(jié)尾,由若干個09的數(shù)字或AF的字母所組成的序列。 為了避免與標(biāo)識符相混淆,十六進(jìn)制數(shù)在語句中必須以數(shù)字打頭。所以,凡是以字母AF開始的十六進(jìn)制數(shù),必須在前面加上數(shù)字0。例如56H、0BA3FH等。,(2)字符串常量 字符串常量是由包含在單引號內(nèi)的1至2個ASCII字符構(gòu)成的。匯編程序把它們表示成一個字節(jié)序列,一個字節(jié)對應(yīng)一個字符,把引號中的字符翻譯成它的ASCII碼值。例如A等價于 41H,AB等價于4142H。,4標(biāo)識符(Identifiers) 標(biāo)識符是由程序員自由建立起來的、有特定意義的字符序列。 一個標(biāo)識符是由最多為31個字母、數(shù)字及規(guī)定的特殊字符(? _ $)等組成的,且不能用數(shù)字打頭(以免與十六進(jìn)制數(shù)相混淆)。 5保留字(Reserved words) 保留字看上去像標(biāo)識符,但是它們在語言中有特殊的意義,而且不能用它們作為標(biāo)識符。實(shí)際上凡是8086的指令助記符、匯編語言中的命令(偽指令)、寄存器名等都是保留字。,6注釋(Comment) 為了使匯編語言的源程序更便于閱讀和理解,常在源程序中加上注釋。注釋是在分號(;)后面的任意的字符序列,直到行的結(jié)尾。在匯編時,匯編程序?qū)λ鼈儾⒉贿M(jìn)行處理。在可打印的文件中,注釋和源程序一起打印。,4.2.2 符號(Symbol) 在匯編語言源程序中,為了使程序更具有普遍性,及便于程序的修改,用戶常用符號(Symbol)等代替存儲單元、數(shù)據(jù)、表達(dá)式等等。 在實(shí)際使用中的符號可以分成五類,即寄存器、變量、標(biāo)號、數(shù)、其它。 每個符號都具有一定的屬性,以允許匯編程序使用它來代表所需的信息。,4.2.3 表達(dá)式(Expressions) 表達(dá)式是由上面討論過的標(biāo)記(Token)、符號(Symbol)通過運(yùn)算符組合起來的。 1操作數(shù)(Operands) 一個操作數(shù)或者是一個寄存器名,或是一個常量(數(shù)字常量或字符串常量),或是一個存儲器操作數(shù)。 (1)常量操作數(shù) (2)存儲器操作數(shù),2運(yùn)算符(Operators) 算術(shù)運(yùn)算符(Arithmetic Operators); 邏輯運(yùn)算符(Logical Operators); 關(guān)系運(yùn)算符(Relational Operators); 分析運(yùn)算符(Analytic Operators); 合成運(yùn)算符(Synthetic Operators);,4.2.4 語句(Statements) 一個匯編語言的源程序是由一條條語句組成的,語句就是完成一個什么動作的說明。,4.3 指示性語句(Directive statements),4.3.1 符號定義語句 1等值語句EQU 2等號(Equal sign)=語句 3解除語句PURGE,4.3.2 數(shù)據(jù)定義語句 數(shù)據(jù)定義語句,為一個數(shù)據(jù)項(xiàng)分配存儲單元,用一個符號名與這個存儲單元相聯(lián)系,且為這個數(shù)據(jù)提供一個任選的初始值。 與數(shù)據(jù)項(xiàng)相聯(lián)系的符號名稱為變量。數(shù)據(jù)定義語句的例子為: THING DB ? ; 定義一個字節(jié) BIGGER_THING DW ? ; 定義一個字 BIGGEST_THING DD ? ; 定義一個雙字,THING是一個符號名,它與在存儲器中的一個字節(jié)相聯(lián)系,即它是一個字節(jié)變量。BIGGER_THING也是一個符號名,它與在存儲器中的一個字相聯(lián)系,即它是一個字變量。BIGGEST_THING也是一個符號名,它與在存儲器中的一個雙字相聯(lián)系,即它是一個雙字變量。 可以用DB數(shù)據(jù)定義語句在內(nèi)存中定義一個字符串。字符串中的每一個字符用它的ASCII碼表示為一個字節(jié),故字符串的定義必須用DB命令。有兩種定義字符串的方法:一種是字符串中的每一個字符分別定義,每一個字符之間用逗號分隔;另一種方法是在整個字符串的前后都加單引號。,4.3.3 段定義語句 8086的存儲器是分段的,所以8086必須按段來組織程序和利用存儲器。這就需要有段定義語句。段定義的主要命令有(1)SEGMENT,(2)ENDS,(3)ASSUME,(4)ORG。 SEGMENT和ENDS語句把匯編語言源程序分成段。這些段就相應(yīng)于存儲器段,在這些存儲器段中,存放相應(yīng)段的目標(biāo)碼。,4.3.4 過程定義語句 過程是程序的一部分,它們可被程序調(diào)用。每次可調(diào)用一個過程。當(dāng)過程中的指令執(zhí)行完后,控制返回調(diào)用它的地方。 在8086中調(diào)用過程和從過程返回的指令是CALL和RET。這些指令可以有兩種情況:段內(nèi)的和段交叉的。 段交叉指令把過程應(yīng)該返回處的段地址和段內(nèi)偏移量這兩者都入棧保護(hù)(CALL指令)和退棧(RET指令)。 段內(nèi)的調(diào)用與返回指令只入棧和退棧段內(nèi)的地址偏移量。,過程定義語句的格式為: PROCEDURE_NAME PROC NEAR 或 PROCEDURE_NAME PROC FAR RET PROCEDURE NAME ENDP,用段內(nèi)CALL指令調(diào)用的過程,必須用段內(nèi)的RET指令返回,這樣的過程是NEAR過程;用段交叉CALL指令調(diào)用的過程,必須用段交叉RET指令返回,這樣的過程是FAR過程。,4.3.5 結(jié)束語句 除了一個例外以外,每一個結(jié)束語句(Termination Statements)都與某個開始語句成對出現(xiàn)。 唯一的例外就是END語句,它標(biāo)志著整個源程序的結(jié)束。,4.4 指令語句,4.4.1 指令助記符 大多數(shù)指令助記符(Instruction Mnemonics)與8086指令的符號操作碼名相同。,4.4.2 指令前綴 8086指令,允許指令用一個或多個指令前綴(Instruction Prefixes)開始。有三種可能的前綴:(1)段超越(Segment override),(2)重復(fù)(Repeat),(3)鎖定(Lock)。 4.4.3 操作數(shù)尋址方式 8086 CPU提供了各種操作數(shù)尋址方式,IBM宏匯編在寫指令語句時,每一種尋址方式都有一種表達(dá)式。,4.5 匯編語言程序設(shè)計及舉例,4.5.1 算術(shù)運(yùn)算程序設(shè)計(直線運(yùn)行程序) 最簡單的程序是沒有分支、沒有循環(huán)的直線運(yùn)行程序。 4.5.2 分支程序設(shè)計 在一個實(shí)際的程序中,程序始終是直線執(zhí)行的情況是不多見的,通常都會有各種分支。,4.5.3 循環(huán)程序設(shè)計 在程序中,往往要求某一段程序重復(fù)執(zhí)行多次,這時候就可以利用循環(huán)程序結(jié)構(gòu)。一個循環(huán)結(jié)構(gòu)由以下幾部分組成: (1)循環(huán)體:就是要求重復(fù)執(zhí)行的程序段部分。其中又分為:循環(huán)工作部分和循環(huán)控制部分。循環(huán)控制部分每循環(huán)一次檢查循環(huán)結(jié)束的條件,當(dāng)滿足條件時就停止循環(huán),往下執(zhí)行其它程序。,(2)循環(huán)結(jié)束條件:在循環(huán)程序中必須給出循環(huán)結(jié)束條件,否則程序就會進(jìn)入死循環(huán)。常見的循環(huán)是計數(shù)循環(huán),當(dāng)循環(huán)了一定次數(shù)后就結(jié)束循環(huán)。在微型機(jī)中,常用一個內(nèi)部寄存器(或寄存器對)作為計數(shù)器,通常這個計數(shù)器的初值置為循環(huán)次數(shù),每循環(huán)一次令其減1,當(dāng)計數(shù)器減為0時,就停止循環(huán)。也可以將初值置為0,每循環(huán)一次加1,再與循環(huán)次數(shù)相比較,若兩者相等就停止循環(huán)。循環(huán)結(jié)束條件還可以有好多種。,(3)循環(huán)初態(tài):用于循環(huán)過程的工作單元,在循環(huán)開始時往往要置以初態(tài),即分別給它們賦一個初值。循環(huán)初態(tài)又可以分成兩部分,一是循環(huán)工作部分初態(tài),另一是結(jié)束條件的初態(tài)。例如,要設(shè)地址指針,要使某些寄存器清零,或設(shè)某些標(biāo)志等等。循環(huán)結(jié)束條件的初態(tài)往往置為循環(huán)次數(shù)。置初態(tài)也是循環(huán)程序的重要的一部分,不注意往往容易出錯。,4.5.4 字符串處理程序設(shè)計 1確定字符串的長度 系統(tǒng)中字符串的長度是不固定的。通常以某個特殊字符作為結(jié)束標(biāo)志,例如有的用回車符(CR),有的用字符$。但在對字符串操作時就要確定它的長度。,2加偶校驗(yàn)到ASCII字符 標(biāo)準(zhǔn)的ASCII碼字符集用七位二進(jìn)制編碼來表示一個字符,而在微機(jī)中通常用一字節(jié)(8位)來存放一個字符,它的最高位始終為零。但字符在傳送時,特別是在串行傳送時,由于傳送距離長容易出錯,就要進(jìn)行校驗(yàn)。對一個字符的校驗(yàn)常用奇偶校驗(yàn),即用最高位作為校驗(yàn)位,使得每個
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙征收土地協(xié)議書
- 單位窗簾洗滌協(xié)議書
- 商鋪合伙投資協(xié)議書
- 公司資產(chǎn)轉(zhuǎn)賣協(xié)議書
- 2025年工程法規(guī)考試在線學(xué)習(xí)資源及試題及答案
- 哥倆蓋房調(diào)解協(xié)議書
- 合同數(shù)量變更協(xié)議書
- 古代房屋捐贈協(xié)議書
- 勞動合同附帶協(xié)議書
- 財務(wù)管理未來趨勢研究試題及答案2025
- 高中地理學(xué)業(yè)水平合格性考試必修二知識點(diǎn)總結(jié)(會考)
- 職業(yè)升學(xué)就業(yè)協(xié)議書
- 旅行導(dǎo)游協(xié)議書
- 2025年工程管理知識試題及答案
- 2025屆百師聯(lián)盟高三下學(xué)期二輪復(fù)習(xí)聯(lián)考(三)地理試題(含答案)
- 節(jié)目腳本委托合同協(xié)議
- 2024年山東濟(jì)南先行投資集團(tuán)有限責(zé)任公司招聘考試真題
- 江蘇省揚(yáng)州市邗江區(qū)2025年初三中考一模考試英語試題含答案
- 產(chǎn)褥期保健及護(hù)理課件
- 陜西省西安市2025屆中考模擬英語檢測試題(附答案)
- 2025-2030消防車產(chǎn)業(yè)規(guī)劃專項(xiàng)研究報告
評論
0/150
提交評論