單片機(jī)原理與應(yīng)用電子教案2_第1頁
單片機(jī)原理與應(yīng)用電子教案2_第2頁
單片機(jī)原理與應(yīng)用電子教案2_第3頁
單片機(jī)原理與應(yīng)用電子教案2_第4頁
單片機(jī)原理與應(yīng)用電子教案2_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第4章匯編語言程序設(shè)計(jì)簡介4.1偽指令4.2匯編語言程序設(shè)計(jì)4.1偽指令一、匯編起始指令ORG指令格式為:ORGnn該指令的作用是指明后面的程序或數(shù)據(jù)塊的起始地址,它總是出現(xiàn)在每段源程序或數(shù)據(jù)塊的開始。式中,nn為16位地址,匯編時nn確定了此語句后面第一條指令或第一個數(shù)據(jù)的地址,此后的源程序或數(shù)據(jù)塊就依次連續(xù)存放在以后的地址內(nèi),直到遇到另一個ORG指令為止。例:ORG2000HMOVSP,#60HMOVR0,#2FHMOVR2,#0FFHORG偽指令說明其后面程序的目標(biāo)代碼在存儲器中存放的起始地址是2000H,即存儲器地址目標(biāo)程序2000H7581602003H782F2005H7AFF二、等值指令EQU指令格式:字符名稱EQU數(shù)字或匯編符號功能:使指令中的字符名稱等價(jià)于給定的數(shù)字或匯編符號。使用等值指令可給程序的編制、調(diào)試、修改帶來方便,如果在程序中要多次使用到某一地址,由EQU指令將其賦值給一個字符名稱,一旦需要對其進(jìn)行變動,只要改變EQU命令后面的數(shù)字即可,而不需要對程序中涉及到該地址的所有指令逐句進(jìn)行修改。但要注意,由EQU等值的字符名稱必須先賦值后使用,且在同一個源程序中,同一個標(biāo)號只能賦值一次。例:PA8155EQU8001H即給標(biāo)號PA8155賦值為8001H。三、定義字節(jié)指令DB指令格式: [標(biāo)號:]DB8位二進(jìn)制數(shù)表功能:把8位二進(jìn)制數(shù)表依次存入從標(biāo)號開始的連續(xù)的存儲單元中。格式中,標(biāo)號區(qū)段可有可無,DB指令之后的8位二進(jìn)制數(shù)表是字節(jié)常數(shù)或用逗號隔開的字節(jié)串,也可以是用引號括起來的ASCII碼字符串(一個ASCII字符相當(dāng)于一個字節(jié))。例:ORG1000HBUF1:DB38H,7FH,80HBUF2:DB45H,66HORG偽指令指定了標(biāo)號BUF1的地址為1000H,而DB偽指令是將其后的二進(jìn)制數(shù)表38H,7FH,80H依次存放在1000H,1001H,1002H3個連續(xù)單元之中,BUF2也是一個標(biāo)號,其地址與前一條偽指令連續(xù),即1003H,1004H地址單元中依次存放45H,66H。四、定義字指令DW指令格式:[標(biāo)號:]DW16位數(shù)據(jù)表該指令的功能與DB相似,區(qū)別僅在于從指定地址開始存放的是指令中的16位數(shù)據(jù),而不是字節(jié)串。每個16位數(shù)據(jù)要占兩個存儲單元,高8位先存,低8位后存,這和MCS-51指令中的16位數(shù)據(jù)存放順序是一致的。五、匯編結(jié)束指令END指令格式:[標(biāo)號:]END地址或標(biāo)號格式中標(biāo)號以及END后面的地址或標(biāo)號可有可無。功能:提供匯編結(jié)束標(biāo)志。匯編程序遇到END后就停止匯編,對END以后的語句不予處理,故END應(yīng)放在程序的結(jié)束處。4.2匯編語言程序設(shè)計(jì)4.2.1簡單程序設(shè)計(jì)例1兩個無符號雙字節(jié)數(shù)相加。設(shè)被加數(shù)存放于內(nèi)部RAM的40H(高位字節(jié)),41H(低位字節(jié)),加數(shù)存放于50H(高位字節(jié)),51H(低位字節(jié)),和數(shù)存入40H和41H單元中。程序如下:START:CLRC;將Cy清零MOVR0,#41H;將被加數(shù)地址送數(shù)據(jù)指針R0MOVR1,#51H;將加數(shù)地址送數(shù)據(jù)指針R1AD1:MOVA,@R0;被加數(shù)低字節(jié)的內(nèi)容送入AADDA,@R1;兩個低字節(jié)相加MOV@R0,A;低字節(jié)的和存入被加數(shù)低字節(jié)中DECR0;指向被加數(shù)高位字節(jié)DECR1;指向加數(shù)高位字節(jié)MOVA,@R0;被加數(shù)高位字節(jié)送入AADDCA,@R1;兩個高位字節(jié)帶Cy相加MOV@R0,A;高位字節(jié)的和送被加數(shù)高位字節(jié)RET例2將兩個半字節(jié)數(shù)合并成一個一字節(jié)數(shù)。設(shè)內(nèi)部RAM40H#,41H單元中分別存放著8位二進(jìn)制數(shù),要求取出兩個單元中的低半字節(jié),并成一個字節(jié)后,存入50H單元中。程序如下:START:MOVR1,#40H;設(shè)置R1為數(shù)據(jù)指針MOVA,@R1;取出第一個單元中的內(nèi)容ANLA,#0FH;取第一個數(shù)的低半字節(jié)SWAPA ;移至高半字節(jié)INCR1 ;修改數(shù)據(jù)指針XCHA,@R1 ;取第二個單元中的內(nèi)容ANLA,#0FH;取第二個數(shù)的低半字節(jié)ORLA,@R1 ;拼字MOV50H,A ;存放結(jié)果RET4.2.2分支程序設(shè)計(jì)圖4.1分支結(jié)構(gòu)框圖(a)單分支流程;(b)多分支流程例3x#,y均為8位二進(jìn)制數(shù),設(shè)x存入R0,y存入R1,求解:程序如下:START:CJNER0,#00H,SUL1;R0中的數(shù)與00比較不等轉(zhuǎn)移MOVR1,#00H;相等,R1←0SJMPSUL2SUL1:JCNEG;兩數(shù)不等,若(R0)<0,轉(zhuǎn)向NEGMOVR1,#01H;(R0)>0,則R1←01HSJMPSUL2NEG:MOVR1,#0FFH;(R0)<0,則R1←0FFHSUL2:RET圖4.2

例4比較兩個無符號數(shù)的大小。設(shè)外部RAM的存儲單元ST1和ST2中存放兩個不帶符號的二進(jìn)制數(shù),找出其中的大數(shù)存入外部RAM中的ST3單元中。圖4.3程序如下: ORG1000HST1 EQU2000HST2EQU2100HST3EQU2200HSTART:CLRC ;清零Cy MOVDPTR,#ST1;第一個數(shù)的指針MOVXA,@DPTR;取第一個數(shù)MOVR2,A;保存MOVDPTR,#ST2;第二個數(shù)的指針MOVXA,@DPTR;取第二個數(shù)CLRCSUBBA,R2;兩數(shù)比較JNCBIG1;若第二個數(shù)大,則轉(zhuǎn)XCHA,R2;第一個數(shù)大BIG0:MOVDPTR,#ST3MOVX@DPTR,A;存大數(shù)RETBIG1:MOVXA,@DPTR;第二個數(shù)大SJMPBIG0RET4.2.3循環(huán)程序設(shè)計(jì)一、循環(huán)程序圖4.4循環(huán)程序一般由四個主要部分組成:(1)初始化部分:為循環(huán)程序做準(zhǔn)備,如規(guī)定循環(huán)次數(shù)、給各變量和地址指針預(yù)置初值。(2)處理部分:為反復(fù)執(zhí)行的程序段,是循環(huán)程序的實(shí)體,也是循環(huán)程序的主體。(3)循環(huán)控制部分:這部分的作用是修改循環(huán)變量和控制變量,并判斷循環(huán)是否結(jié)束,直到符合結(jié)束條件時,跳出循環(huán)為止。(4)結(jié)束部分:這部分主要是對循環(huán)程序的結(jié)果進(jìn)行分析、處理和存放。

例5工作單元清零。在應(yīng)用系統(tǒng)程序設(shè)計(jì)時,有時經(jīng)常需要將存儲器中各部分地址單元作為工作單元,存放程序執(zhí)行的中間值或執(zhí)行結(jié)果,工作單元清零工作常常放在程序的初始化部分中。設(shè)有50個工作單元,其首址為外部存儲器8000H單元,則其工作單元清零程序如下:CLE詞AR:火C頑LR認(rèn)A棕MOV巷DPT章R,#難8000屢H握;工作握單元首址居送指針換MOV持R2凡,50徑;置盾循環(huán)次數(shù)祝CLEA負(fù)R1:南MOVX漸@樓DPTR點(diǎn),AINC廉DPT游R拉;俊修改指衰針DJNZ難R2崖,CL懂EAR1水;控制盆循環(huán)RET例6設(shè)在內(nèi)部看RAM攝的BLO承CK單元興開始處有屠長度為與LEN渡個的無符泉號數(shù)據(jù)塊贊,試編難一個求和刻程序,辨并將和存抱入內(nèi)部候RAM的倚SU廉M單元(乎設(shè)和不超稅過8昏位)。BLOC絮K誕EQU局20H榴LEN粗EQU瞎3竭0HSUM鈔E織QU擱40急HSTAR澇T:鑒CLR衫A孔;清領(lǐng)累加器A訴MOV鐵R2,析#LE名N;數(shù)殿據(jù)塊長度痛送R2MOV勞R1,疼#BL料OCK策;蠶數(shù)據(jù)塊首膝址送R1堡LOOP次:箏ADD席A,球@R1愁;循眾環(huán)加法INC會R靜1;輩修改地捷址指針郵DJNZ傅R2雕,LO購OP何;修米改計(jì)數(shù)器埋并判斷MOV悟SUM蝦,A;瞞存和RET二、多的重循環(huán)例710秒援延時程序逼。延時程川序與刃MCS拿-布51婦執(zhí)行指凈令的時基間有關(guān)擁,如緩果使用羽6獨(dú)MHz付晶振,缸一個芝機(jī)器周迷期為栗2μ蟲s,遮計(jì)算出們一條指瞇令以至?xí)粋€循綢環(huán)所需椒要的執(zhí)頂行時間委,給究出相應(yīng)艘的循環(huán)展次數(shù),殖便能莖達(dá)到延諸時的目藏的。1樣0秒罰延時程接序如下紛:DEL廢AY:亂M侄OV淹R5不,#杠100榮DEL0詞:紅M促OV涌R6,尿#200劫DEL1毛:癥M城OV灑R7,年#248榆DEL木2:偶D撫JNZ核R膠7,振DEL曾2DJN榜Z譯R6,限D(zhuǎn)E傍L1DJN冠Z艦R5,惡DE快L0RET上例程序捷中采用了揮多重循環(huán)磚程序,派即在一個夠循環(huán)體中維又包含了役其它的循斷環(huán)程序,芝這種方星式是實(shí)現(xiàn)五延時程序戒的常用方束法。使心用多重循滔環(huán)時,擁必須注意掩:(1)側(cè)循環(huán)訂嵌套,供必須蹤蝶層次分洽明,衫不允許左產(chǎn)生內(nèi)揪外層循既環(huán)交叉馬。(2)掙外循環(huán)可瞎以一層層鈴向內(nèi)循環(huán)蓄進(jìn)入,士結(jié)束時由爛里往外一敗層層退出因。(3)殘內(nèi)循傷環(huán)可以杰直接轉(zhuǎn)歪入外循翁環(huán),慶實(shí)現(xiàn)一俱個循環(huán)徒由多個部條件控斑制的循那環(huán)結(jié)構(gòu)季方式。例8在外部猾RAM中范,BL膝OCK開句始的單元鋤中有一無件符號數(shù)據(jù)竭塊,其贊個數(shù)為撒LEN曉個字節(jié)。耕試將這些匯無符號數(shù)占按遞減次請序重新排頁列,并災(zāi)存入原存恐儲區(qū)。ORG吐100厭0H香STA辜RT:配MO客V廟DPT熟R,垮#BL洗OCK海;置訴地址指累針MOV植P2,析DPH惜;P2帝作地址指辨針高字節(jié)薄MOV五R7,何#LE團(tuán)N奸;置鎮(zhèn)外循環(huán)計(jì)殘數(shù)初值DEC句R7習(xí);多比較與交照換n-剛1次LOOP域0:C償LR息F0乳;叛交換標(biāo)志趙清0MOV濤R0,凳DPL鍬;MOV椅R朗1,代DPL黃;眾置相鄰狼兩數(shù)地?fù)Q址指針母低字節(jié)帶INC村R1忌MOV刪R舊6,昨R7耐;置長內(nèi)循環(huán)茅計(jì)數(shù)器謎初值LOO馳P1:頭MO屯VX晨A,脫@R象0;西取數(shù)劑MOV鈔B,加A縮慧;暫存匯MOV偽X持A,漆@R1敏;取贊下一個艇數(shù)CJN姨E誼A,嘩B,相NEX棄T;巾相鄰兩窯數(shù)比較等,不欣等轉(zhuǎn)SJMP蜻NO狐CHA鴨;相撇等不交換NEX闊T:距JC位N紀(jì)OCH仍A;詞Cy孫=1,乒則前愈者大于綱后者,摘不必虜交換SETB諷F0劈燕;否黃則,置征交換標(biāo)志咳MOVX穴@R紋0,A曾;XCH糟A,己B;術(shù)兩數(shù)交換更,大者虜在前,遭小者在后銅MOV硬X那@R1父,A釀;NOCH支A:I耗NC逮R0INC伏R1;組修改指答針DJNZ灣R6勺,LO玩OP1解;內(nèi)林循環(huán)未完韻,則繼觸續(xù)JNB餐F0,漁EXI憶T;號若從未遇交換,融則結(jié)束DJNZ周R7吸,LO修OP0;乞外循環(huán)久未完,醋則繼續(xù)EXIT余:獵RET圖4蟻.5例9設(shè)某系統(tǒng)志的模數(shù)轉(zhuǎn)能換器是A宴DC08負(fù)09,屠它的轉(zhuǎn)換駁結(jié)束信號太EO吧C連接到兇8031央的P1猴.7端,縣當(dāng)贊EOC的晴狀態(tài)由低明變高時,障則結(jié)束過循環(huán)等待正,并讀醒取轉(zhuǎn)換值剖,其程努序如下:STA隊(duì)RT:顆M掩OV從DP序TR,歡#a泰ddr碎;臭080闊9端口凳地址送舞DPT遙RMOV饒A,柜#00H槐;敏啟動0湊809轉(zhuǎn)把換MOVX價(jià)@D活PTR,歷ALOOP塔:JN碑BP雪1.7,回LOO微P;檢峰測P1.尺7狀態(tài),徐判是否蕉轉(zhuǎn)換結(jié)束淹MO撤VXC并A,藏@DP言TR;撈讀取耀轉(zhuǎn)換結(jié)子果…例10在內(nèi)部存RA雞M中從龜50H揉單元開徑始的連戀續(xù)單元幸依次存例放了一罩串字符吐,該島字符串縣以回車這符為結(jié)找束標(biāo)志嘴,要殊求測試沉該字符腥串的長付度。程序如唇下:紗STA皆RT:護(hù)M巾OV御R2攤,#呆0FF綢H靜MOV焰R0,鏟#4F破H;孫數(shù)據(jù)指地針R0置仿初值LOOP斗:故INC而R0漁INC鉗R達(dá)2CJNE滅@R耀0,#約0DH,懇LOO伙PRET4.2.穗4散頭轉(zhuǎn)程序設(shè)側(cè)計(jì)散轉(zhuǎn)程序勸是分支程討序的一種臺,它可傻根據(jù)運(yùn)算彎結(jié)果或輸鵝入數(shù)據(jù)將巧程序轉(zhuǎn)入煎不同的分閱支。MC堪S-昌51指污令系統(tǒng)中聾有一條跳酷轉(zhuǎn)指令J宜MP@A巧+DPT說R,用可它可以很效容易地實(shí)鏡現(xiàn)散轉(zhuǎn)功腎能。該指被令把累加獸器的絲式8位無夸符號數(shù)與陳16段位數(shù)據(jù)指嫂針的內(nèi)容閃相加,曾并把相加甚的結(jié)果裝夠入程序計(jì)詳數(shù)器PC督,控制究程序轉(zhuǎn)向雪目標(biāo)地址繁去執(zhí)行。剛此指令的世特點(diǎn)在于惠,轉(zhuǎn)移咸的目標(biāo)地甜址不是在耳編程或匯閣編時預(yù)先撓確定的,瓦而是在麻程序運(yùn)行判過程中動獄態(tài)地確定寫的。目標(biāo)稈地址是以循數(shù)據(jù)指針柔DPT法R的內(nèi)容招為起始的拒256下字節(jié)范悶圍內(nèi)的指撓定地址,棚即由忽DPTR那的內(nèi)容決圓定分支轉(zhuǎn)嫩移程序的葬首地址,馳由累加糾器A截的內(nèi)容來欄動態(tài)選擇虛其中的某滴一個分支扎轉(zhuǎn)移程序胳。例1廁1根據(jù)工作宜寄存器R否0內(nèi)容今的不同,戶使程序大轉(zhuǎn)入相應(yīng)伐的分支。鑄(R0饞)=0鉗對應(yīng)的頭分支程室序標(biāo)號僑為PR連0;己(R0)巷=1浴對應(yīng)的漢分支程序京標(biāo)號為P砌R1;竭(R0容)=N活對應(yīng)的釀分支程召序標(biāo)號熔為PR殊N?!绦蛉绱瓜?糖LP0:掘MOV互DPT攜R,#健TAB邁;胞取表頭地毫址MOV撞A,稻R0ADD吹A(chǔ),駱R0莊;R0碼內(nèi)容乘以淘2JNC傻L謊P1挑;遭無進(jìn)位切轉(zhuǎn)移INC墊DPH噴;續(xù)加進(jìn)位位狠LP1:隸J叨MP大@A+D匹PTR;僚跳至散冠轉(zhuǎn)表中相線應(yīng)位置TAB:擋AJ屈MP妖PR0AJMP倦PR套1AJMP控PR固N(yùn)……本例程悲序僅適稈用于散板轉(zhuǎn)表首勻地址益TA皇B和處碰理程序?yàn)V入口地鄙址P慰R0,撇PR飽1,圾…,長PRN掉在同一從個2賄KB鄰范圍的舅存儲區(qū)菜內(nèi)的情稀形。若役超出園2K關(guān)B范圍及可在分豬支程序績?nèi)肟谔幷甙才乓煌l長跳訪轉(zhuǎn)指令絞,可續(xù)采用如淺下程序王:MOV化DPT海R,#耽TABMOV祖A該,R島0MOV籮B,蝕#03H茄;希長跳轉(zhuǎn)邁指令占借3個字躁節(jié)MUL乘ABXCH資A,絞BADD蠢A生,D泊PHMOV弄D嫌PH,輪AXCH都A件,B逃JMP碼@A+棒DPTR屆;跳至級散轉(zhuǎn)表中革相應(yīng)的位呀置TAB:北LJM棚PP堤R0;羅跳至不同欄的分支LJMP勞PR腥1LJMP緣瑞PR塌N……4.2.暫5子程刪序和參數(shù)危傳遞一、婦子程序獨(dú)的概念通常把這丘些基本操藥作功能編汗制為程序備段作為獨(dú)售立的子程艱序,以蹈供不同程完序或同一旗程序反復(fù)煩調(diào)用。在鞭程序中需蓮要執(zhí)行這森種操作的謠地方放置求一條調(diào)用警指令,土當(dāng)程序執(zhí)國行到調(diào)用必指令,斧就轉(zhuǎn)到子陣程序中完標(biāo)成規(guī)定的賊操作,泰并返回到出原來的程庸序繼續(xù)游執(zhí)行下去圾。二、次子程序籠的調(diào)用納調(diào)用子程肝序的指令泄有“AC鏡ALL”午和“LC件ALL”糾,執(zhí)行拴調(diào)用指令孝時,先盤將程序地倘址指針P毯C改變(動“ACA井LL”加捉2,渾“LC爛ALL”扒加3)夜,然后墻PC值住壓入堆棧撿,用新淺的地址值穩(wěn)代替。執(zhí)弊行返回指茶令時,廢再將P優(yōu)C值彈出囑。子程序調(diào)持用中,趨主程序應(yīng)貌先把有關(guān)揚(yáng)的參數(shù)存糾入約定的僻位置,超子程序在跑執(zhí)行時,只可以從嫌約定的位鼓置取得參閑數(shù),當(dāng)辱子程序執(zhí)樓行完,婚將得到的剖結(jié)果再存段入約定的裝位置,削返回主程懂序后,慌主程序可糠以從這些鞏約定的位不置上取得形需要的結(jié)法果,這參就是參數(shù)搶的傳遞。例12把內(nèi)部藝RAM眉某一單尺元中一銳個字節(jié)疲的十六啦進(jìn)制數(shù)克轉(zhuǎn)換成揀兩位A么SCI卸I碼,藍(lán)結(jié)果喂存放在冰內(nèi)部R估AM的隱連續(xù)兩膏個單元墓中。假設(shè)一個月字節(jié)的十援六進(jìn)制數(shù)服在內(nèi)部庸RAM承4詠0H單元膝,而結(jié)漿果存入煌50H惱#,封51H吉單元,卵可以用堆捆棧進(jìn)行參住數(shù)傳遞,值程序如擔(dān)下:MAIN炒:M檔OV洽R1,懇#50H仗;R梅1為存做結(jié)果的指他針MOV蜘A染,4英0H睬;參A為鑰需轉(zhuǎn)換階的十六督進(jìn)制數(shù)糠SWAP隸A慨;先背轉(zhuǎn)換高位湖半字PUS扁H翠ACC劣;壓鴉棧LCAL彎LH鐵EASC塊;示調(diào)用將低糧半字節(jié)的飾內(nèi)容轉(zhuǎn)換犁;成AS形CII筒碼子程銅序HE拔ASCPOP精ACC牌MOV兇@谷R1,續(xù)A此;舍存高半鬼字節(jié)轉(zhuǎn)蛛換結(jié)果疼INC來R脾1PUS旱H撕40HLCA星LL收HE輕ASC適POP訪A羨CCMOV樂@艙R1,惜A冤;副存低半乏字節(jié)轉(zhuǎn)通換結(jié)果隱END軋HEAS榨C:M甚OV淋R0,蘿SP戰(zhàn)DEC舌R燃0DEC食R0脅;R0撐指向十塑六進(jìn)制數(shù)啦參數(shù)地址改XCH問A,蹈@R0肌;取頸被轉(zhuǎn)換參墓數(shù)ANL斷A括,???FH歪;隙保留低條半字節(jié)臨ADD錢A昂,#熟2;籠修改叮A嫂值MOV搜C艱A,惜@A+下PC鼻;毯查表寸XCH訂A鍵,@判R0;抗結(jié)果豬送回堆睡棧RETTAB:駛DB使30H忽,31標(biāo)H,3各2H,環(huán)…4.2.悟6查繼表程序設(shè)絞計(jì)查表程序床是一種常四用程序,膊它廣泛刃使用于如LED斷顯示控制徑、打印授機(jī)打印控伴制、數(shù)據(jù)曾補(bǔ)償、數(shù)買值計(jì)算、潑轉(zhuǎn)換等功除能程序中浩,這類險(xiǎn)程序具有悄簡單、執(zhí)杏行速度快破等特點(diǎn)。栽所謂查藥表法,降就是失預(yù)先將攀滿足一摸定精度壁要求的肢表示變役量與函償數(shù)值之趟間關(guān)系單的一張據(jù)表求出點(diǎn),然蹦后把這般張表存科于單片爪機(jī)的程爹序存儲值器中,牽這時燥自變量階值為單釣元地址聞,相女應(yīng)的函霜數(shù)值為勁該地址李單元中惹的內(nèi)容行。查表嘩,就跑是根據(jù)忍變量艱X在誰表格中吧查找對獲應(yīng)的函徑數(shù)值澆Y,托使艙Y紡=f(煌X)。MCS遼-51門指令系統(tǒng)勉中,有艘兩條查表床指令:凳MOV嗽C可A,禮@A+他PCMOV料C爸A,仗@A+稈DPT勺R例13一個十林六進(jìn)制鈔數(shù)存放若在內(nèi)部胖RA超M的訴H蛋EX單信元的低擔(dān)4韻位中,攜將其赤轉(zhuǎn)換成認(rèn)ASC使II碼略并送回走HE婦X單元志。十六進(jìn)制貸0孫~9的A剃SCII長碼為雷30H瓶~39H父,羊A~F的仍ASCI痰I碼為4外1H~4肢6H,棒ASCI劉I碼表格渾的首地址為為ASC飼TAB。槳編程如下飽:ORG錘100罵0H粒HEXA嚼SC:念MOV繳A,狠HEXANL姜A激,#榜0F伏HADD魂A,朵#3;圣修改指蠻針MOVC酷A,滋@A+誼PCMOV匆H倚EX,屆ARETASCT輔AB:皇DB探30H,紡31H棄,32產(chǎn)H,3棚3H,關(guān)34HDB蚊35H,蠶36H纏,37勒H,3概8H,生39HDB彼41H,浮42H垮,43市H,4剝4H,精45HDB茶46H在這個霸程序中悄,查涂表指令咸MOV書C差A(yù),鑼@A+惹PC到膠表格首顫地址有夜兩條指耽令,冶占用叮3個本字節(jié)地識址空間享,故引修改指委針應(yīng)加姐3。例1型4設(shè)有一稻個巡回獸檢測報(bào)衣警裝置認(rèn),需告對9偵6路斃輸入進(jìn)早行控制膀,每熟路有一絨個額定竟的最大職值,段是雙字警節(jié)數(shù)。皂當(dāng)檢測綿量大于倘該路對樂應(yīng)的最色大值時儲,就豪越限報(bào)夾警。假容設(shè)R2柔為保洲存檢測茅路數(shù)的即寄存器敬,其坦對應(yīng)的維最大額輪定值存不放于選31H拘和3革2H單擦元中。帳查找枝最大額栽定值的技程序如仗下:FMA均X:頌MO追V免A,區(qū)R2似ADD幸A趟,R州2輩;彩表中一謝個額定逃值為2備個字節(jié)緩MOV拴31H淘,AMOV備D獅PTR廟,#宰TAB龜;釀表首址何MOVC盞A,皮@A+株DPTR酸;查表塔讀取第一低個字節(jié)XCH羨A縣,3受1H似;隊(duì)第一個怎字節(jié)內(nèi)主容存入媽31H齡INC央D膝PTR拋MOVC殊A,罩@A+禽DPTR都;查表碗讀取第二腐個字節(jié)MOV雹32H平,A場;第二同字節(jié)的內(nèi)勺容存入3棄2HTAB慕:D暗W殖123五0H,旁14仰50H篇,.怕..DW夫22島30H港,2蘆440添H,徒...港DW辯31配20H板,3苦300似H,戴...例1應(yīng)5在一個溫?zé)岫葯z測系叼統(tǒng)中,笑溫度模擬劃信號由鈴10位芳A/D輸株入。將A記/D結(jié)果氣轉(zhuǎn)換為對掘應(yīng)溫度值矛,可采笛用查表方疏法實(shí)現(xiàn)。認(rèn)先由實(shí)欠驗(yàn)測試出綠整個溫度把量程范圍弓內(nèi)的A/掘D轉(zhuǎn)換結(jié)巷果,把榮A/D轉(zhuǎn)單換結(jié)果0悲00H~陽3FFH獄所對應(yīng)的農(nóng)溫度值組講織為一個策表存儲在么程序存儲別器中,鏟那么就可廳以根據(jù)檢依測到的模燒擬量的新A/暖D轉(zhuǎn)換值誤查找出相歷應(yīng)的溫度府值。設(shè)測得的吹A(chǔ)/D轉(zhuǎn)次換結(jié)果已非存入晌20H,敞21喇H單元中靠(高位字家節(jié)在20受H中,簽低位字節(jié)雞在21H勤中),鳳查表得到狐的溫度值唯存放在2測2H,2尚3H單元謀(高位字絕節(jié)在2揚(yáng)2H中,丟低位字窯節(jié)在23掩H中)。程序如下只:FTM叛P:稅MOV率DP舒TR,油#T嗓AB朽;D它PTR謠←表首吳地址MOV段A蠻,21墻H柄;(2圍0H)(凈21H)細(xì)×2CLR亮CRLC賓AMOV孤2鏡1H,椅AMOV澡A己,2無0HRLC餓AMOV扛2甩0H,猾AMOV覆A,重21脖H蒙;蛙表首地粥址+偏扎移量嘆ADD別C君A,講DPL避MOV殼DP質(zhì)L,峰AMOV練A,劇20剝HADDC砌A,存DPHMOV澇DP膠H,A渣CLR沃AMOVC熟A,壓@A+D海PTR;家查表得火溫度值高油位字節(jié)MOV蔽2增2H,夾ACLR順AINC驅(qū)DP調(diào)TRMOV編C鍋A,株@A+帳DPT嶄R;壘查表得從溫度值餅低位字腐節(jié)MOV蛇2酷3H,選ARETTAB:江D乖W…4.2東.7霜數(shù)制轉(zhuǎn)桿換例1昏6將一個字左節(jié)二進(jìn)制挪數(shù)轉(zhuǎn)換成悶3位眨BCD碼賤。設(shè)一個字參節(jié)二進(jìn)制紐奉數(shù)在內(nèi)部酒RAM廢40H單出元,轉(zhuǎn)息換結(jié)果放共入內(nèi)部旦RA炊M5術(shù)0H,鴿51H,廣52H徐單元中(發(fā)高位在前磁),程賤序如下:HEXB圓CD:未MOV暈A揮,40莖HMOV究B,#直100DIV鳴A華BMOV執(zhí)50H,睜AMOV粉A,#住10XCH猜A,勇BDIV揉A樓BMOV懸51瓶H,本AMOV唉52H,暖BRET例1斥7設(shè)4估位B熟CD碼覽依次存薯放在內(nèi)盡存攻RAM舞中4且0H~尚43H近單元的吊低4煩位,憶高4弦位都搏為度0,串要求將緒其轉(zhuǎn)換豬為二進(jìn)睛制數(shù),脫結(jié)果壇存入辜R2R縮慧3中瞇。一個十進(jìn)洽制數(shù)可表野示為:知Dn×1雅0n+Dn-1×10n-1+…譯+D0×100=(…催((Dn×10沫+Dn-1)×10斧+Dn-2)×1棗0+…跡)+D0當(dāng)n=3屢時,上均式可表示及為:((D3×10霞+D2)×10大+D1)×1瞧0+D0BCD桑HEX煙:M龜OV雹R益0,攪#40降H皇;視R0暢指向最椅高位地欠址MOV聰R1,婦#0忍3院;計(jì)脖數(shù)值送韻R1MOV撿R2,宵#0堡;存藥放結(jié)果司的高位忽清零MOV糞A,斜@R0斑M(jìn)OV希R3,棍ALOOP擇:忙MOV遣A高,R3找MOV謝B,裹#10怠MUL做A處BMOV登R3,蠟A削;鄰(R3顆)×1宿0的四低8碌位送鉤R3MOV裕A,勝BXCH搖A,匆R2姨;鏡(R3指)×1守0的高闊8孩位暫存剖R2MOV飯B,醒#10饑MUL廣A慌BADD盟A,墾R2購MOV宵R2猾,A如;耗R宴2×1饅0+(近R3孟×10惱)高幅8位穩(wěn)送R2針I(yè)NC可R0雄;悼取下一編個蹦BCD貞數(shù)MOV洗A,孕R3真ADD機(jī)A,裁@R璃0MOV赤R州3,A協(xié)MOV子A停,R2哭ADDC附A,到#0維;加低喊字節(jié)來的殺進(jìn)位MOV勾R賄2,A絨DJNZ呢R寶1,L粉OOPRET4.2.菊8運(yùn)限算程序一、感加、小減法程堤序例18將40產(chǎn)H開始帆存放的赤10油個字蜂節(jié)的數(shù)嬸與味50H箭開始存扔放的1夸0個夏字節(jié)的辟數(shù)相減敢(假設(shè)荒被減數(shù)沒大于減用數(shù))?;卦O(shè)被減數(shù)激指針為縮慧R0,乓減數(shù)指針秩為R1占,差數(shù)頭放回被減遮數(shù)單元,版R5槽存放字節(jié)虹個數(shù),邊則程序如晚下:SUB:逃MO壓V咽R0,龍#40H判MOV糾R1,令#5鑄0HMOV覆R5,?。?遞0CLR遭CSUB1議:MO烈V否A,@糟R0SUB嚷B虹A,釘@R1表MOV充@R究0,A梯INC箱R0INC白R1欣DJN寶Z倦R5,箏SU糧B1RET二、乘匙法運(yùn)算程泰序在計(jì)算機(jī)厭中,常胖將乘法采諷用移位和詞加法來實(shí)法現(xiàn)。例19將(R潤2R3基)和(屆R6R然7)中箭雙字節(jié)攜無符號同數(shù)相乘己,結(jié)歸果存入繩R4屬R5R戚6R7射。此乘法般可以采喉用部分策積右移癢的方法對來實(shí)現(xiàn)組,其線程序框茶圖如圖野4菊.6次所示,貧程序痕如下:NMU冶L:箭MO范V定R4困,#蔑0去;初所始化MOV均R恐5,腦#0CLR柿C欺MOV班R水0,飼#16設(shè)NMUL振1:M蛾OV權(quán)A,槐R4擔(dān);Cy拒R4R5柏R6R7牢右移一位鄰RRC邪AMOV或R4楊,AMOV遙A,伏R5RRC裂A譯MOV各R5,姜AMOV害A,米R6RRC墻A沈MOV纏R6,后AMOV旬A,杜R7RRC哭MOV載R7認(rèn),AJNC哨N村MUL阻2;鑰C為移醋出乘數(shù)懼的最低茄位MOV塔A,貪R5阻;(滔R4R非5)+每(R6微F7)燒→(R激4R5推)ADD忙A饒,R3腿MOV倡R說5,A普MOV紗A,暴R4憤ADD賽C腥A,杠R2MOV堅(jiān)R4責(zé),A悔NMUL川2:D健JNZ夠R0學(xué),NM朽UL1;跪循環(huán)1獎6位MOV趟A濱,R時4;滿最后結(jié)嘉果再移塊一位RRC璃AMOV船R拖4,訪AMOV歸A,R即5RRC況AMOV襖R陣5,喝AMOV燃A,R狼6RRC述AMOV仙R齊6,擴(kuò)AMOV攪A,匆R7RRC濕AMOV森R7,枯ARET圖4.模6N粉MUL埋程序框冬圖例20假定被乘爆數(shù)在(R獲4R3)紹中,乘優(yōu)數(shù)放在R躲2中,壓乘積放在殲R7R6旋和R5中率。MCS堂-丈51味中有抱8位汪數(shù)的乘忠法指令大MUL闖,用月它來實(shí)瓶現(xiàn)多字棉節(jié)乘法沿時,港可表示忠為(R4R護(hù)3)×(參R2)默=[(R富4)×28+(R3胡)]×(亂R2)=(R4烘)×(R棋2)×28+(R騙3)×趕(R2邪)其中(喚R4)蹈×(R楊2)和捆(R3粉)×(殼R2)超都是可描直接用朱MUL貨指令來炕實(shí)現(xiàn),樸而乘磚以28意味著喂左移朽8位勿。由此番可編寫疊如下程銳序:NMUL激1:M東OV簽A,R堤2淹MOV跡B此,R辟3MUL繳AB;品(R3掃)×(R站2)MOV姨R5,裁A;渠積的低肚位送R5牢MOV售R6,追B;槽積的高園位送R6封MOV痰A(chǔ),R串2MOV清B,R杜4MUL粉AB統(tǒng);弟(R4究)×(腐R2)挑ADD快A,遣R6旁;(浮R3)落×(R炸2)的添高位加若(R4姥)×(些R2)剪的低位MOV每A,B慈ADDC測A膀,#0灘0H偏;(厚R4)×百(R2)反的高位加緩CyMOV董R扔7,孟A糾;饒結(jié)果送荒R7RET陵三、除杜法運(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論