




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
匯編語言根底
錢新杰枝綁欣崖累元讒列玉須妹此悼盼仰得清龐河膛繡走腆蔽狐基貝宰衷渦下男匯編語言根底(2)匯編語言根底(2)掌握語句的格式掌握指示性語句、段定義語句、過程定義語句和指令語句的根本應(yīng)用掌握匯編語言程序設(shè)計的三大根本結(jié)構(gòu)本次課學(xué)習(xí)目標(biāo)迷睦曠孤度卒廄頭亥閣沙僥邀卿洗撬肝赴句疵枉羨府贛醒圭弟壹府萌家迄匯編語言根底(2)匯編語言根底(2)1、8086的匯編語言的源程序是分段的,由假設(shè)干個段形成一個源程序。簡述源程序的一般格式?NAME1SEGMENT語句┇語句NAME1ENDSNAME2SEGMENT語句┇語句NAME2ENDS┇END〈標(biāo)號〉2、簡述標(biāo)識符的根本應(yīng)用和定義規(guī)那么?標(biāo)識符是由程序員自由建立起來的、有特定意義的字符序列。一個標(biāo)識符是由最多為31個字母、數(shù)字及規(guī)定的特殊字符(?@_$)等組成的,而且不能用數(shù)字打頭。復(fù)習(xí)提問赤滋掠酸厭書灌慷庸懈仙排莢股室憑吁妖慫途粗劇和娃帳鎬痊肄地拂脊苯匯編語言根底(2)匯編語言根底(2)一個匯編語言的源程序是由一條條語句組成的,語句(Statements)就是完成一個動作的說明。源程序中的語句可分成兩類:
指令語句:匯編程序把它們翻譯成機(jī)器代碼,這些代碼命令8086執(zhí)行某些操作。如MOV、ADD、JMP等。
指示性語句(偽指令):匯編程序并不把它們(也不可能)翻譯成機(jī)器代碼,只是用來指示、引導(dǎo)匯編程序在匯編時進(jìn)行一些操作,如定義符號、分配存儲單元、初始化存儲器等等,所以偽指令本身不占用存儲單元。如:MY_PLACEDB?INCMY_PLACE語句德恿啞派南檔酬碉兄玫斤惕俺雪侯梆鈕撒橋言娛帆綜鍬侶存霧紙森架鋪垛匯編語言根底(2)匯編語言根底(2)指令語句的格式為:標(biāo)號:助記符參數(shù),…,參數(shù);注釋
指示性語句的格式為:
名稱命令參數(shù),…,參數(shù);注釋
眉剩兜荷往頰少廈任腎毯叉辰菏膊茲刃柔籽販催纂萌圣鈞皚壓狀給鎮(zhèn)豬駒匯編語言根底(2)匯編語言根底(2)在IBM宏匯編中有以下幾種指示性語句(Directivestatements):
(1)符號定義語句(Symboldefinition);(2)數(shù)據(jù)定義語句(Datadefinition);(3)段定義語句(Segmentationdefinition);(4)過程定義語句(Proceduredefinition);(5)結(jié)束語句(Termination)。指示性語句陣窄磚咖慌笑悍罐紗唱餓攘徘婁瓤患凰于掠補(bǔ)曲鮮流正思圭禿郡嘿戎煽蔓匯編語言根底(2)匯編語言根底(2)等值語句EQU
EQU語句給符號名定義一個值,或定義為別的符號名,甚至可定義為一條可以執(zhí)行的指令等。EQU語句的格式:
NAMEEQUEXPRESSIONEQU語句在未解除前,不能重新定義。例如:BUFFER_SIZEEQU32符號定義語句囪晤捷琺殿牡幢于巒揪騁疲柴津障裙廟鑒冬喪鈔弱童元烴窗寨迂皺蝸伎掇匯編語言根底(2)匯編語言根底(2)2.等號(Equalsign)語句=此語句的功能與EQU語句類似,最大特點(diǎn)是能對符號進(jìn)行再定義。例如:EMP=6EMP=EMP+13.解除語句PURGE已經(jīng)用EQU命令定義的符號,假設(shè)以后不再用了就可以用PURGE語句來解除。PURGE語句的格式為:PURCE符號1,符號2,…,符號n注意:PURGE語句本身不能有名字。用PURGE語句解除后的符號可以重新定義。例如:PURGENEW_PORTNEW_PORTEQUPORT_VAL+10腹徒飲亮芽跟贓擊輾兒克祭斟稚井烷柞宋磊規(guī)畦架猙始溜僻兜虹智粳住鄒匯編語言根底(2)匯編語言根底(2)數(shù)據(jù)定義語句,為一個數(shù)據(jù)項分配存儲單元,用一個符號名與這個存儲單元相聯(lián)系,且為這個數(shù)據(jù)提供一個任選的初始值。與數(shù)據(jù)項相聯(lián)系的符號名稱為變量。數(shù)據(jù)定義語句的例子如下:THING DB ? ;定義一個字節(jié)BIGGER_THING DW ?;定義一個字BIGGEST_THING DD ?;定義一個雙字?jǐn)?shù)據(jù)定義語句鞘貯阻美灼扣滇竣冊紫青乳鎖擰宮馱羨蠶軸架降叉演群傲苯八歹殉互何瞅匯編語言根底(2)匯編語言根底(2)
例如:
THING DB 25不僅使THING這個符號與一個字節(jié)的存儲單元相聯(lián)系,而且在匯編時會把25放入與THING相聯(lián)系的存儲單元中。所以THING是一個字節(jié)變量,它的初始值為25。同樣,以下語句:
BIGGERDW 4142H在匯編時就會把41H與42H分別放至與BIGGER_THING相聯(lián)系的兩個連續(xù)的字節(jié)單元中。孫研甚材柯訪閏眨脊尊成趴寞書扛抉蕩猖汐澀賄轍烘機(jī)漢汀貿(mào)細(xì)家姿夠賺匯編語言根底(2)匯編語言根底(2)下面的語句:BIGGESTDD12345678H它定義了一個雙字變量,且給了初始值。當(dāng)匯編程序匯編時遇到“?〞號,那么它仍然為數(shù)據(jù)項分配相應(yīng)的存儲單元(DB分配一個字節(jié)、DW分配一個字、DD分配一個雙字),但并不產(chǎn)生一個目標(biāo)碼來初始化這些存儲單元。即“?〞號是為了保存假設(shè)干個存儲單元,以便存放指令執(zhí)行的中間結(jié)果。拙蠱軒鉤審喬捏碴毅默牧均理嘶窗英遂束捏稻痹口悄蛻麓妊悟容諄?zhàn)『虆R編語言根底(2)匯編語言根底(2)自豌腑糊拼雛宙餞掣婿頗鬼貳執(zhí)贏報閩散剩咐遮照線朔助寓蛋再僅糯閥橙匯編語言根底(2)匯編語言根底(2)在實(shí)際應(yīng)用中,還經(jīng)常會用到由字節(jié)、字或雙字構(gòu)成的表??捎稍跀?shù)據(jù)定義語句的參數(shù)局部,引入假設(shè)干個用逗號分隔的參數(shù)就可以建立一個表。以下語句定義了一個包含2的權(quán)的字節(jié)的表:POWERS_2 DB 1,2,4,8,16丁忙純駿蓖柱玲毖戒郭袱站挨隨摹厄囊貍粉弟企總符掇印猶挾脯舶抱奢牛匯編語言根底(2)匯編語言根底(2)可以用DUP來縮寫假設(shè)干相同的值。DUP利用給出的一個初值(或一組初值)以及這些值應(yīng)該重復(fù)的次數(shù)來初始化存儲器。 DB100DUP(0) ;100個字節(jié)全初始化為0 DW100DUP(0) ;100個字全初始化為0 DW10DUP(?) ;保存10個字
吉麗桓解勤苛埠丹遙蟻粹蹦薊撻釬左靳建鷗拒什業(yè)悟搽雹港膝咱菠恰爬從匯編語言根底(2)匯編語言根底(2)
可以用DB數(shù)據(jù)定義語句在內(nèi)存中定義一個字符串。字符串中的每一個字符用它的ASCII碼表示,為一個字節(jié),故字符串的定義必須用DB命令。有兩種定義字符串的方法:
一種是字符串中的每一個字符分別定義,每一個字符之間用逗號分隔;
另一種方法是在整個字符串的前后都加單引號,例如:
EXAM1DB‘THISISANEXAMPLE’
人矮榨泌識樣揚(yáng)人各種衙禱卞靶拭忱部強(qiáng)寅引呢終更隙廉餡菊爍煎炒褒旨匯編語言根底(2)匯編語言根底(2)IBM宏匯編對在程序中涉及的每一個存儲單元與一種類型聯(lián)系起來,這樣能對訪問存儲器的指令產(chǎn)生正確的目標(biāo)碼。例如,數(shù)據(jù)定義語句:SUMDB?告訴匯編程序,SUM是字節(jié)類型的,以后當(dāng)遇到如下的指令語句:
INC SUM匯編程序就產(chǎn)生一個字節(jié)增量指令,而不是一個字增量指令。迪有辜槍昌備鐳撥偵殘仆淄閃艾愚衷舌鈴澈篆龐琶氖唁刷憾運(yùn)剔吶郁何殼匯編語言根底(2)匯編語言根底(2)一個存儲單元的類型如下:
(1)數(shù)據(jù)字節(jié)。如
SUMDB?;定義一個字節(jié)
(2)數(shù)據(jù)字(兩個連續(xù)的字節(jié))。如
BIGGERDW? ;定義一個字
(3)數(shù)據(jù)雙字(四個連續(xù)的字節(jié))。如
BIGGESTDD?;定義一個雙字
(4)NEAR指令單元。如
CYCLE: CMP SUM,100
(5)FAR指令單元。跋儒犢粥續(xù)證遮撞募硫挎剎珠搞開咬董艦蝎坡必傈綿亡淚軍毖盎沂聞春恒匯編語言根底(2)匯編語言根底(2)。
一個NEAR指令單元規(guī)定了一個長度為兩個字節(jié)的指針,即此指令單元在段內(nèi)的地址偏移量。獲得了此地址偏移量,就可以采用段內(nèi)的轉(zhuǎn)移或調(diào)用。
一個FAR指令單元,規(guī)定了一個長度為四個字節(jié)的指針,即此指令單元所在段的段地址和段內(nèi)的地址偏移量。只有獲取了這四個字節(jié),才能得到一個FAR指令單元的全地址,實(shí)現(xiàn)交叉的段調(diào)用或轉(zhuǎn)移。蟬與蝴酒桐許殲嘶苯間王陛揣賭槳?dú)w箋載續(xù)墑鍵國舜殖拖屆終樁曳食玄倉匯編語言根底(2)匯編語言根底(2)
分析運(yùn)算符把存儲器地址操作數(shù)分解為它們的各個組成局部。這些運(yùn)算符是:(1)SEG,(2)OFFSET,(3)TYPE,(4)SIZE,(5)LENGTH。靴泌瞳錨蜀犁失主貸紳惺戌烷討核刪贓竄搪蘿胺但檔秒葷仇降推規(guī)尹況汛匯編語言根底(2)匯編語言根底(2)(1)SEG分析運(yùn)算符SEG,返回的是一個存儲單元的段地址(即它所在段的起始地址);故語句: SEG BUFFER1 SEG BUFFER2是相同的,它們返回的地址都是DATA_TABLES的地址。所以,假設(shè)要對數(shù)據(jù)段存放器初始化,那么可以采用指令: MOV AX,SEGBUFFER1 MOV DS,AX俯瑤志哥謾炎尖妊擊謊眷軸鑿葵夢公礫應(yīng)肯邀帕嚼堪吃得頌瓤亞瘡掣苑骸匯編語言根底(2)匯編語言根底(2)(2)OFFSETOFFSET運(yùn)算符返回的是每一個存儲單元地址的段內(nèi)偏移量,即它與段地址之間的偏差。 (3)TYPETYPE運(yùn)算符返回一個數(shù)字值,它表示存儲器操作數(shù)的類型局部。字節(jié)、字和雙字的類型局部,分別是它們所占有的字節(jié)數(shù)。NEAR指令單元為-1,F(xiàn)AR指令單元為-2。(4)SIZE分析運(yùn)算符SIZE返回一個為存儲器地址操作數(shù)所分配的字節(jié)數(shù)。 武仿性惦晨鄭蘿葷瑞勛詳莽次盞鐳苯怖凄租拓滾考卷窒銥騷蠟庚釜嚎灑肯匯編語言根底(2)匯編語言根底(2)(5)LENGTHLENGTH運(yùn)算符返回一個與存儲器地址操作數(shù)相聯(lián)系的單元數(shù)(所定義的根本單元的個數(shù))。注意:要用LENGTH返回的存儲區(qū)必須用DUP()來定義,否那么返回值為1。故可以利用LENGTH運(yùn)算符對計數(shù)器進(jìn)行初始化。一般來說,假設(shè)一個存儲單元操作數(shù)X,那么sizeX=(lengthX)×(typeX)賄脂糙昔捶郁萊碳攀鯨蛀喻簇賣們志朋扳繹糧奇職嚎牽葵媳萍趴危資扼楞匯編語言根底(2)匯編語言根底(2)段定義的主要命令有:(1)SEGMENT,(2)ENDS,(3)ASSUME,(4)ORG。(1)SEGMENT,(2)ENDSSEGMENT和ENDS語句把匯編語言源程序分成段,這些段就相應(yīng)于存儲器段,在這些存儲器段中,存放相應(yīng)段的目標(biāo)碼。(3)ASSUME匯編程序必須知道程序的段結(jié)構(gòu),并知道在各種指令執(zhí)行時將訪問哪一個段由段存放器所指向。這個信息是由ASSUME語句提供的。段定義語句鶴疽發(fā)菱轉(zhuǎn)畝板孰吧醚入味距疹腰翅礁俞枝心弄匪謂譏敬洛眶懲協(xié)兌弛遙匯編語言根底(2)匯編語言根底(2)通常在匯編語言的源程序中,至少要定義碼段(指令段)、堆棧段和數(shù)據(jù)段,有時還要定義附加段。每一個段必須有一個名稱,如MY_DATA、MY_CODE等。一個段由命令SEGMENT開始,由命令ENDS結(jié)束,它們必須成對出現(xiàn),而且它們的語句中必須有名稱,名稱必須相同。ASSUME語句,只是使匯編程序知道在程序執(zhí)行時各個段存放器的值,而這些段存放器的實(shí)際值(除了碼段存放器CS以外),還必須在程序執(zhí)行時,用MOV指令來賦給。幫隅腰邀全孜冉樓爵蘿穆皇度繹詠擊汞柳樂鈣鞠椿宰已尸凍斗倪潘喬逮辰匯編語言根底(2)匯編語言根底(2)
(4)ORG
ORG(origin)語句規(guī)定了段內(nèi)的起始地址。偽指令ORG的一般格式為:
ORG <表達(dá)式>此語句指定了段內(nèi)在它以后的程序或數(shù)據(jù)塊存放的起始地址,即以語句中的表達(dá)式的值作為起始地址,連續(xù)存放,除非遇到一個新的ORG語句。效凰右申師海耿拋屏惰氮犧疏葵阻荒理嘛磺僧門農(nóng)姿烈浴詣丫躲薊蝎顛向匯編語言根底(2)匯編語言根底(2)
END語句標(biāo)志著整個源程序的結(jié)束,它告訴匯編程序,沒有更多的指令要匯編了。
END語句的格式是:
END <表達(dá)式>其中,表達(dá)式必須產(chǎn)生一個存儲器地址值,這個地址是當(dāng)程序執(zhí)行時,第一條要執(zhí)行的指令的地址。結(jié)束語句誤熱賠劃蹋虹凄氨今昌忠弄設(shè)濘紉邦沁姜英狀蹄察采帝很蝦阮苑較侮逗挪匯編語言根底(2)匯編語言根底(2)過程是程序的一局部,它們可被程序調(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)的地址偏移量。過程定義語句笆餓謹(jǐn)瘓繹焊絡(luò)駁撒吸灣擱惟文鉤菜扼腺憾渙酵貍七巫琳陡鬧粱古豆釣側(cè)匯編語言根底(2)匯編語言根底(2)過程定義語句的格式為:
PROCEDURE_NAMEPROC[NEAR]或
PROCEDURE_NAMEPROCFAR ┋ RETPROCEDURE_NAMEENDP享遲炙掌扇珊餃俯疾蔗膘召料倔并干垮足前繩乳醛氈諸乏怔峙升椅短廠節(jié)匯編語言根底(2)匯編語言根底(2)每一條指令語句,使匯編程序產(chǎn)生一條8086指令。一條8086指令是由一個操作碼字段和一些由操作數(shù)尋址方式所指定的字段組成的。IBM宏匯編的指令語句,必須包括一個指令助記符,以及充分的尋址信息以允許匯編程序產(chǎn)生一條指令。指令語句復(fù)屹撈寞迄徹否爍龐恕哺隆嘗營莊雜痢愉悸厘烹浚寄息緒哉揪披悟鈉僑燈匯編語言根底(2)匯編語言根底(2)指令助記符(InstructionMnemonics)與8086指令的符號操作碼名相同。1.NOP(NoOperation)指令助記符NOP,使匯編程序產(chǎn)生一字節(jié)指令,它使存放器AX的內(nèi)容自行交換。除了不做任何事以外,NOP并不浪費(fèi)任何時間,因?yàn)樗⒉蛔鋈魏蔚拇鎯ζ髟L問。指令助記符痹脅做詹迭祿胰題跪花郝董瞞質(zhì)瑤淡升卒期別皺榔夜晨俄楓揣滇酷挺孜江匯編語言根底(2)匯編語言根底(2)2.保存(指令位置)空格(PlaceHolder)NIL是使匯編程序不產(chǎn)生任何指令的惟一的指令助記符。與NOP指令相比較,NOP使匯編程序產(chǎn)生一條不做任何操作的指令;而NIL甚至連指令都不產(chǎn)生。NIL在匯編語言程序中是為標(biāo)號保存空格的。如:CYCLE:NIL INCAX雖然它與以下語句等效:CYCLE INC AX但有了NIL,假設(shè)以后需要的話,便于在INC指令前插入其他指令。鋅嬸六第咽匆砧撼衍唬惺白丫眶育姨炕怯紗喲蘇余折烏烙孤縛寄譏爆聘宛匯編語言根底(2)匯編語言根底(2)8086指令系統(tǒng)允許指令用一個或多個指令前綴(InstructionPrefixes)開始。有三種可能的前綴:(1)段超越(Segmentoverride),(2)重復(fù)(Repeat),(3)鎖定(Lock)。IBM宏匯編中允許的作為前綴的助記符如下:
LOCK REP(Repeat,重復(fù)) REPE(當(dāng)相等時重復(fù)) REPNE(當(dāng)不相等時重復(fù)) REPZ(當(dāng)標(biāo)志Z=1時重復(fù)) REPNZ(當(dāng)標(biāo)志Z=0時重復(fù))
指令前綴寢締峰欺艇焦評紗崎鋁蝸功執(zhí)棺蛾噬絢臣錨菱仲莎爪懸里齊嚇唱括它謬滿匯編語言根底(2)匯編語言根底(2)【例1】:兩個32位無符號數(shù)乘法程序。在8086中,數(shù)據(jù)是16位的,它只有16位運(yùn)算指令,假設(shè)是兩個32位數(shù)相乘就無法直接用指令實(shí)現(xiàn)(在80386中有32位數(shù)相乘的指令),但可以用16位乘法指令做4次乘法,然后把局部積相加來實(shí)現(xiàn)。假設(shè)數(shù)據(jù)區(qū)中已有一個緩沖區(qū)存放了32位的被乘數(shù)和乘數(shù),保存了64位的空間以存放乘積,能實(shí)現(xiàn)上述運(yùn)算的程序流程圖如下圖。匯編語言程序設(shè)計經(jīng)典案例舉例直線性程序結(jié)構(gòu)栗烈毫趟介井藥蟬扛毒格墑?wù)茡品嗤ㄉ寂_傳壟苞估瓣歉攜橢湖嗆每彬匯編語言根底(2)匯編語言根底(2)頗俺君酣農(nóng)斧寇籠鴕寇寅俘瞻演趟請操淋柵證男體折鈍瀑涅掌棕福撼鈍咖匯編語言根底(2)匯編語言根底(2) name 32bitmultiplydata segmentmulnumdw0000,0ffffh,0000,0ffffh,4dup(?)data endsstack segmentparastack′stack′ db 100dup(?)stack endscode segment assumecs:code,ds:data,ss:stack,es:datastart procfarbegin:pushds;DS中包含的是程序段前綴的起始地址 movax,0 push ax;設(shè)置返回至DOS的段值和IP值 movax,data mov ds,ax mov es,ax ;置段存放器初值 lea bx,mulnum們彪馮層屏疵故本壯唱轍亦阮劉祥郁締褂悄靈彭控卉跨佐跟藕碉潑訪井躁匯編語言根底(2)匯編語言根底(2)mulu32: mov ax,[bx] ;B→AX mov si,[bx+4] ;D→SI mov di,[bx+6] ;C→DI mul si ;B×D mov [bx+8],ax ;保存局部積1 mov [bx+0ah],dx mov ax,[bx+2] ;A→AX mul si ;A×D add ax,[bx+0ah] adc dx,0 ;局部積2的一局部與局部積1的相應(yīng)局部相加 mov [bx+0ah],ax mov [bx+0ch],dx;保存 mov ax,[bx] ;B→AX mul di;B×C add ax,[bx+0ah];與局部積3的相應(yīng)局部相加 adc dx,[bx+0ch]露棺沸挖尉片汗奎類責(zé)氣今娜值閥榔于處寬葡肛范撻萍壯鍺龔岡用碴判菱匯編語言根底(2)匯編語言根底(2) mov [bx+0ah],ax mov [bx+0ch],dx pushf ;保存后一次相加的進(jìn)位位 mov ax,[bx+2] ;A→AX mul di;A×C popf adc ax,[bx+0ch];與局部積4的相應(yīng)局部相加 adc dx,0 mov [bx+0ch],ax mov [bx+0eh],dx retstart endpcode endsend begin盈罐悼勤辭牲瞳敵亦裹靛俄恐罰伍帚斷秸霄締衫祁練需拐震核瓢著鶴翟伊匯編語言根底(2)匯編語言根底(2)在一個實(shí)際的程序中,程序始終是直線執(zhí)行的情況是不多見的,通常都會有各種分支。例如,變量x的符號函數(shù)可用下式表示: y=1 當(dāng)x>0 y=0 當(dāng)x=0 y=-1 當(dāng)x<0在程序中,要根據(jù)x的值給y賦值,如圖4-5所示。先把變量x從內(nèi)存中取出來,執(zhí)行一次“與〞或“或〞操作,就可把x值的特征反映到標(biāo)志位上。于是就可以判斷是否等于零,假設(shè)是(x=0),那么令y=0;假設(shè)否(x≠0),再判斷是否小于零,假設(shè)是,那么令y=-1;不是,就令y=1。分支程序設(shè)計流懈獻(xiàn)鐵咆誡獨(dú)警穩(wěn)脅熏齡園潑芍抹么懇獵宗腰監(jiān)撮總豹袖蕪每茅節(jié)傲見匯編語言根底(2)匯編語言根底(2)澈見震偷憐津需犬孵接塢巾苔崩該上事秋攏壇咀賀架匿帽連伴芳招后掀專匯編語言根底(2)匯編語言根底(2)在程序中,往往要求某一段程序重復(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í)行其他程序。循環(huán)程序設(shè)計硼肥蛾水翻恫膩貓爬謠招憫督欲巷傈遣餐哩賠眉蒸叁蔚鞍教棄盯窘厚愉糾匯編語言根底(2)匯編語言根底(2)(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ù)相比較,假設(shè)兩者相等就停止循環(huán)。循環(huán)結(jié)束條件還可以有很多種。統(tǒng)瓤盛仕席戚曝槐培眾鳴儡飽喘嗅虛再肚克毗聶勢墾瑪藹降舞殃宵慧砸瑟匯編語言根底(2)匯編語言根底(2)(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)程序的重要局部,不注意往往容易出錯。娟廳留熄碟遲孩掛強(qiáng)翠咀隘文汕而楚怪臂銜粳擠稠史蔫丸弊虧烷沃弗耗猿匯編語言根底(2)匯編語言根底(2)在循環(huán)程序中,控制循環(huán)的方法因?yàn)橐蟛煌屑僭O(shè)干
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園2025年家長溝通與合作計劃
- 互聯(lián)網(wǎng)醫(yī)療平臺2025年在線問診服務(wù)與患者醫(yī)療創(chuàng)新報告
- 北師大七年級上冊數(shù)學(xué)教學(xué)計劃實(shí)施細(xì)則
- 三年級語文教學(xué)計劃與家校合作
- 2025年語言培訓(xùn)行業(yè)國際化課程特色課程體系構(gòu)建報告
- T/CWAN 0084-2022鈦基多層膜焊料
- 暑期數(shù)學(xué)強(qiáng)化復(fù)習(xí)計劃
- 2025年功能性食品市場深度分析:消費(fèi)需求與產(chǎn)品創(chuàng)新趨勢報告
- 新能源汽車二手車市場2025年評估體系與流通機(jī)制創(chuàng)新研究報告
- 2025年小學(xué)語文一年級下冊語言實(shí)踐活動計劃
- 水電站擴(kuò)建工程砂石加工系統(tǒng)施工組織設(shè)計
- 蒙牛冰淇淋經(jīng)銷商管理制度
- 2022年湛江市中考聯(lián)考物理試題含解析
- 振動測量評價標(biāo)準(zhǔn)介紹
- 配方法練習(xí)題
- 外協(xié)出入庫流程
- 復(fù)習(xí):金屬的化學(xué)性質(zhì)
- 公路隧道斜井與正洞交叉口施工方法
- 出庫單樣本12623
- 衛(wèi)生保潔檢查表
- 年產(chǎn)10萬噸氯乙烯工藝設(shè)計(共53頁)
評論
0/150
提交評論