匯編語言程序設計2課件_第1頁
匯編語言程序設計2課件_第2頁
匯編語言程序設計2課件_第3頁
匯編語言程序設計2課件_第4頁
匯編語言程序設計2課件_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章匯編語言程序設計復習:

匯編語句的格式

匯編語言的構成

偽指令

程序設計的步驟:

分析題意

確定算法

畫程序流程圖

編寫源程序

調試修改匯編語言程序設計2MOV A,R0 ;讀低8位

CPL A ;取反

ADD A,#1 ;加1 MOV R2,A ;存低8位

MOV A,R1 ;讀高8位

CPL A ;取反

ADDC A,#80H ;加進位及符號位

MOVR3,A ;存高8位

END 一.順序結構程序

——程序逐條執(zhí)行【例】已知16位二進制負數的原碼存放在R1R0中,試求其補碼,并將結果存在R3R2中。匯編語言程序設計2

——根據不同條件轉向不同的處理程序二.分支結構程序編寫分支程序主要在于正確使用轉移指令(條件轉移指令、比較轉移指令、位操作轉移指令)。分支程序有:單分支結構、雙分支結構、多分支結構。匯編語言程序設計2例1:求單字節(jié)有符號二進制數的補碼(設二進制數在累加器A中,將其補碼放回到A中)。分析:正數補碼是其本身,負數的補碼是其反碼加1。因此,程序首先判斷被轉換數符號,負數進行轉換,正數則不變。

JNB ACC.7,AAA

;(A)>0,不需要轉換

MOV C,ACC.7

;保存符號

MOV 00H, C

;保存符號

CPL A ADD A,#01H

MOV C,OOH

MOV ACC.7,C

;恢復符號AAA: RET匯編語言程序設計2例2:設變量x以補碼形式存放在片內RAM30H單元中,變量y與x的關系是:編程根據x的值求y值并放回原單元。分析:根據x的大小來決定y的值。

取x、判斷x的大小、給y賦值、存y匯編語言程序設計2A=?y=x+5<0>0y=20Hy=x0取x即(30H)A開始存y即y30H結束MOVA,30H

JZNEXTANLA,#80H

JZLPMOVA,#05HADDA,30HMOV30H,A

SJMPLPNEXT:MOV30H,#20HLP:SJMP$匯編語言程序設計2例3:多分支程序(散轉程序)根據R7的內容轉向相應的處理程序。設R7的內容為0~N,對應的處理程序的入口地址分別為PR0~PRN。

MOVDPTR,#TAB;置表首地址

MOVA,R7;分支轉移序號送A

RLAADDA,R7;分支轉移序號乘以3

JMP@A+DPTRTAB:LJMPPR0LJMPPR1………LJMPPRN

匯編語言程序設計2練習:兩個無符號數比較大小

將片外RAM0040H、0041H地址中的內容相比較,其中較大數存入片外RAM0042H地址中。匯編語言程序設計2——按某種控制規(guī)律重復執(zhí)行的程序三.循環(huán)結構程序循環(huán)程序一般由:初始化部分循環(huán)體部分--處理部分、修改部分、控制部分結束部分其結構一般有兩種:先進入處理部分,再控制循環(huán)至少執(zhí)行一次循環(huán)體先控制循環(huán),再進入處理部分循環(huán)體是否執(zhí)行,取決于判斷結果。匯編語言程序設計2開始設置循環(huán)初值循環(huán)處理循環(huán)修改結束處理結束循環(huán)結束?開始設置循環(huán)初值循環(huán)處理循環(huán)修改結束處理結束循環(huán)結束?YN先執(zhí)行后判斷先判斷后執(zhí)行匯編語言程序設計2例1:假設在片內RAM40H單元開始存放有8個無符號字節(jié)數,找出其中最大值,存入30H單元中。

MOVR0,#40HMOVR2,#7MOV30H,@R0LOOP:INCR0MOVA,@R0CJNEA,30H,NEXTNEXT:JCLOP1MOV30H,ALOP1:DJNZR2,LOOPEND匯編語言程序設計2例2:將內部數據存儲器30H~7FH單元的內容傳送到外部數據存儲器以1000H開始的連續(xù)單元中去。解:30H~7FH共計80個單元,需傳送80次數據。將R2作為循環(huán)計數寄存器。開始R0←30HDPTR←1000HR7←50HA←((R0))(DPTR←(A)R0←(R0)+1DPTR←(DPTR)+1R7=0?結束No

MOV R0, #30H MOV DPTR,#1000H MOV R2, #50HLOP: MOV A,@R0 MOVX @DPTR,A INC R0

INC DPTR DJNZ R2,LOP

END匯編語言程序設計2例3:將內部RAM中起始地址為data的數據串送到外部RAM中起始地址為buffer的存儲區(qū)域中,直到發(fā)現‘$’字符,傳送停止。----循環(huán)次數事先不知道先判斷,后執(zhí)行。MOVR0,#dataMOVDPTR,#bufferLOOP1:MOVA,@R0CJNEA,#24H,LOOP2;判斷是否為$字符

SJMPLOOP3;是,轉結束LOOP2:MOVX@DPTR,A;不是,傳送數據

INCR0INCDPTRSJMPLOOP1;傳送下一數據LOOP3:END13匯編語言程序設計2例4:編寫延時10ms子程序,fosc=12MHz。解:fosc=12MHz,一個機器周期為1s。MOVR6,#20;置外循環(huán)次數DLP1:MOVR7,#250;置內循環(huán)次數DLP2:DJNZR7,DLP2;2機周×250=500機周

DJNZR6,DLP1;500機周×20=10000機周

RET說明:MOVRn指令為1個機器周期;DJNZ指令為2個機器周期;RET指令為2個機器周期;{[(2×250)+1+2]×20+1+2}×1s=10063

s≈10ms匯編語言程序設計21.數制轉換:136=

B=

H;12.34H=

B。2.MOVA,@R1指令中源操作數的尋址方式是

。3.使用51單片機的片內ROM時,需將

引腳接

電平。4.當晶振頻率為12MHz時,一個機器周期為

。5.若A=82H,R0=40H,CY=1,執(zhí)行指令ADDCA,R0后,A=

,CY=

,AC=

,OV=

,P=

。6.執(zhí)行下列程序段后,(P1)=

H。MOVP1,#5DHCPLP1.1CPLP1.2CLRP1.6SETBP1.77.假定(50H)=0A4H,執(zhí)行下列指令:

溫馨提示

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

評論

0/150

提交評論