資源描述:
《匯編語言程序設計匯編語言》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章匯編語言程序設計1本章講述:4.1匯編語言程序格式4.2偽指令語句4.3DOS系統(tǒng)功能調(diào)用和BIOS功能調(diào)用4.4程序設計方法4.5宏匯編和條件匯編28086匯編語言程序的一個例子MY_DATASEGMENT;定義數(shù)據(jù)段SUMDB?;為符號SUM保留一個字節(jié)MY_DATAENDS;定義數(shù)據(jù)段結(jié)束MY_CODESEGMENT;定義碼段ASSUMECS:MY_CODE,;規(guī)定CS和DS的內(nèi)容DS:MY_DATAPORT_VALEQU3;端口的符號名GO:MOVAX,MY_DATA;DS初始化為MY_DATAMOVDS,AXMOVS
2、UM,0;清SUM單元CYCLE:CMPSUM,100;SUM單元與100相比較JNANOT_DONE;若未超過,轉(zhuǎn)至NOT_DONEMOVAL,SUM;若超過,把SUM單元的內(nèi)容OUTPORT_VAL,AL;通過AL輸出HLT;然后停機NOTDONE:INAL,PORT_VAL;未超過時,輸入下一個字節(jié)ADDSUM,AL;與以前的結(jié)果累加JMPCYCLE;轉(zhuǎn)至CYCLEMYCODEENDS;碼段結(jié)束ENDGO;整個程序結(jié)束3由上例看出8086匯編的一個語句行由以下4個部分組成:標號(或名稱)操作碼操作數(shù);注釋各部分之間至少要用一個
3、空格作為間隔。IBM宏匯編對于語句行的格式是自由的,但如果寫成格式化就便于閱讀,建議讀者按格式化來寫語句行。另外,IBM宏匯編并不要求一個語句只能寫一行,一個語句可以有后續(xù)行,規(guī)定以字符“&”作為后續(xù)行的標志。44.1匯編語言程序格式4.1.1指令性語句與偽指令(指示性)語句指令性語句標號:指令助記符操作數(shù),操作數(shù);注釋偽指令語句名字偽指令助記符操作數(shù),操作數(shù);注釋54.1.2數(shù)據(jù)項常數(shù)、變量和標號常數(shù)沒有任何屬性的純數(shù)值。在匯編期間,它的值已能完全確定,在程序運行中.值也不會發(fā)生變化。它可以有以下幾種類型:二進制數(shù),八進制數(shù),十進
4、制數(shù),十六進制數(shù)實數(shù):它由整數(shù)、小數(shù)和指數(shù)3部分組成,字符串常數(shù):用引號括起來的一個或多個字符。6變量代表存放在某些存儲單元的數(shù)據(jù),這些數(shù)據(jù)在程序運行期間隨時可以修改。變量的屬性段屬性(SEG):表示變量存放在哪一個邏輯段中(即變量所在段的段基值);偏移量屬性(OFFSET):表示變量在邏輯段中離段起始點的字節(jié)數(shù);類型屬性(TYPE):表示變量占用存儲單元的字節(jié)數(shù)。7標號標號是一條指令目標代碼的符號地址,它常作為轉(zhuǎn)移指令(含子程序調(diào)用指令)的操作數(shù)。段屬性(SEG)、偏移量(OFFSET)、距離屬性(NEAR、FAR)84.1.3表
5、達式表達式(Expressions)是由運算對象及運算符成。粗略地說,一個表達式是一個由操作數(shù)和運算符組合的序列,在匯編時它能產(chǎn)生一個值。92.運算符(Operators)IBM宏匯編通常有以下幾種運算符:①算術(shù)運算符(ArithmeticOperators);②邏輯運算符(LogicalOperators);③關(guān)系運算符(RelationalOperators);④數(shù)值返回運算符(AnalyticOperators);⑤修改屬性運算符(SyntheticOperators);⑥其它運算符10(1)算術(shù)運算符這是讀者十分熟悉的運算符
6、--+(加)、-(減)、*(乘)、/(除)運算符。另一個算術(shù)運算符是MOD(求余),它產(chǎn)生除法以后的余數(shù)。因此19/7是2(商是2),而19MOD7是5(余數(shù)是5)。算術(shù)運算符應用于數(shù)字操作數(shù),結(jié)果也是數(shù)字的。當算術(shù)運算符應用于存儲器即地址操作數(shù)時其規(guī)則就更加嚴格:只有當結(jié)果有明確的、有意義的物理解釋時,這些運算才是有效的。11(2)邏輯運算符按位操作的邏輯運算符有:AND(與)、OR(或)、XOR(異或)和NOT(非)。邏輯運算的操作數(shù)只能是數(shù)字的,而且結(jié)果是數(shù)字的。存儲器地址操作數(shù)不能進行邏輯運算。注意:AND、OR、XOR和N
7、OT,也是8086指令的助記符。但是,作為IBM宏匯編的運算符是在程序匯編時計算的。而作為指令的助記符,則是在程序執(zhí)行時計算的。12(3)關(guān)系運算符在IBM宏匯編中有以下關(guān)系運算符:①相等EQ(Equal);②不等NE(NotEqual);③小于LT(LessThan);④大于GT(GreaterThan);⑤小于或等于LE(LessThanorEqual);⑥大于或等于GE(GreaterThanorEqual)。13(4)數(shù)值返回運算符分析運算符可以把存儲器操作數(shù)分解為它的組成部分,如它的段值SEG、段內(nèi)偏移量OFFSET、類型
8、TYPE、長度LENGTH和大小SIZE。(5)屬性修改運算符屬性修改運算符可以由已經(jīng)存在的存儲器操作數(shù)生成一個段值與偏移量相同、而類型不同的新的存儲器操作數(shù)。如段前綴、PTR、THIS、SHORT、HIGH/LOW等。14(6)其它