單片機匯編課件_第1頁
單片機匯編課件_第2頁
單片機匯編課件_第3頁
單片機匯編課件_第4頁
單片機匯編課件_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2.3 匯編語言程序設計匯編語言程序設計主要內容1. 匯編語言格式及構成2. 匯編源程序設計步驟及匯編3. 順序程序設計4. 分支程序設計5. 循環(huán)和查表程序設計6. 子程序設計2.3.1 匯編語言格式標號段:操作碼段 操作數段;注釋段如:LP1: MOV R2, #10; 設置循環(huán)次數標號段:指明所在指令操作碼字節(jié)所在的內存地址。標號由大寫英文字母開頭的字母和數字串組成,長度為18個字符。標號段可省略。2.3.2 匯編語言構成1. 指令性語句(助記符語句)2. 指示性語句(偽指令) a. ORG(起始匯編)偽指令 例:ORG 2000H; 指定程序存儲地址從2000H開始 b. END(結束

2、匯編)偽指令 例:END c. EQU(賦值)偽指令 字符名稱 EQU 數據或匯編符 ;將右邊的數據或匯編符賦給左邊的字符名稱匯編語言格式及構成例如:AA EQU R1 ;AA當作寄存器R1使用 A10 EQU 10H ;A10=10H DELAY EQU 07E6H ; DELAY=07E6H MOV R0 , A10 MOV A , AA LCALL DELAYd. DATA(數據地址賦值)偽指令 字符名稱 DATA 表達式 ;將右邊表達式(8位)賦左邊, ;只能是數據或地址等DATA型 字符名稱 XDATA 表達式; 16位 例: AA DATA 35H DELAY XDATA 0A7E

3、6H e. DB(字節(jié)定義)偽指令 標號: DB 項或項表 例: TAB: DB 45H,73,A ;將45H、73、A依次存放 ;入TAB地址開始的存儲單元 匯編語言格式及構成2.3.3 匯編源程序設計步驟及匯編源程序設計步驟:1)擬定設計任務書,設計任務書包括:程序功能、技術指標、精度等級、實施方案、工程進度、所需設備、研制費用、人員分工2)建立數學模型3)確立算法4)繪制程序流程圖5)編制匯編語言源程序6)上機調試匯編語言源程序的匯編人工匯編機器匯編匯編語言格式及構成返回2.3.4 順序程序設計例題1:求一個16位二進制負數的補碼。設此16位二進制數存于NUM、NUM+1單元 解:補碼=

4、反碼+1ORG 1000HNUM DATA 20HMOV R0,#NUMMOV A,R0 CPL AADD A,#01HMOV R0,AINC R0 MOV A,R0 CPL AADDC A,#00HMOV R0,ASJMP $END順序程序設計返回課72.3.6 循環(huán)和查表程序設計循環(huán)和查表程序設計例題3:已知內部RAM ADDR為始址的無符號數數據塊的塊長存儲于LEN單元內,請編程找出數據塊中的最大數并存入MAX單元解: ORG 1000H LEN DATA 31H MAX DATA 32H MOV R0,#ADDR ;R0指向數據塊,初始化為數據塊首地址 MOV MAX, #00H ;M

5、AX單元初始化,清零LOOP:MOV A,R0 ;開始循環(huán)體,將一個數取到A CJNE A,MAX,BRCH;比較該數與MAX的大小BRCH:JC NEXT ;若該數小,則進行下一次循環(huán) XCH A,MAX ;若該數大,則與MAX交換NEXT:INC R0 ;為下一次循環(huán)做準備 DJNZ LEN,LOOP ;判斷循環(huán)次數 SJMP $ END返回例題4:R0的低四位對應一個16進制數碼,編寫程序,將該數碼對應字符的ASCII編碼送入R1。(例如:若R0的低4位為1110B,對應16進制數碼E,則將字符E的ASCII碼送入R1) 9 8 7 6 5 4 3 2 1 0 SJMP $ MOV R0

6、, A MOVC A, A+PC 解: ORG 1000H MOV A, R0 ANL A, #0FH ADD A, #03H MOVC A, A+PC ; 查表指令 MOV R1, A ;指令長度為一個字節(jié) SJMP $ ;指令長度為兩個字節(jié)ASCTAB:DB 0, 1, 2, 3, 4 ; 制表 DB 5, 6, 7, 8, 9 DB A, B, C, D, E , F END循環(huán)和查表程序設計2.3.7 子程序設計 子程序可自動保護斷點(即主程序中下一條指令的地址),但不會自動保護現場(即運行子程序前的寄存器狀態(tài)),若要保護現場,則在子程序的開始部分用壓入堆棧命令保護現場,在結束部分用彈

7、出堆棧命令恢復現場 可利用寄存器、存儲單元或堆棧進行子程序的入口參數和出口參數傳遞例題5:設MDA和MDB內有兩數a和b,請編出求c=a2+b2并把c送入MDC的程序,設a和b皆為小于10的整數 SQRTABSQR100 81 64 49 36 25 表 16 9 4 1 0 RETMOVC A,A+PC子程序設計 ORG 1000H MDA DATA 20H MDB DATA 21 MDC DATA 22H MOV A, MDA ;入口參數傳遞 ACALL SQR ;調用子程序 MOV R1, A MOV A, MDB ACALL SQR ADD A, R1 MOV MDC, A SJMP

8、$SQR:ADD A, #01 ;子程序 MOVC A, A+PC RET ;RET為一個字節(jié)SQRTAB:DB 0, 1, 4, 9, 16 ;平方表 DB 25, 36, 49, 64, 81 END子程序設計練習1:外部RAM從2000H到2100H有一數據塊,請編出將它們傳送到3000H到3100H區(qū)域的程序。練習2:某系有200名學生參加外語統(tǒng)考,若成績存放在8031外部RAM始址為ENGLISH的連續(xù)存儲單元,現決定給成績在95分100分之間的學生頒發(fā)A級合格證書,給成績在90分94分之間的學生頒發(fā)B級合格證書。試編一程序,可以統(tǒng)計A級和B級證書的學生人數,并把統(tǒng)計結果分別存入內部

9、RAM的GRADA和GRADB單元。練習3(思考):已知:在內部RAM中,共有兩組無符號四字節(jié)被加數和加數分別存放在FIRST和SECOND為始址的區(qū)域(低字節(jié)在前,高字節(jié)在后),請編程求和(設和也為四字節(jié)),并把和存于SUM開始的區(qū)域。練習4:已知MDA和MDB內分別存有兩個小于5的整數,請用查表子程序實現C=a2+2ab+b2,并把和存于MDC單元練習5:設晶振頻率為6MHz,試編寫一能延時20ms的子程序。匯編語言程序設計練習6(思考):已知內部RAM單元MA和MB中分別有兩個有符號數,請編一減法子程序,并把差存入RESULT和RESULT+1中問題:有符號數的減法,如(-98)-98因為98D=62H=0110 0010B -98D=1001 1110則 1001 1110B- 0110 0010B=0011 1100B=3CH=3*16+12=60,結果不對算法:將帶符號數進行兩字節(jié)擴展,則高字節(jié)的各個位都與符號位相同 -98=1111 1111 1001 1110B 98=0000 0000 0110 0010B (-98)-98=1111 1111 0011 1100B 為負數,轉換為10進制數:減1

溫馨提示

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

最新文檔

評論

0/150

提交評論