




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
四、程序分析及編程1.設(A)=04H,(CY)=1,寫出以下各條指令的結果。RLA;〔A〕=08HRRA;〔A〕=02HRLCA;〔A〕=09HRRCA;〔A〕=82H2.設(A)=7AH,(R0)=30H,(30H)=A5H,(CY)=1,寫出以下各條指令的結果。MOVA,R0(A)=30H(R0)=30HXCHA,R0(A)=30H(R0)=30HXCHDA,@R0(A)=A5H(R0)=30H(30H)=30HADDA,#30H(A)=D5H(CY)=1ADDCA,30H(A)=06H(CY)=1SUBBA,#30H(A)=D5H(CY)=13.以下程序段的功能是什么? PUSH A PUSH B POP A POP B答:交換A、B的內容4.程序執行前有A=02H,SP=52H,〔51H〕=FFH,(52H)=FFH。下述程序執行后:請問:A=〔〕,SP=〔〕,〔51H〕=〔〕,〔52H〕=〔〕,PC=〔〕。 POP DPH POP DPL MOV DPTR,#4000H RL A MOV B,A MOVC A,@A+DPTR PUSH A MOV A,B INC A MOVC A,@A+DPTR PUSH A RET ORG 4000H DB 10H,80H,30H,50H,30H,50H 答:〔A〕=50H,〔SP〕=50H,(51H)=30H,(52H)=50H,〔PC〕=5030H5.假定A=83H,〔R0〕=17H,〔17H〕=34H,執行以下指令后,A的內容為〔〕。: ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 答:0CBH6.如果DPTR=507BH,SP=32H,〔30H〕=50H,〔31H〕=5FH,〔32H〕=3CH,那么執行以下指令后那么:DPH=〔〕,DPL=〔〕,SP=〔〕: POP DPH POP DPL POP SP 答:DPH=3CH,DPL=5FH,SP=4FH7.假定,SP=60H,A=30H,B=70H,執行以下指令后,SP的內容為〔〕,61H單元的內容為〔〕,62H單元的內容為〔〕。 PUSH A PUSH B 答:62H,30H,70H8.計算下面子程序中指令的偏移量和程序執行的時間〔晶振頻率為12MHz〕。 MOV R3,#15H ;1個機器周期 DL1:MOV R4,#255 ;1個機器周期 DL2:MOV P1,R3 ;2個機器周期 DJNZ R4,DL2 ;2個機器周期 DJNZ R3,DL1 ;2個機器周期 RET ;2個機器周期答:15348us析:〔〔2+2〕×255+1+2〕×15+1+2=15348us9.假定A=83H,〔R0〕=17H,〔17H〕=34H,執行以下指令后,A的內容為〔〕。 ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 答:0CBH10.如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,那么執行以下指令后:DPH內容為〔〕,DPL內容為〔〕,SP內容為〔〕。POP DPH;POP DPL;POP SP;答:(DPH)=3CH,〔DPL〕=5FH,〔SP〕=50H11.假設外部數據存儲器2000H單元的內容為80H,執行以下指令后,累加器A中的內容為〔〕。 MOV P2,#20H MOV R0,#00H MOVX A,@R0答:累加器A中的內容為〔80H〕12.閱讀以下程序段并答復以下問題。(1〕.該程序執行何種操作?(2〕.初值〔60H〕=23H,〔61H〕=61H,運行程序后62H內容〔〕CLRCMOVA,#9AHSUBBA,60HADDA,61HDAAMOV62H,A答:1〕、該程序是單字節BCD碼運算,是將〔61H〕—〔60H〕→62H2〕、〔62H〕=38H13.試編寫1個程序,將內部RAM中45H單元的高4位清0,低4位置1。答:MOV A,45H ANL A,#0FH ORL A,#0FH MOV 45H,A14.試編寫程序,查找在內部RAM的30H~50H單元中是否有0AAH這一數據。假設有,那么將51H單元置為“01H〞;假設未找到,那么將51H單元置為“00H〞。答:START: MOV R0,#30H MOV R2,#20H LOOP: MOV A,@R0 CJNE A,#0AAH,NEXT MOV 51H,#01H LJMP EXIT NEXT: INC R0 DJNZ R2,LOOP MOV 51H,#00H EXIT: RET15.編寫程序,要求使用T0,采用方式2定時,在P1.0輸出周期為400μs,占空比為10:1的矩形脈沖。解:根據題意,從P1.0輸出的矩形脈沖的上下電平的時間為10:1,那么上下電平的時間分別為363.63μs和36.37μs。如果系統采用6MHz晶振的話,,因此上下電平輸出取整,那么約為364μs和36μs。編寫程序如下:ORG 0000H LJMP MAIN ORG 000BH LJMP IT0PMAIN: MOV TMOD,#02H ;定時器/計數器T0為定時方式2 MOV TL0,#4AH ;定時364μs初值賦值 SETB TR0 ;啟動T0,開始計數 SETB ET0 ;允許T0中斷 SETB EA ;CPU開中斷 SETB P1.0WAIT: AJMP WAITIT0P: CLR EACLR P1.0 ;關中斷 MOV R0,#9DLY: DJNZ R0,DLY ;延時26μs MOV TL0,#4AH ;定時364μs初值賦值 SETB P1.0 SETB EA RETI16.設在外部RAM中有三個連續單元2001H,2023H,2023H,其中2001H和2023H單元中分別存放兩個8位無符號二進制數,比擬這兩個數的大小,然后將大數送到2023H單元。COMPARE:MOVDPTR,#2001HMOVXA,@DPTRMOVR0,AINCDPTRMOVXA,@DPTRSUBBA,R0JNCLOOPMOVA,R0INCDPTRMOVX@DPTR,ARETLOOP:INCDPTRMOVX@DPTR,ARET17.將內部RAM40H開始的10個單元,搬移到50H開始的10個單元中。MOVR0,#40HMOVR1,#50HMOVR2,#10LOOP1:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR2,LOOP1RET18.設單片機晶振頻率為6MHz,使用定時器0,以工作方式2,在P1.5引腳輸出一個周期為200us連續方波?解:MOVTMOD,#02HMOVTH0,#0CEHMOVTL0,#0CEHSETBTR0LOOP:JBCTF0,LOOP1AJMPLOOPLOOP1:CPLP1.019.編寫一段程序,功能要求為:當P1.0引腳的電平正跳變時,對P1.1的輸入脈沖進行計數;當P1.2引腳的電平負跳變時,停止計數,并將計數值寫入R0、R1(高位存R1,低位存R0)。答:將P1.1的輸入脈沖接入INT0,即使用T0計數器完成對P1.1口的脈沖計數。編寫程序如下:ORG 0000H LJMP MAIN ORG 000BH LJMP IT0PMAIN: JNB P1.0,MAINMOV TMOD,#05H ;定時器/計數器T0為計數方式1 SETB TR0 ;啟動T0,開始計數 SETB ET0 ;允許T0中斷 SETB EA ;CPU開中斷WAIT: JB P1.2,WAIT CLR EA CLR TR0 MOV R1,TH0 MOV R0,TL0 AJMP $IT0P: INC R2 RETI20.試編寫一個程序〔例如將05H和06H拼為56H〕,設原始數據放在片外數據區2001H單元和2023H單元中,按順序拼裝后的單字節數放入2023H。答:編程思路:首先讀取2001H的值,保存在存放器A中,將存放器A的高四位和低四位互換,再屏蔽掉低四位然后將存放器A的值保存到30H中,然后再讀取2023H的值,保存在存放器A中,屏蔽掉高四位,然后將存放器A的值與30H進行或運算,將運算后的結果保存在2023H中。 ORG0000HMAIN:MOVDPTR,#2001H ;設置數據指針的初值 MOVX A,@DPTR ;讀取2001H的值 SWAP A ANL A,#0F0H ;屏蔽掉低四位 MOV 30H,A ;保存A INC DPTR ;指針指向下一個 MOVX A,@DPTR ;讀取2023H的值 ANL A,#0FH ;屏蔽掉高四位 ORL A,30H ;進行拼裝 MOVX @DPTR,A ;保存到2023H END21.編寫程序,將外部數據存儲器中的4000H—40FFH單元全部清零。解:此題主要考察了對外部數據塊的寫操作;編程時只要注意循環次數和MOVX指令的使用就可以了。 ORG 0000HMAIN:MOV A,#0 ;送預置數給A MOV R0,#0FFH ;設置循環次數 MOV DPTR,#4000H ;設置數據指針的初值LOOP:MOVX @DPTR,A ;當前單元清零 INC DPTR ;指向下一個單元 DJNZR0,LOOP ;是否結束 END22.編寫程序,采用8255A的C口按位置位/復位控制字,將PC7置0,PC4置1,〔8255A各端口的地址為7FFCH-7FFFH〕。解:此題主要考察對8255A的C口的操作。其方式控制字的高位為0時,低四位對C口進行置位。由題目我們得到了方式控制字的地址為7FFFH。 ORG 0000H MAIN: MOV DPTR,#7FFFH ;控制字存放器地址送DPTR MOV A,#0EH ;將PC7置0 MOVX@DPTR,A MOV A,#09H ;將PC4置1 MOVX@DPTR,A END23.試編寫邏輯運算程序,功能為:F=X(Y+Z);F=XYZ其中FXYZ均為位變量,依次存在以30H為首址的位尋址區中。解〔1〕:FBIT30HXBIT31HYBIT32HZBIT33HLOG1:MOVC,Y;Y→CORLC,Z;(Y+Z)→CANLC,X;X(Y+Z)→CMOVF,C;X(Y+Z)→FRET;解〔2〕:LOG2:MOVC,Y;Y→CANLC,Z;YZ→CANLC,/X;XYZ→CCPLC;XYZ→CMOVF,C;XYZ→FRET;24.試編寫程序,統計內RAM30H~50H單元中FFH的個數,并將統計結果存51H。解:編程如下:LOKF:MOV51H,#0;計數器清零MOVR0,#30H;置數據區首址LOP:MOVA,@R0;讀數據CPLA;取反JNZLP1;判FFH,非FFH,轉INC51H;FFH,計數LP1:INCRO;指向下一數據CJNER0,#51H,LOP;判循環RET25.試編寫程序,找出外RAM2000H~200FH數據區中的最小值,并放入R2中。解:編程如下:SECH:MOVDPTR,#2000H;置外RAM數據區首址MOVR2,#OFH;置外RAM數據區長度〔N-1〕MOVXA,@DPTR;讀第一個數據MOVB,A;假設第一個數據為最小值SLOP:INCDPTR;指向下一個數據MOVXA,@DPTR;讀下一個數據CJNEA,B,SLP1;新數據與最小值比擬SLP1:JNCSLP2;新數據≥最小值,判斷循環MOVB,A;新數據<最小值,新數據→BSLP2:DJNZR2,SLOP;判循環結束否?MOVR2,B;最小值→R2RET26.ROM中存有0~100的平方表,首地址為TABDS,試根據累加器A(≤100)中的數值查找對應的平方值,存入內RAM31H30H(雙字節)。解:編程如下:DSQR:MOVDPTR,#TABDS;置ROM平方表首地址ADDA,Acc;A×2→AMOVCA,@A+DPTR;讀平方值高8位MOV31H,A;平方值高8位→31HINCA;指向平方值低8位MOVCA,@A+DPTR;讀平方值低8位MOV30H,A;平方值低8位→30HRETTABDS:DW0,0,0,1,0,4,0,9,0,16,0,25,…,27H,10H;0~100平方表〔雙字節〕27.試編程實現3字節無符號數加法:R7R6R5+R4R3R2→@R0(3個連續單元)。解:編程如下:ADD3:MOVA,R5ADDA,R2;低位加MOV@R0,A;存低位和INCR0;修改存儲單元MOVA,R6;ADDCA,R3;中位加MOV@R0,A;存中位和INCR0;修改存儲單元MOVA,R7;ADDCA,R7;高位加MOV@R0,A;存高位和RET28.試編寫程序,將外部RAM2000H~20FH數據塊,傳送到3000H~30FFH區域。解:編程如下:DMOV:MOVDPTR,#2000H;置源數據區首址MOVR2,#00H;置數據長度〔256個〕DLOP:MOVXA,@DPTR;讀數據MOVDPH,#30H;置目的數據區高8位地址MOVX@DPTR,A;存數據MOVDPH,#20H;置源數據區高8位地址INCDPTR;修改源數據區地址DJNZR2,DLOP;判循環結束否?RET29.從內RAM20H單元開始存有一組帶符號數〔補碼〕,其個數已存放在1FH單元。要求統計其中大于0,等于0和小于0的數的個數,并把統計結果分別存入ONE,TWO,THREE3個單元。解:編程如下:ONEEQU30HTWOEQU31HTHREEEQU32HSTOR:MOVR0,#20H;置數據區首址SLOP:MOVA,@R0;讀數據JZLP1;數據=0,轉JBAcc.7,LP2;數據<0,轉INCONE;數據>0,ONE單元加1LP0:INCRO;指向下一數據DJNZ1FH,SLOP;判統計結束否?未結束循環RET;統計結束,TWO單元加1LP1:INCTWO;數據=0,TWO單元加1SJMPLPO;返回循環體LP2:INCTHREE;數據<0,THREE單元加1SJMPLPO;返回循環體30.設在內部數據存儲器中存放有20個字節數據,其起始地址為M。試編寫程序,找出數0AH的存放地址,并送入N單元。假設OAH不存在,那么將N單元清零。解:程序如下:MEQU30HNEQU2FHSECH:MOVR0,#MMOVR1,#20LOOP:CJNE@R0,#0AH,LP1MOVN,R0RETLP1:INCR0DJNZR1,LOOPMOVN,#0RET31.試編寫程序,求出內RAM20H單元中“1〞的個數,并將結果存入21H單元。解:編程如下:LOK1:MOV21H,#OMOVR2,#08HMOVA,20HLOP:RLCAJNCLP1JNC21HLP1:DJNER2,LOPRET32.試編寫統計數據區長度的程序,設數據區從內RAM30H開始,該數據區以0結束,統計結果送入2FH中。解:編程如下:ADUP:MOV2FH,#0MOVR0,#30HALOP:MOVA,@R0JNZLP1RETLP1:INC2FHINCR0SJMPALOP33.從內RAM30H單元開始存放著一組無符號數,其個數存在21H單元中。試編寫程序,找出其中最小的數,并將其存入20H單元中。解:編程如下:SECH:MOVRO,#3OHMOV20H,#FFHSLOP:MOVA,@R0CJNEA,20H,NEXTNEXT:JNCSLP1MOV20H,ASLP1:INCR0DJNZ21H,SLOP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 抖音短視頻內容創作者內容審核規范合同
- 高端商務酒店管理及運營合作協議
- 商標注冊與品牌形象策劃服務合同
- 創意網絡小說作品授權與二次開發合同
- 教育機構場地轉租與教育咨詢服務協議
- 二手房交易鑰匙交付與產權過戶協議
- 游艇改裝項目保險經紀合作協議
- 家庭消防安全責任書(含消防演練組織)
- 氣象災害預警服務補充協議
- 高收益茶園種植與產品市場拓展合同
- 人教版小學二年級上冊數學 期中測試卷
- 2025屆新高考生物熱點沖刺復習:蛋白質的分選與囊泡運輸
- 鈑金生產車間安全培訓
- (二模)湛江市2025年普通高考測試(二)政治試卷(含答案)
- 橋梁水下結構內部缺陷超聲波檢測基于技術
- 兒童流行性感冒疫苗預防和抗病毒藥物應用的實踐指南(2024版)解讀課件
- 公共安全視頻監控建設聯網應用(雪亮工程)運維服務方案純方案
- 中藥代茶飲白義萍課件
- 2024年河北普通高等學校對口招生考試數學試題
- 敬老院運營服務務投標方案(技術方案)
- 張京16分鐘中英文對照翻譯稿
評論
0/150
提交評論