国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> 單片機匯編語言程序設計

單片機匯編語言程序設計

作者:admin 來源:不詳 發(fā)布時間:2018-05-08  瀏覽:3
1、匯編語言源程序的格式
  1.內部數(shù)據(jù)傳送指令
 匯編語言是面向機器的,因此,語言格式因機器不同而異。對MCS-51系統(tǒng)來說,匯編語言中每條語句的格式包括下列4項內容:
    標號: 操作碼 操作數(shù); 注釋
匯編語句中,標號和操作碼要用冒號“:”隔開;操作碼和操作數(shù)之間的分隔符是空格,多個操作數(shù)之間用“,”分隔;操作數(shù)與注釋之間用“;”分隔;操作碼是必選項,其余都是可選項,即任何語句都必須包含操作碼,其他部分因語句不同而異。
    1.ORG偽指令
    ORG偽指令稱為起始匯編偽指令,一般用于匯編語言源程序或某數(shù)據(jù)塊的開頭,格式為:
    [標號]:ORG 16位的地址或標號
    2.END偽指令
    END偽指令稱為匯編結束偽指令,經常用在匯編語言源程序的末尾,用來指示源程序結束匯編的位置。即表明程序的結束。一般格式為:
    [標號]:END
    3.EQU偽指令
    EQU偽指令稱為賦值偽指令,用于給左邊的“字符名”賦值。此偽指令的格式為:
    字符名 EQU 數(shù)據(jù)或匯編符號
    4.DATA偽指令
    DATA偽指令稱為數(shù)據(jù)地址賦值偽指令,它用來給左邊的“字符名”賦值。其一般格式為:
    字符名 DATA 數(shù)據(jù)或表達式
    5.BIT偽指令
    BIT偽指令稱為位地址符號偽指令,用來給符號形式的位地址賦值,此偽指令的格式為:
    字符名 BIT 位地址
    6.DB偽指令
    DB偽指令稱為定義字節(jié)偽指令,它的功能是從指定單元開始定義(存儲)若干個字節(jié)的數(shù)據(jù)或字符,字符若用引號括起來則表示ASCII碼。其一般格式為:
    標號:DB 字節(jié)常數(shù)或字符
    7.DW偽指令
    DW偽指令稱為定義字偽指令,其功能為在程序存儲器中從指定單元開始,定義若干個字,一個字相當于兩個字節(jié)。此偽指令的一般格式為:
    標號: DW 字常數(shù)或字表
    8.DS偽指令
    DS偽指令稱為定義存儲空間偽指令,格式為:
    標號: DS 表達式
2、MCS—51單片機匯編語言程序設計舉例
 1. 簡單程序設計
    例:將一個字節(jié)內的兩位壓縮BCD碼拆開并轉換成相應的ASCH碼,存入兩個RAM單元。
    解:設兩位壓縮BCD碼已放在內部RAM的20H單元,轉換后的ASCII碼放在21H和22H單元。根據(jù)ASCII碼表,字符0~9對應的ASCII碼為30H~39H,之間僅相差30H。因此,轉換時,只需把20H單元中兩位壓縮BCD碼拆開后,將BCD的高四位置成“0011”即可。相應程序如下:
    ORG       1000H
    MOV    R0,  #20H
    MOV    A,   @R0    ;兩位BCD碼送A
    PUSH    ACC
    ANL    A,  #0FH    ;取低位BCD碼
    ORL    A,  #30H    ;完成低位轉換
    INC   R0
    MOV    @R0,  A    ;低位BCD碼的轉換結果存入21H中
    POP    ACC
    ANL    A  ,#0F0H    ;取高位BCD碼
    SWAP   A
    ORL    A,  #30H   ;完成高位轉換
    INC   R0
    MOV    @R0,  A    ;存數(shù)
    SJMP   $    ;結束
    END
    2. 分支程序設計
    例:設變量X存放于R2,函數(shù)值Y存放在R3。試按照下式的要求給Y賦值:

 解:這是一個三分支的條件轉移程序,可采用CJNE和JC或JNC指令進行判斷。
    ORG    0500H
    MOV A, R2 ;自變量→(A)
    CJNE A,#10,L1 ;(A)與10比較
    L1:JC L2 ;若X<10,則轉L2
    ADD A, #01H
    MOV R3, A ; 設X>20,Y=1
    CJNE A,#21,L3
    L3:JNC L4 ;X>20,則轉L4
    MOV R3,#0 ;20≥X≥10,Y=0
    SJMP L4
    L2:MOV R3,#0FFH
    L4:SJMP $
    END
    3. 循環(huán)程序設計
    循環(huán)程序一般由以下幾部分組成:
    1)循環(huán)初始化部分
    2)循環(huán)體部分
    3)循環(huán)結束部分
    例:在內部RAM的20H~2FH連續(xù)16個單元中存放單字節(jié)無符號數(shù)。求16個無符號數(shù)之和。
    解 這是重復相加問題。16個單字節(jié)數(shù)的和最大不會超過兩個字節(jié),設和存放在31H,30H中。用R0作加數(shù)指針,R7作循環(huán)次數(shù)計數(shù)器。程序流程如圖3-11所示。
    ORG 1000H
    MOV R7,#0FH
    MOV R0,#21H
    MOV 31H,#00H
    MOV A,20H
    LOOP1: ADD A,@R0
    MOV 30H, A
    JNC LOOP2
    INC 31H
    LOOP2: INC R0
    DJNZ R7, LOOP1
    SJMP $
    END
    4.查表程序設計
    查表程序是根據(jù)查表算法設計的。它有兩條專門的查表指令:
    例:設計一個將16進制數(shù)轉換成ASCII碼的子程序。設16進制數(shù)存放在R0中的低4位,要求將轉換后的ASCII碼送回R0中。
    解:給出二種方案。
    ①計算求解。由ASCII碼字符表可知0~9的ASCII碼為30H~39H,A~F的ASCII碼為41H~46H。因此,計算求解的思路是:若(R0)≤9,則R0內容只需加30H;若(R0)>9,則R0需加37H。相應程序為:
    ORG 1000H
    MOV A,R0 ;取轉換值到A
    ANL A,#0FH ;屏蔽高4位
    CJNE A,#10,NEXTl
    NEXTl:JNC NEXT2 ;若A>9,則轉NEXT2
    ADD A,#30H ;若A<10,則A (A)+30H
    SJMP DONE
    NEXT2:ADD A,#37H ;A (A)+37H
    DONE: MOV R0,A ;存結果
    SJMP $
    END
     ②查表求解。求解時,兩條查表指令任選其一,F(xiàn)以“MOVC A,@A+PC”指令為例,給出相應程序:
    地址 機器碼 ORG 1000H
    1000 E8 MOV A,R0 ;取轉換值
    1001 54 0F ANL A,#0FH ;屏蔽高4位
    1003 24 03 ADD A,#03H ;計算偏移量
    1005 83 MOVC A,@A+PC ;查表
    1006 F8 MOV R0,A ;存結果
    1007 80 FE SIMP $
    1008 30 31 32 33 ASCTAB: DB 30H,31H,32H,33H
    100C 34 35 36 37 DB 34H,35H,36H,37H
    1010 38 39 41 42 DB 38H,39H,41H,42H
    1014 43 44 45 46 DB 43H,44H,45H,46H
    END
    5. 子程序設計
    子程序在結構上應具有通用性和獨立性,在編寫子程序時應注意:
    ①程序第一條指令的地址稱為入口地址,該指令前必須有標號,最好以子程序任務名作為標號,例如顯示程序常以DIR作為標號;
    ②調用子程序指令設在主程序中,在子程序的末尾一定要有返回指令。一般說來,子程序調用指令和子程序返回指令要成對使用,子程序應只有一個出口;
    ③子程序調用和返回指令能自動保護和恢復斷點地址,但對需要保護的寄存器和內存單元的內容,必須在子程序開始和末尾(RET指令前)安排保護和恢復它們的指令;
    ④調用子程序時,要了解子程序的“入口信息”和“出口信息”,即進入子程序前應給哪些變量賦值,子程序返回時結果存在何處,以便主程序應用這些結果。這就是所謂的參數(shù)傳遞。一般稱傳入子程序的參數(shù)為入口參數(shù),由子程序返回的參數(shù)為出口參數(shù)。
    例:用程序實現(xiàn)C=a2+b2。設a、b均小于10。a存在21H單元,b存在22H單元,結果C存在20H單元。
    解:因本題中兩次用到求平方的運算,故此把求平方運算編成子程序。依題意編寫主程序和子程序如下:
    ORG 1000H
    MAIN: MOV SP,#60H ;設堆棧指針
    MOV A,21H ;取a值
    LCALL SQR ;求a2
    MOV 20H,A ;a2值送入20H單元
    MOV A,22H ;取b值
    LCALL SQR ;求b2
    ADD A,20H ;求a2+b2
    MOV 20H,A ;結果存入20H單元
    SJMP $
    ORG 2000H
    SQR: MOV B,A ;求平方子程序
    MUL AB
    RET

編輯:admin  最后修改時間:2018-05-08

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

一区二区在线激情视频| 午夜亚洲精品理论片在线观看| 国产精品夜色一区二区三区不卡| 丝袜视频日本成人午夜视频| 欧美日韩国产二三四区| 国产传媒中文字幕东京热| 中国美女偷拍福利视频| 欧美日韩综合免费视频| 熟女少妇一区二区三区蜜桃| 日本高清视频在线观看不卡 | 中文文精品字幕一区二区| 中日韩美一级特黄大片| 黄色在线免费高清观看| 亚洲国产色婷婷久久精品| 国产不卡免费高清视频| 97人妻精品一区二区三区男同| 色婷婷中文字幕在线视频| 亚洲婷婷开心色四房播播| 国产精品夜色一区二区三区不卡| 草草视频精品在线观看| 精品日韩欧美一区久久| 国产色一区二区三区精品视频| 噜噜中文字幕一区二区| 欧美日韩有码一二三区| 视频一区中文字幕日韩| 高清不卡视频在线观看| 伊人久久五月天综合网| 欧美av人人妻av人人爽蜜桃| 欧美成人一区二区三区在线| 后入美臀少妇一区二区| 丝袜破了有美女肉体免费观看| 国产激情一区二区三区不卡| 日本精品理论在线观看| 中文字幕av诱惑一区二区| 欧美日韩欧美国产另类| 极品少妇一区二区三区精品视频 | 国产又大又硬又粗又黄| 亚洲一区二区三区三区| 欧美日韩国内一区二区| 又黄又色又爽又免费的视频| 亚洲综合伊人五月天中文|