久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1394|回復: 0
收起左側

我解答某師兄在網上提問有關51單片機匯編編程的幾個習題

[復制鏈接]
ID:858964 發表于 2020-12-15 23:38 | 顯示全部樓層 |閱讀模式
========================================
【第1題】
已知從外部數據存儲器的1560H單元開始,
共有60個存貯單元中均存放有8位無符號整數,
試用MCS-51指令編寫一源程序,
求其中低4位全為0的數據個數(例如60H,90H等),
結果存入2500H單元。
【答】:
First:     MOV   DPTR, #1560H ;外部數據塊首址
           MOV   R2, #60      ;外部數據塊數據個數
           MOV   R3, #0
Check:     MOVX  A, @DPTR     ;讀入數據指針所指的一個數
           ANL   A, #00001111B         
           JNZ   Next         ;低4位非全0, 查下一個
           INC   R3           ;低4位全0的數據個數累加
Next:      INC   DPTR         ;數據指針加1,查下一個數
           DJNZ  R2, Check    ;待查數據個遞減1,未為0則繼續查
Finish:    MOV DPTR, #2500H
           MOV A, R3
           MOVX @DPTR,A       ;低4位全為0的數據個數存入2500H單元
           END
========================================
【第2題】
已知從外部數據存儲器的2630H開始,
共有50個存貯單元中各存放有一個不相同的8位無符號整數,
試用MC-51指令編寫一源程序,找出其中的最大值,
將該最大值存入1200H單元,
該最大值所存放單元地址低8位的存入1201H單元,
該最大值所存放單元地址高8位的存入和1202H單元。
【答】:
First:  MOV  DPTR, #2630H  ;數據塊首址
        MOV  R2, #50       ;數據塊的單元個數
        MOVX  A, @DPTR
        MOV  R3,A          ;將首個數暫存于R3
Check:  INC  DPTR
        MOVX A, @DPTR
        MOV  R4, A         ;將下一個數暫存于R4
        CLR  C             ;減法運算前借位清0
        SUBB A, R3         ;比較兩數大小
        JC  Next           ;若有借位,R4值<R3值, 查下一個
        MOV  A, R4         ;若無借位,R4值>R3值
        MOV  R3, A         ;將較大數暫存于R3
        MOV  R5,DPL
        MOV  R6,DPH
Next:   DJNZ  R2,Check     ;待查數據個數遞減1,未為0則繼續查
Finish: MOV DPTR, #1200H
        MOV A, R3  
        MOVX  @DPTR, A     ;最大值存入1200H單元
        INC  DPTR
        MOV  A, R5
        MOVX  @DPTR, A     ;最大值地址低8位存入1201H單元
        INC  DPTR        
        MOV  A, R6
        MOVX  @DPTR, A     ;最大值地址高8位存入1202H單元
        END
========================================
【第3題】
已知從外部數據存儲器的2650H單元開始,
共有84個存貯單元各存有一個8位有符號整數,
試用MCS-51指令編寫一源程序,
求其中所有大于70H的正數之和,
結果低8位存放入1500H單元,高8位存入1501H單元。
【答】:
First:     MOV DPTR,#2650H ;待查數據塊首址
           MOV R2,#84      ;待查數據個數
           MOV R4,#0
           MOV R5,#0
Check:     MOVX A,@DPTR
           JZ  Next         ;若查到某個數為0,則查下一個
           MOV R3,A         ;將非0的數暫存于R3
           ANL  A,10000000B ;檢測該數的符號位
           JNZ Next         ;若符號位為1,是負數,查下一個
           MOV A,R3         ;若符號位為0,是正數
           CLR C          ;減法運算前借位清0
           SUBB A,#70H     ;該數與70H作比較
           JC Next         ;若有借位,該數<70H, 查下一個
           JZ Next         ;若相減結果為0,該數=70H, 查下一個
           MOV A,R3
           CLR C
           ADD A,R4        ;符合條件的數累加
           MOV R4,A        ;累加值低8位暫存于R4
           JNC Next        
           INC R5          ;若低8位累有進位,則高8加1
Next:      INC DPTR        ;數據指針加1,查下一個數
           DJNZ  R2,Check  ; 待查數據個遞減1,未為0則繼續查
Finish:    MOV DPTR,#1500H
           MOV A,R4   
           MOVX @DPTR,A    ;累加結果低8位存入1500H單元
           INC DPTR
           MOV A,R5
           MOVX @DPTR,A    ;累加結果高8位存入1501H單元
           END
========================================
【第4題】
已知從外部數據存儲器的2940H單元開始,
共有95個存貯單元中均存放有8位無符號整數,
試用MCS-51指令編寫一源程序,
求其中所有小于65H的數據之和,
結果低8位存入1400H單元,高8位存入1401H單元。
【答】:
First:     MOV  DPTR, #2940H ;外部數據塊首址
           MOV  R2, #95      ;外部數據塊數據個數
           MOV  R4, #0
           MOV  R5, #0
Check:     MOVX  A, @DPTR    ;讀入數據指針所指的一個數
           MOV  R3, A        ;將該數放入R3暫存
           CLR  C            ;減法運算前借位清0
           SUBB A, #65H      ;該數與65H作比較
           JZ  Next          ;若相減結果為0,該數=65H, 查下一個
           JNC  Next         ;若無借位,該數>65H, 查下一個
           MOV  A ,R3
           CLR  C            ;加法運算前進位清0
           ADD  A, R4        ;符合條件的數累加
           MOV  R4 ,A        ;累加值低8位暫存于R4
           JNC  NEXT
           INC  R5           ;若有進位,則高8位累加1
Next:      INC  DPTR         ;數據指針加1,查下一個數
           DJNZ  R2, Check   ;待查數據個遞減1,未為0則繼續查
Finish:    MOV DPTR,#1400H
           MOV A,R4   
           MOVX @DPTR,A     ;累加結果低8位存入1400H單元
           INC DPTR
           MOV A,R5
           MOVX @DPTR,A      ;累加結果高8位存入1401H單元
           END
========================================


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美女福利网站 | 久久99精品久久久久蜜桃tv | 欧美乱人伦视频 | 欧美日韩不卡合集视频 | www.久久 | 久久亚洲一区二区三区四区 | 日韩精品一区二区三区视频播放 | 色女人天堂 | 97超碰免费 | 精品视频国产 | 久久综合香蕉 | 亚洲高清av| 伊人久久大香线 | 久久一区二区视频 | 一区二区三区高清不卡 | 狠狠做深爱婷婷综合一区 | 中文字幕 国产精品 | 亚洲欧美久久 | 伊人99| 欧洲在线视频 | 成人福利 | 伊人春色在线观看 | 成人午夜免费福利视频 | 国色天香成人网 | 亚洲电影成人 | 一区二区三区 在线 | 欧美日韩国产中文 | 91精品国产91久久久久久 | 91九色婷婷| 国产一区二区视频在线观看 | 精彩视频一区二区三区 | 狠狠操天天操 | 综合国产| 影音先锋中文字幕在线观看 | 免费av在线网站 | 久久久免费在线观看 | 日本免费在线看 | 久久精品国产亚洲a | 色婷婷精品国产一区二区三区 | 中文字幕人成乱码在线观看 | 涩爱av一区二区三区 |