程序設計概要實用教案_第1頁
程序設計概要實用教案_第2頁
程序設計概要實用教案_第3頁
程序設計概要實用教案_第4頁
程序設計概要實用教案_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、支持寫入單片機或仿真調試的目標程序有兩種文件格式:支持寫入單片機或仿真調試的目標程序有兩種文件格式: BIN BIN文件和文件和 HEX HEX文件文件 BIN BIN文件是由編譯器生成的二進制文件,是程序的機器碼,文件是由編譯器生成的二進制文件,是程序的機器碼, HEX HEX文件是由文件是由INTERINTER公司定義公司定義(dngy)(dngy)的一種格式,這種格式包括地址、數(shù)據(jù)和的一種格式,這種格式包括地址、數(shù)據(jù)和校驗碼,并用校驗碼,并用ASCIIASCII碼來存儲,可供顯示和打印。碼來存儲,可供顯示和打印。HEXHEX文件需通過符號轉換程序文件需通過符號轉換程序OHS51OHS51

2、進行轉換進行轉換 兩種語言的操作過程見圖兩種語言的操作過程見圖3-13-1。第1頁/共54頁第一頁,共55頁。連接連接(linji)/定位器定位器L51匯編語言匯編語言(hu bin y yn)源程序源程序匯編器匯編器A51符號轉換符號轉換(zhunhun)程序程序OHS51絕對地址目絕對地址目標程序標程序 .BINC語言程序語言程序浮動浮動地址地址目標目標程序程序編譯器編譯器C51 HEX圖圖 3-1 兩種語言源程序轉換成目標程序兩種語言源程序轉換成目標程序第2頁/共54頁第二頁,共55頁。 目前很多公司將編輯器、匯編器、編目前很多公司將編輯器、匯編器、編譯器、連接譯器、連接/ /定位器、符

3、號轉換程序做成集定位器、符號轉換程序做成集成軟件包,用戶進入該集成環(huán)境,編輯好程成軟件包,用戶進入該集成環(huán)境,編輯好程序后,只需點擊相應序后,只需點擊相應(xingyng)(xingyng)菜單就可菜單就可以完成上述的各步,如以完成上述的各步,如WAVEWAVE、KEIL KEIL ,WAVEWAVE集成軟件的使用見附錄。集成軟件的使用見附錄。匯編:將匯編語言源程序轉換成機器語言目匯編:將匯編語言源程序轉換成機器語言目標程序的過程稱為匯編。標程序的過程稱為匯編。匯編程序:能將匯編語言源程序轉換成機器匯編程序:能將匯編語言源程序轉換成機器語言目標程序的系統(tǒng)軟件稱為匯編程序。語言目標程序的系統(tǒng)軟件

4、稱為匯編程序。第3頁/共54頁第三頁,共55頁。匯編的方法:匯編的方法有兩種匯編的方法:匯編的方法有兩種1.1.手工匯編:手工匯編: 人工查指令表,查出程序中每條指令人工查指令表,查出程序中每條指令對應的機器代碼。早期的計算機使用。對應的機器代碼。早期的計算機使用。2.2.機器匯編:機器匯編: 用計算機中的匯編程序對用戶用計算機中的匯編程序對用戶(yngh)(yngh)源程序進行匯編。源程序進行匯編。 用機器匯編要提供給匯編一些信息,用機器匯編要提供給匯編一些信息,遵循匯編程序的一些約定。這些由偽指令遵循匯編程序的一些約定。這些由偽指令指定。指定。第4頁/共54頁第四頁,共55頁。3)提供錯誤

5、信息4)提供目標執(zhí)行文件(wnjin)(*.OBJ/*.HEX)和列表文件(wnjin)(*.LST) 地址(dzh) 機器碼 源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0,#30H 2002H E6 MOV A,R0 匯編匯編(hubin)的主要任務的主要任務1)確定程序中每條匯編語言指令的指令機器碼2)確定每條指令在存儲器中的存放地址第5頁/共54頁第五頁,共55頁。1.機器指令:指令系統(tǒng)中的全部指令。每條機器指令都有對應的機器代碼,可以被CPU執(zhí)行。2.偽指令: 匯編(hubin)控制指令,沒有指令代碼,只用于匯編(hubin)過程,為匯編(hubin)程

6、序提供匯編(hubin)信息。一 . 匯 編 語 言 指 令(zhlng)類型3.宏指令 宏匯編功能:將需要反復多次執(zhí)行的程序段定義(dngy)成一個宏指令名(宏定義(dngy))。編程時,可在程序中使用宏指令名來替代被定義(dngy)的程序段(宏調用)。第6頁/共54頁第六頁,共55頁。宏定義(dngy)過程宏調用過程: 宏指令(zhlng)名 實際參數(shù) 宏指令(zhlng)名 實際參數(shù)宏指令(zhlng)名 MACRO 形式參數(shù) ;被定義的程序段 ENDM第7頁/共54頁第七頁,共55頁。二偽指令二偽指令 常用常用(chn yn)(chn yn)偽偽指令及功能指令及功能1.1.起始指令起始

7、指令 ORG nn ORG nn功能:定義程序功能:定義程序(chngx)(chngx)或數(shù)據(jù)塊的起始地址?;驍?shù)據(jù)塊的起始地址。指示此語句后面的程序指示此語句后面的程序(chngx)(chngx)或數(shù)據(jù)塊以或數(shù)據(jù)塊以nnnn為為起始地址,連續(xù)存放在程序起始地址,連續(xù)存放在程序(chngx)(chngx)存儲器中。存儲器中。 指令地址指令地址 機器碼機器碼源程序源程序(chngx)(chngx) ORG 2000H ORG 2000H 2000H 78 30 2000H 78 30 MAIN MAIN:MOV R0MOV R0,#30H#30H 2002H E6 2002H E6 MOV A M

8、OV A,R0R0 ORG 3000H 3000H 23 TAB: DB 23H,100,A 3001H 64 3002H 41第8頁/共54頁第八頁,共55頁。2.字節(jié)定義 標號: DB(字節(jié)常數(shù),或字符(z f)或表達式)功能:指示在程序存儲器中以標號為起始地址的單元里存放的數(shù)為字節(jié)數(shù)據(jù)(八位二進制數(shù))。例如 LN:DB 32,C,25H,-1LNLN+3 地址單元依次存放20H , 43H , 25H ,F(xiàn)FH地址地址 數(shù)據(jù)數(shù)據(jù)LN20LN+143LN+225LN+3FF3.3.字定義字定義 標號:標號:DW DW (字常數(shù)或表達式)(字常數(shù)或表達式)作用:作用: 指示指示(zhsh)(

9、zhsh)在程序存儲器中以在程序存儲器中以標號為標號為起始地址的單元里存放的數(shù)為字數(shù)據(jù)起始地址的單元里存放的數(shù)為字數(shù)據(jù)(即(即1616位的二進制數(shù)),例如:位的二進制數(shù)),例如:GH GH :DW 1234HDW 1234H,5678H5678H,0808GH1234GH+25678GH+40008第9頁/共54頁第九頁,共55頁。 5. 5.等值指令等值指令 標號標號 EQU EQU(數(shù)值(數(shù)值(shz)(shz)表達式)表達式) 表示表示EQUEQU兩邊的量等值,用于為標號或標識符賦值。兩邊的量等值,用于為標號或標識符賦值。 例如:例如:X1 EQU 2000HX1 EQU 2000H X

10、2 EQU 0FH X2 EQU 0FH MAIN:MOV DPTR MAIN:MOV DPTR,#X1 ; DPTR=2000H #X1 ; DPTR=2000H ADD A ADD A,#X2 ; A=A+0FH#X2 ; A=A+0FH4.4.保留字節(jié)保留字節(jié) 標號:標號:DS DS (數(shù)值表達式)(數(shù)值表達式)作用:指示在程序存儲器中保留以標號為起始地作用:指示在程序存儲器中保留以標號為起始地址的若干址的若干(rugn)(rugn)字節(jié)單元,其單元個數(shù)由數(shù)值表達式指定。字節(jié)單元,其單元個數(shù)由數(shù)值表達式指定。例如例如 L1 L1:DS 32 ; DS 32 ; 從從L1L1地址開始保留地

11、址開始保留3232個存儲單元。個存儲單元。第10頁/共54頁第十頁,共55頁。6. 6. 位定義位定義(dngy) (dngy) 標號標號 BIT BIT 位地址位地址 作用:作用: 同同EQUEQU指令,不過定義指令,不過定義(dngy)(dngy)的是位操作地址。的是位操作地址。例如例如 AIC BIT P1.1 AIC BIT P1.1。7.7.匯編結束匯編結束(jish) END(jish) END作用:作用: 指示源程序段結束指示源程序段結束(jish)(jish)。 END END指令放在程序的最后。指令放在程序的最后。A51A51匯編程序還有一些其它的偽指令,列在教材匯編程序還有

12、一些其它的偽指令,列在教材表表3-13-1中,以備查閱。中,以備查閱。第11頁/共54頁第十一頁,共55頁。3-2 3-2 匯編語言匯編語言(hu bin y yn)(hu bin y yn)程序程序設計步驟設計步驟一一. .確定方案和計算方法確定方案和計算方法二二. .了解應用系統(tǒng)的硬件配置了解應用系統(tǒng)的硬件配置(pizh)(pizh)、性能指標、性能指標三三. .建立系統(tǒng)數(shù)學模型,確定控制算法和操作步驟建立系統(tǒng)數(shù)學模型,確定控制算法和操作步驟四四. .合理分配存儲器單元和了解合理分配存儲器單元和了解I/OI/O接口地址接口地址五.編制源程序1.按功能設計程序,明確(mngqu)各程序之間的

13、相互關系2.用流程圖表示程序結構和功能3.程序中用注釋說明指令在程序中的作用,方便閱讀、調試和修改第12頁/共54頁第十二頁,共55頁。順序程序設計順序程序設計例例3-1 3-1 編程將外部數(shù)據(jù)存儲器編程將外部數(shù)據(jù)存儲器的的000EH000EH和和000FH000FH單元單元(dnyun)(dnyun)的內容相換。的內容相換。常用常用(chn yn)(chn yn)程序結程序結構構 順序程序、分支程序順序程序、分支程序 循環(huán)程序、子程序循環(huán)程序、子程序000EH000FH000EH000FH000EH000FH000EH000FH分析分析: : 外部數(shù)據(jù)存儲器的數(shù)據(jù)操作外部數(shù)據(jù)存儲器的數(shù)據(jù)操作

14、只能用只能用MOVXMOVX指令,且只能和指令,且只能和A A之間之間傳送,因此必須用一個中間環(huán)節(jié)作傳送,因此必須用一個中間環(huán)節(jié)作暫存,設用暫存,設用20H20H單元單元(dnyun)(dnyun)。用。用R0R0、R1R1指示兩單元指示兩單元(dnyun)(dnyun)的低的低八位地址,高八位地址由八位地址,高八位地址由P2P2指示。指示。編程過程如下:編程過程如下: 000EH000FH000EH000FH000EH000FH第13頁/共54頁第十三頁,共55頁。 ORG 0000H MOV P2, #00H ;送地址(dzh)高八位至P2口 MOV R0, #0EH ;R0= 0EH M

15、OV R1, #0FH ;R1=OFH MOVX A, R0 ;A=(000EH) MOV 20H, A ;(20H)=(000EH) MOVX A, R1 ;A=(000FH) XCH A, 20H ; A=(000EH),(20H)=(000FH) MOVX R1, A MOV A, 20H MOVX R0, A ;交換后的數(shù)送各單元 SJMP $ END第14頁/共54頁第十四頁,共55頁。3-3 3-3 順序程序順序程序順序程序順序程序( (簡單程序簡單程序) ),程序走向只有一條,程序走向只有一條(y tio)(y tio)路徑路徑例3-2:將R4R5雙字節(jié)符號數(shù)求補碼(b m)程序

16、。 ORG 0000H MOV A,R4 JB ACC.7, CPLL ;判符號(fho)位 SJMP $ ;正數(shù)的補碼原碼CPLL: MOV A,R5 ;取低字節(jié) CPL A ADD A,#1 ;低字節(jié)變補 MOV R5,A MOV A,R4 ;取高字節(jié) CPL A ADDC A,#0 ;高字節(jié)變補 ORL A, #80H ;恢復負號 MOV R4,A SJMP $第15頁/共54頁第十五頁,共55頁。地址數(shù)據(jù)TAB0TAB+1 1TAB+2 4TAB+3 9TAB+4 16TAB+5 25例例3-5 3-5 設變量放在片內設變量放在片內RAMRAM的的20H20H單元單元, ,其值為其值為

17、00H-05H00H-05H之間之間, ,要求編查表程序要求編查表程序(chngx),(chngx),查出變量的平方值查出變量的平方值, , 并放并放入片內入片內RAMRAM的的21H21H單元。單元。 ORG 0000H ORG 0000H MOV DPTR, #TAB MOV DPTR, #TAB MOV A, 20H MOV A, 20H MOVC A, A+DPTR ; MOVC A, A+DPTR ;查表查表 MOV 21H, AMOV 21H, A SJMP $ SJMP $TAB: DB 0,1,4,9,16,25 TAB: DB 0,1,4,9,16,25 END END分析分

18、析 :在程序存儲器安排一張平方表,首地址:在程序存儲器安排一張平方表,首地址(dzh)(dzh)為為TABTAB,以,以DPTRDPTR指向指向表首址,表首址,A A存放變量值,利用查表指令存放變量值,利用查表指令MOVC AMOVC A,A+DPTRA+DPTR,即可求得,即可求得表中數(shù)據(jù)用表中數(shù)據(jù)用BCDBCD碼存放合乎人們的習慣碼存放合乎人們的習慣. . 如果平方值為兩個字節(jié)如果平方值為兩個字節(jié)(z ji),程序應如何編。,程序應如何編。DPTRA第16頁/共54頁第十六頁,共55頁。 ORG 0000H MOV A,R2 JNB ACC.7,N ;為正數(shù)(zhngsh)? CPL A

19、;負數(shù)變補 INC A MOV R2,AN: SJMP $ ;結束3.4 分支程序的設計由條件(tiojin)轉移指令構成程序判斷框部分,形成分支結構3.4.1 單分支程序一個判斷(pndun)決策框,兩種分支結構圖。條件滿足條件滿足?N影響條件影響條件Y處理處理1處理處理2例1 求8位有符號數(shù)的絕對值。方法:正數(shù)不變,負數(shù)變補條件滿足條件滿足?N影響條件影響條件Y處理段處理段第17頁/共54頁第十七頁,共55頁。 例例2 2 用單片機加重力傳感器作磅秤,稱出重量用單片機加重力傳感器作磅秤,稱出重量(zhngling)(zhngling)后算出行李運費價格,其稱出的重量后算出行李運費價格,其稱

20、出的重量(zhngling)(zhngling)以以10kg10kg為為1 1個計價單位個計價單位G , GG , G已存入已存入40H40H單元。最終運費存放在單元。最終運費存放在41H41H單元。計價方法單元。計價方法為為50kg50kg以內按以內按3 3元元/G, 50kg/G, 50kg以上以上計價計價: : 總重按總重按3 3元元/G,/G,,超過,超過50kg50kg部分加收部分加收2 2元。元。 由此列出算式:由此列出算式: G3+(G-5)2;當G5M=M=G G3 ;3 ;當當G5 G5 3G3G因重復使用,先暫存在因重復使用,先暫存在(cnzi)R2(cnzi)R2。流程見

21、左。流程見左, , 程序如程序如下:下:第18頁/共54頁第十八頁,共55頁。 ORG 0100HFRT: MOV A,40H;取行李(xng li)重量計價單位GMOV R3,AMOV B,#03H;運費M=G3MUL ABMOV R2,A;暫存3G MOV A,R3 ;取回G CJNE A,#05H,L1 ;G 5 ?SJMP WETCL1:JC WETC ;小于5,轉至WETCSUBB A,#05H;否則 M=3G+2(G-5) RLC AADD A,R2 MOV R2 ,AWETC:MOV 41H,R2 ;存運費 M RET第19頁/共54頁第十九頁,共55頁。 多分支散轉程序的設計多

22、分支散轉程序的設計 有一類分支程序有一類分支程序,它根據(jù)不同的輸入條件或不同的運它根據(jù)不同的輸入條件或不同的運算結果算結果,轉向不同的處理程序轉向不同的處理程序,稱之為散轉程序。這類程序稱之為散轉程序。這類程序通常利用通常利用JMP A+DPTR間接轉移指令實現(xiàn)轉移。有如間接轉移指令實現(xiàn)轉移。有如下兩種設計方法:下兩種設計方法: 1. 查轉移地址表查轉移地址表: 將轉移地址列成表格,將表格的內容作轉移的目標地將轉移地址列成表格,將表格的內容作轉移的目標地址。址。 2. 查轉移指令表查轉移指令表: 將轉移到不同程序的轉移指令列成表格,判斷條件后將轉移到不同程序的轉移指令列成表格,判斷條件后查表,

23、轉到表中指令執(zhí)行查表,轉到表中指令執(zhí)行,下面下面(xi mian)用兩個例子說明。用兩個例子說明。第20頁/共54頁第二十頁,共55頁。1. 1. 利用轉移地址表實現(xiàn)轉移利用轉移地址表實現(xiàn)轉移 例例3-7 3-7 根據(jù)根據(jù)R3R3的內容轉向對應的程序,的內容轉向對應的程序,R3R3的內容為的內容為0 0n,n,處理程序的入口符號地址分別為處理程序的入口符號地址分別為PR0PR0PRn PRn (n128)(nR1 MOV R2,#0 ;存放結果的高位清零;存放結果的高位清零 MOV A, R0 ;BCD碼千位數(shù)碼千位數(shù)A MOV R3, ALOOP: MOV A, R3 MOV B, #10

24、MUL AB MOV R3,A ;R3*10低低8位位R3 MOV A, B XCH A,R2 ;R3*10高高8位暫存位暫存R2 MOV B, #10 MUL AB ADD A,R2 ;R2*10(R3*10)高)高8位位第40頁/共54頁第四十頁,共55頁。MOV R2, AINC R0 ;取下一個;取下一個(y )BCD數(shù)數(shù)MOV A, R3ADD A, R0MOV R3, AMOV A, R2ADDC A,#0 ;加低字節(jié)來的進位;加低字節(jié)來的進位MOV R2, ADJNZ R1, LOOPSJMP $END第41頁/共54頁第四十一頁,共55頁。 MCS-51 MCS-51單片機有著

25、優(yōu)異單片機有著優(yōu)異(yuy)(yuy)的位邏輯功能的位邏輯功能, ,可以方便可以方便的實現(xiàn)各種復雜的邏輯運算的實現(xiàn)各種復雜的邏輯運算. .這種用軟件替代硬件這種用軟件替代硬件的方法的方法, ,可以大大簡化甚至完全不用硬件可以大大簡化甚至完全不用硬件, ,但比硬件但比硬件要多花運算時間。要多花運算時間。例例3-17 3-17 編寫一程序編寫一程序, ,以實現(xiàn)圖以實現(xiàn)圖3-73-7中的邏輯運算電路中的邏輯運算電路. .3.6 3.6 位操作程序設計位操作程序設計(chn (chn x sh j)x sh j)第42頁/共54頁第四十二頁,共55頁。P1.311&1P1.1P2.2TF0IE

26、125H(位)26H(位) 其中其中P1.1P1.1和和P2.2P2.2分別是端口線上的信息分別是端口線上的信息,TF0,TF0和和IE1IE1分別是定時分別是定時(dn sh)(dn sh)器定時器定時(dn sh)(dn sh)溢出標志和外溢出標志和外部中請求標志部中請求標志, 25H, 25H和和26H26H分別是兩個位地址分別是兩個位地址, , 運算結果運算結果由端口線由端口線P1.3P1.3輸出。輸出。. . 圖圖3-4 硬件硬件(yn jin)邏輯運算電路邏輯運算電路第43頁/共54頁第四十三頁,共55頁。程序(chngx)如下:START:MOV C,P2.2 ORL C,TF0

27、 ANL C,P1.1 MOV F0,C MOV C,IE1 ORL C,/25H ANL C,F0 ANL C,/26H MOV P1.3,C SJMP $第44頁/共54頁第四十四頁,共55頁。例3-18 設累加器A的各位ACC.0ACC.7分別(fnbi)記為X0X7,編制程序用軟件實現(xiàn)下式: Y=X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X7 X0 BIT ACC.0 X1 BIT ACC.1 X2 BIT ACC.2 X3 BIT ACC.3 X4 BIT ACC.4 X5 BIT ACC.5 X6 BIT ACC.6 X7 BIT ACC.7第45頁/共54頁第四十

28、五頁,共55頁。 ORG 0000HMOV C, X0ANL C, X1ANL C, X2MOV 00H,C ;X0X1X2MOV C, X0ANL C, /X1MOV 01H, C ;X0X1ANL C, /X2ORL C, 00HMOV 00H, C MOV C, X2ANL C, 01HANL C, X3 ;X0X1X2X3ORL C, /00HMOV 00H, C MOV C, X7ANL C, /X6ANL C, /X5ANL C, /X4 ; X4 X5 X6 X7ORL C, 00H ; 最終(zu zhn)結果 YC SJMP $ 第46頁/共54頁第四十六頁,共55頁。 子程

29、序是構成單片機應用程序必不可少的部子程序是構成單片機應用程序必不可少的部分,通過分,通過ACALLACALL和和LCALLLCALL兩條子程序調用指令,可兩條子程序調用指令,可以十分方便地用來調用任何以十分方便地用來調用任何(rnh)(rnh)地址處的子程序。地址處的子程序。 子程序節(jié)省占用的存儲單元,使程序簡短清子程序節(jié)省占用的存儲單元,使程序簡短清晰,善于靈活的使用子程序,是程序設計的重要晰,善于靈活的使用子程序,是程序設計的重要技巧之一。技巧之一。 子程序必須以子程序必須以RETRET指令結尾指令結尾. . 在調用子程序時,有以下幾點應注意:在調用子程序時,有以下幾點應注意:3.7 3.

30、7 子程序子程序 當一段程序當一段程序(chngx)(chngx)需多次應用需多次應用, ,或為多人應用或為多人應用時時, ,這段程序這段程序(chngx)(chngx)編為子程序編為子程序(chngx).(chngx).第47頁/共54頁第四十七頁,共55頁。 1 1)保護現(xiàn)場。)保護現(xiàn)場。 如果在調用前主程序已經使用了某些存儲單元或寄存器,在調用如果在調用前主程序已經使用了某些存儲單元或寄存器,在調用時,這些寄存器和存儲單元又有其他用途,就應先把這些單元或寄存器時,這些寄存器和存儲單元又有其他用途,就應先把這些單元或寄存器中的內容壓入堆棧保護,調用完后再從堆棧中彈出以便加以恢復。如果中的內

31、容壓入堆棧保護,調用完后再從堆棧中彈出以便加以恢復。如果有較多的寄存器要保護,應使主、子程序使用不同的寄存器組。有較多的寄存器要保護,應使主、子程序使用不同的寄存器組。 2 2)設置入口參數(shù)和出口參數(shù)。)設置入口參數(shù)和出口參數(shù)。 用之前主程序要按子程序的要求設置好地址用之前主程序要按子程序的要求設置好地址(dzh)(dzh)單元或存儲單元或存儲器(稱為入口參數(shù)),以便子程序從指定的地址器(稱為入口參數(shù)),以便子程序從指定的地址(dzh)(dzh)單元或存儲器單元或存儲器獲得輸入數(shù)據(jù);獲得輸入數(shù)據(jù); 子程序經運算或處理后的結果存放到指定的地址子程序經運算或處理后的結果存放到指定的地址(dzh)(

32、dzh)單元或單元或寄存器(稱為出口參數(shù)),主程序調用后從指定的地址寄存器(稱為出口參數(shù)),主程序調用后從指定的地址(dzh)(dzh)單元或單元或寄存器讀取運算或處理后的結果,只有這樣,才能完成子程序和主程序寄存器讀取運算或處理后的結果,只有這樣,才能完成子程序和主程序間的數(shù)據(jù)的正確傳遞。間的數(shù)據(jù)的正確傳遞。 3 3)子程序中可包括對另外子程序的調用,稱為子程序嵌套。)子程序中可包括對另外子程序的調用,稱為子程序嵌套。第48頁/共54頁第四十八頁,共55頁。例例3-16 3-16 用程序實現(xiàn)用程序實現(xiàn)c=a2+b2c=a2+b2,設,設a,ba,b均小于均小于1010。a a存放在存放在31

33、H31H單元,單元,b b存放在存放在32H32H單元,把單元,把c c存入存入34H34H和和33H33H單元。單元。(和要求為(和要求為BCDBCD碼)。碼)。 解:因該算式兩次用到平方解:因該算式兩次用到平方(pngfng)(pngfng)值,所以值,所以在程序中采用把求平方在程序中采用把求平方(pngfng)(pngfng)編為子程序的方法。編為子程序的方法。求平方求平方(pngfng)(pngfng)采用查表法采用查表法, ,主程序和子程序編寫主程序和子程序編寫如下:如下:第49頁/共54頁第四十九頁,共55頁。主程序: ORG 0000H MOV SP,#3FH MOV A,31H

34、 ;取aLCALL SQR ;求a方MOV R1,AMOV A,32H ;取bLCALL SQR ;求b方ADD A,R1 ;求和(qi h)DA A ;調整MOV 33H,A MOV A,#0ADDC A,0 MOV 34H,A SJMP $ 子程序: ORG 0030HSQR:INC A MOVC A,A+PC RETTAB:DB 00H,01H,04H,09H,16H,25H,36H,49H64H,81H END第50頁/共54頁第五十頁,共55頁。例例3 317 17 求兩個無符號數(shù)據(jù)塊中的最大值的乘積。數(shù)據(jù)塊求兩個無符號數(shù)據(jù)塊中的最大值的乘積。數(shù)據(jù)塊的首地址分別為的首地址分別為60H

35、60H和和70H70H,每個數(shù)據(jù)塊的第一個字節(jié),每個數(shù)據(jù)塊的第一個字節(jié)(z (z ji)ji)都存放數(shù)據(jù)塊長度。結果存入都存放數(shù)據(jù)塊長度。結果存入5FH5FH和和5EH5EH單元單元 分析分析 本例可采用分別求出兩個數(shù)據(jù)塊的最大值,然后本例可采用分別求出兩個數(shù)據(jù)塊的最大值,然后求積的方法,求最大值的過程可采用子程序。子程序的入求積的方法,求最大值的過程可采用子程序。子程序的入口參數(shù)時數(shù)據(jù)塊首地址,存放在口參數(shù)時數(shù)據(jù)塊首地址,存放在R1R1中,出口參數(shù)即為最大中,出口參數(shù)即為最大值,存放在值,存放在A A中。下面分別列出主程序中。下面分別列出主程序 和子程序。和子程序。主程序:主程序:ORG 0100HORG 0100H MOV R1,#60H ; MOV R1,#60H ;置入口條件參數(shù)置入口條件參數(shù) ACALL QMAX ; ACALL QMAX ;調求最大值子程序調求最大值子程序 MOV B, A ; MOV B, A ;第一個數(shù)據(jù)塊的最大值暫存第一個數(shù)據(jù)塊的最大值暫存B B MOV R1, #

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論