




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計第四章第四章 匯編語言程序設計匯編語言程序設計匯編語言源程序編輯與匯編匯編語言源程序編輯與匯編匯編語言程序設計方法匯編語言程序設計方法 4.24.1華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計程序設計過程程序設計過程程序技巧程序技巧匯編語言規(guī)范匯編語言規(guī)范匯編語言程序編輯和匯編匯編語言程序編輯和匯編常用的流程圖符號常用的流程圖符號4.1 4.1 匯編語言源程序編輯與匯編匯編語言源程序編輯與匯編華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語
2、言程序設計任務分析(硬件、軟件系統(tǒng)分析)任務分析(硬件、軟件系統(tǒng)分析)確定算法和工作步驟確定算法和工作步驟程序設計過程程序設計過程程序總體設計和流程圖繪制程序總體設計和流程圖繪制分配內(nèi)存及端口分配內(nèi)存及端口,確定程序與數(shù)據(jù)區(qū)存放地址確定程序與數(shù)據(jù)區(qū)存放地址編制源程序編制源程序仿真、調(diào)試程序仿真、調(diào)試程序固化程序固化程序華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計程序功能模塊化程序功能模塊化(按功能分:顯示、(按功能分:顯示、打印、輸入、發(fā)送等)打印、輸入、發(fā)送等)盡量采用循環(huán)結(jié)構(gòu)和子程序盡量采用循環(huán)結(jié)構(gòu)和子程序(節(jié)?。ü?jié)省內(nèi)存)內(nèi)存)12多采用累加器來
3、傳遞參數(shù)多采用累加器來傳遞參數(shù)注意現(xiàn)場保護,即壓入堆棧注意現(xiàn)場保護,即壓入堆棧34編程技巧編程技巧華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計匯編語言的規(guī)范匯編語言的規(guī)范1.1. 匯編語言源程序由以下兩種指令構(gòu)成匯編語言源程序由以下兩種指令構(gòu)成匯編語句(指令語句)匯編語句(指令語句)偽指令(指示性語句)偽指令(指示性語句)2.2. 匯編語句的格式:匯編語句的格式: 標號:標號: 操作碼操作碼操作數(shù)操作數(shù);注釋;注釋3. 3. 數(shù)據(jù)表示形式:數(shù)據(jù)表示形式: 二進制(二進制(B B)、十六進制)、十六進制(H)(H)、十進制、十進制(D(D或省略或省略)
4、)、ASCIIASCII碼(以單引號標識)碼(以單引號標識) 華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計匯編語言程序編輯和匯編匯編語言程序編輯和匯編1. 1. 編輯編輯(源程序,以(源程序,以.ASM.ASM擴展名存盤);擴展名存盤);2. 2. 匯編匯編(手工或機器匯編);(手工或機器匯編); 如:如: MOV A,#88H;機器碼;機器碼74H,88H 又如:又如:地址地址 目標碼目標碼 源程序源程序 ORG 1000H 1000H 747F MOV A,#7FH 1002H 7944 MOV R1,#44H END華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大
5、學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計常用的流程圖符號常用的流程圖符號華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計順序程序設計順序程序設計分支程序設計分支程序設計循環(huán)程序設計循環(huán)程序設計查表程序設計查表程序設計子程序設計子程序設計4.2 4.2 匯編語言程序設計方法匯編語言程序設計方法華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計順序程序設計順序程序設計例:求多項式例:求多項式解:設解:設a存放在存放在R2中,中,b存放在存放在R3中,結(jié)果存放在中,結(jié)果存放在R6和和R7中。中。2yab程序如下
6、:程序如下: MOV A, R2 MOV B, A MUL AB CLR C SUBB A, R3 ;帶進位減;帶進位減 MOV R7, A ;保存低保存低8位位 MOV A, B SUBB A,#00H ;高八位減進位;高八位減進位 MOV R6, A END華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計分支程序設計分支程序設計 AJMP、LJMP、SJMP 、JMP JZ、JNZ、CJNE、DJNZ 根據(jù)不同的條件轉(zhuǎn)向不同的處理程序根據(jù)不同的條件轉(zhuǎn)向不同的處理程序控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令 位轉(zhuǎn)移指令位轉(zhuǎn)移指令 JC、JNC、JB、JNB、JBC華南農(nóng)
7、業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計例:累加器例:累加器A內(nèi)有一個內(nèi)有一個16進制進制ASCII字符,要求轉(zhuǎn)換字符,要求轉(zhuǎn)換成一個成一個16進制數(shù)存放于進制數(shù)存放于A。ASCII字符轉(zhuǎn)換成字符轉(zhuǎn)換成16進制數(shù)規(guī)則進制數(shù)規(guī)則:數(shù)字數(shù)字09 :只需減:只需減30H字母字母AF :減:減30H,再減,再減7START0C(A)-30H A(A) 50ms,因為沒有考慮到除因為沒有考慮到除DJNZ指令之外的其它指令的執(zhí)行時間。指令之外的其它指令的執(zhí)行時間。華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計DEL: MOV
8、R7,#200 ;1 sDEL1:MOV R6,#123 ;1 s NOP ;1 sDEL2:DJNZ R6,DEL2 ;2s,計(,計(2123)s DJNZ R7,DEL1 ;2s, RET 共計共計 (21232 2)200+1 s,即,即50.001ms華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計 MOV R0,#data MOV DPTR,#bufferLOOP0:MOV A,R0 CJNE A,#24H,LOOP1 ;判斷是否為;判斷是否為 $ 字符字符 SJMP LOOP2 ;是;是 $ 字符,轉(zhuǎn)結(jié)束字符,轉(zhuǎn)結(jié)束LOOP1:MOVX DP
9、TR,A ;非;非 $ 字符,執(zhí)行傳送字符,執(zhí)行傳送 INC R0 INC DPTR SJMP LOOP0 ;傳送下一數(shù)據(jù);傳送下一數(shù)據(jù) LOOP2: 二、先判斷后執(zhí)行二、先判斷后執(zhí)行例:將內(nèi)部例:將內(nèi)部RAM中起始地址為中起始地址為data的數(shù)據(jù)串傳送到外部的數(shù)據(jù)串傳送到外部RAM中起始地址為中起始地址為buffer的存儲區(qū)域內(nèi),直到發(fā)現(xiàn)的存儲區(qū)域內(nèi),直到發(fā)現(xiàn)$ 字符停止傳字符停止傳送。由于循環(huán)次數(shù)事先不知道,但循環(huán)條件可以測試到。所送。由于循環(huán)次數(shù)事先不知道,但循環(huán)條件可以測試到。所以,采用先判斷后執(zhí)行的結(jié)構(gòu)比較適宜。程序段如下:以,采用先判斷后執(zhí)行的結(jié)構(gòu)比較適宜。程序段如下:華南農(nóng)業(yè)大學
10、工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計 例:例:200名學生參加考試,成績放在名學生參加考試,成績放在8031的外部的外部RAM的一的一個連續(xù)存儲單元,個連續(xù)存儲單元,95100分頒發(fā)分頒發(fā)A級證書,級證書,9094分頒發(fā)分頒發(fā)B級證書,級證書,編一程序,統(tǒng)計獲編一程序,統(tǒng)計獲A、B級證書的人數(shù)級證書的人數(shù)。將結(jié)果。將結(jié)果存入內(nèi)部存入內(nèi)部RAM的兩個單元。的兩個單元。 ORG 0030H EG DATA 1000H GA DATA 20H GB DATA 21H MOV GA,#00 MOV GB,#00 MOV DPTR,#EG MOV R2,#200LO
11、OP: MOVX A,DPTR CJNE A, #95, LOOP1 LOOP1: JNC NEXT1 CJNE A,#90,LOOP2LOOP2: JC NEXT INC GB SJMP NEXTNEXT1: INC GANEXT: INC DPTR DJNZ R2,LOOP SJMP $ END華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計查表程序設計查表程序設計 表格是事先存放在表格是事先存放在ROM中的,一般為一串有序的中的,一般為一串有序的常數(shù),例如平方表、字型碼表等。常數(shù),例如平方表、字型碼表等。 表格可通過偽指令表格可通過偽指令DB來確定。
12、來確定。 通過查表指令通過查表指令MOVC A,A+DPTR和和MOVC A,A+PC來實現(xiàn)。來實現(xiàn)。 用用DB、DW建立表格建立表格首地址送首地址送DPTR關(guān)鍵字送關(guān)鍵字送A查表:查表:MOVC A,A+DPTR華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計用查表法計算平方用查表法計算平方( (一一) ) ORG0000H MOVDPTR,#TABLE ;表首地址送表首地址送DPTR MOV A,#05 ;被查數(shù)字被查數(shù)字05A MOVCA,A+DPTR;查表求平方查表求平方 SJMP$ TABLE:DB 0,1,4,9,16,25,36,49,64,
13、81 END 華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計用查表法計算平方用查表法計算平方( (一一) ) 華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計 ORG0000H0000H MOVA, #05 ;05 A0002H ADDA, #02 ;修正累加器修正累加器A0004H MOVC A, A+PC;查表求平方;查表求平方0005H SJMP$ 0007H:DB0,1,4,9,16,25,36,49,64,81 END華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計使用
14、傳送指令將關(guān)鍵字送入使用傳送指令將關(guān)鍵字送入ACCADD A, #DATA指令對指令對A進行修改進行修改: : PC+DATA= =表格首地址表格首地址12MOVC A,A+PC 完成查表完成查表. .3使用使用 MOVC A,A+PC須注意須注意: :DATA=表格首地址表格首地址-指令地址指令地址-1華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計例例 : MOV A, XADDA,#01HMOVCA,A+PCRETDB00,01,04,09,10H,19H,24H,31H,30HDATA=表格首地址表格首地址-指令地址指令地址-1即:即:MOVC與與
15、DB之間的字節(jié)數(shù)之間的字節(jié)數(shù)華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計例例 設一巡回報警系統(tǒng)設一巡回報警系統(tǒng), ,對對1616路輸入進行控制路輸入進行控制, ,現(xiàn)根據(jù)測量路數(shù)現(xiàn)根據(jù)測量路數(shù), ,找出每路的最大允許值(若大于允許值就報警)。找出每路的最大允許值(若大于允許值就報警)。(查找雙字節(jié)表格)(查找雙字節(jié)表格)TB3:MOV A, R2 ADD A, R2MOV R3, A ADD A, #6 MOVCA, A+PC XCH A, R3 ADD A, #3 MOVC A, A+PC MOV R4, A RETTAB3: DW1520,3721,
16、4256 ;表格最大長度表格最大長度256 DW 華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計子程序設計子程序設計注意事項:注意事項:1. 1. 給子程序賦一個名字。實際為入口地址代號。給子程序賦一個名字。實際為入口地址代號。2. 2. 子程序調(diào)用子程序調(diào)用: ACALL、 LCALL 子程序返回子程序返回: : RETv 要能正確傳遞參數(shù):要能正確傳遞參數(shù): 入口條件:入口條件:子程序中要處理的數(shù)據(jù)如何給予。子程序中要處理的數(shù)據(jù)如何給予。 出口條件:出口條件:子程序處理結(jié)果如何存放。子程序處理結(jié)果如何存放。 (寄存器、存儲器、堆棧方式)(寄存器、存儲
17、器、堆棧方式)3. 3. 保護與恢復現(xiàn)場:保護與恢復現(xiàn)場: 保護現(xiàn)場:保護現(xiàn)場:壓棧指令壓棧指令PUSH 恢復現(xiàn)場:恢復現(xiàn)場:彈出指令彈出指令POP4. 4. 子程序可以嵌套子程序可以嵌套華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計主程序與子程序的關(guān)系主程序與子程序的關(guān)系華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計子程序的嵌套子程序的嵌套華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計子程序的調(diào)用與返回子程序的調(diào)用與返回華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章
18、匯編語言程序設計匯編語言程序設計例例 :利用查表法求平方和:利用查表法求平方和 ,設,設a、b、c分別存于內(nèi)部分別存于內(nèi)部RAM的的DA、DB、DC三個單元中。三個單元中。 MOV A,DA;取取a ACALLSQR;調(diào)用查表子程序調(diào)用查表子程序 MOV R1,A;a的平方暫存的平方暫存R1中中 MOVA,DB;取取b ACALLSQR;調(diào)用查表子程序調(diào)用查表子程序 ADDA,R1 ;求出平方和暫存于求出平方和暫存于A中中 MOVDC,A;結(jié)果存于結(jié)果存于DC 中中 SJMP$SQR:MOVDPTR,#TAB;子程序子程序 MOVCA,A+DPTR RETTAB: DB0,1,4,9,16,2
19、5,36,49,64,81 END 22cab利用利用累加累加器或器或寄存寄存器傳器傳遞參遞參數(shù)數(shù)華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計參數(shù)傳遞方法參數(shù)傳遞方法 用累加器或工作寄存器來傳遞參數(shù)用累加器或工作寄存器來傳遞參數(shù): : A、R0R7優(yōu)點:優(yōu)點:最簡單,運算速度快。最簡單,運算速度快。缺點:缺點:累加器和工作寄存器數(shù)量有限,不能傳遞累加器和工作寄存器數(shù)量有限,不能傳遞 太多參數(shù)。太多參數(shù)。 用指針寄存器來傳遞參數(shù)用指針寄存器來傳遞參數(shù): :參數(shù)存放在內(nèi)存參數(shù)存放在內(nèi)存 用堆棧來傳遞參數(shù)用堆棧來傳遞參數(shù) 程序段參數(shù)傳遞(適于傳遞大量常數(shù)參數(shù)
20、)程序段參數(shù)傳遞(適于傳遞大量常數(shù)參數(shù))華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計程序段參數(shù)傳遞程序段參數(shù)傳遞采用程序段參數(shù)傳遞的方法,編寫字符串發(fā)送的子程序:采用程序段參數(shù)傳遞的方法,編寫字符串發(fā)送的子程序: SOUT:POPDPH POP DPL SOT1: CLR A MOVCA,A+DPTR INCDPTR JZ SEND JNB TI , $ CLR TI MOV SBUF, A SJMP SOT1 SEND:JMP A+DPTR 串口發(fā)送中斷標志位華南農(nóng)業(yè)大學工程學院華南農(nóng)業(yè)大學工程學院第四章第四章 匯編語言程序設計匯編語言程序設計以發(fā)送以發(fā)送MCS-51 CONTROLLER 為例,為例,說明該子程序的調(diào)用方法:說明該子程序的調(diào)用方法:ACALLSOUT DBMCS-51 CONTROLLER DB0AH,0DH,0換行鍵換行鍵回車鍵回車鍵以上子程序特點:以上子程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年證件打印一體機項目合作計劃書
- 2025年中石化:石油腦項目合作計劃書
- 吧臺設備轉(zhuǎn)讓合同范例
- 影片拍攝投標合同范本
- 農(nóng)業(yè)技能培訓合同范本
- 司機水泥合同范例
- 合同范例新版正版
- 單位綠化施工合同范例
- LED戶外顯示屏廣告位租賃合同范本
- 個人購房合同范本簡易
- 全國青少年機器人技術(shù)等級考試一二級講稿課件-參考
- 大學計算機概論(Windows10+Office2016)PPT完整全套教學課件
- 四川峨勝水泥集團股份有限公司環(huán)保搬遷3000td熟料新型干法大壩水泥生產(chǎn)線環(huán)境影響評價報告書
- 《公路工程計量與計價》說課草稿
- 2023年教師招聘面試高中政治《堅持以人民為中心》試講稿 統(tǒng)編版 必修三
- Barrett食管醫(yī)學知識講解
- 數(shù)獨課件完整版
- 西師大版六年級數(shù)學下冊全冊知識點匯總
- DCF-現(xiàn)金流貼現(xiàn)模型-Excel模版(dcf-估值模型)
- 江西2023年分宜九銀村鎮(zhèn)銀行社會招聘上岸提分題庫3套【500題帶答案含詳解】
- 一年級美術(shù)課后服務教案-1
評論
0/150
提交評論