![第4章 匯編語言程序設(shè)計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/03e24516-5f3b-4992-830c-555e933bde0b/03e24516-5f3b-4992-830c-555e933bde0b1.gif)
![第4章 匯編語言程序設(shè)計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/03e24516-5f3b-4992-830c-555e933bde0b/03e24516-5f3b-4992-830c-555e933bde0b2.gif)
![第4章 匯編語言程序設(shè)計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/03e24516-5f3b-4992-830c-555e933bde0b/03e24516-5f3b-4992-830c-555e933bde0b3.gif)
![第4章 匯編語言程序設(shè)計_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/03e24516-5f3b-4992-830c-555e933bde0b/03e24516-5f3b-4992-830c-555e933bde0b4.gif)
![第4章 匯編語言程序設(shè)計_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/03e24516-5f3b-4992-830c-555e933bde0b/03e24516-5f3b-4992-830c-555e933bde0b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第4 4章章機械工業(yè)出版社同名教材機械工業(yè)出版社同名教材配套電子教案配套電子教案第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計 80C5180C51匯編語言語句結(jié)構(gòu)的基本格式匯編語言語句結(jié)構(gòu)的基本格式 偽指令的功能和應(yīng)用偽指令的功能和應(yīng)用 匯編的概念匯編的概念 程序設(shè)計的步驟和基本方法程序設(shè)計的步驟和基本方法 順序程序順序程序 分支程序分支程序 循環(huán)程序循環(huán)程序 查表程序查表程序 散轉(zhuǎn)程序散轉(zhuǎn)程序本章要點本章要點標號:操作碼標號:操作碼 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) ;注釋;注釋4-1 4-1 匯編語言程序設(shè)計基本概念匯編語言程序設(shè)計基本概念一一. . 匯編語言及其語句結(jié)構(gòu)匯編
2、語言及其語句結(jié)構(gòu)二二. . 偽指令偽指令 在匯編時起控制作用,自身并不產(chǎn)生機器在匯編時起控制作用,自身并不產(chǎn)生機器碼,而僅是為匯編服務(wù)的一些指令,稱為偽指碼,而僅是為匯編服務(wù)的一些指令,稱為偽指令。偽指令不屬于令。偽指令不屬于8080C51C51指令系統(tǒng)。指令系統(tǒng)。 常用的偽指令有以下幾種:常用的偽指令有以下幾種: 起始偽指令起始偽指令 ORG(Origin)ORG(Origin) 功能:規(guī)定功能:規(guī)定ORGORG下面目標程序的起始地址。下面目標程序的起始地址。格式:格式:ORG 16ORG 16位位地址地址功能:將一個數(shù)據(jù)或特定的匯編符號賦予規(guī)定功能:將一個數(shù)據(jù)或特定的匯編符號賦予規(guī)定 的字
3、符名稱。的字符名稱。 結(jié)束偽指令結(jié)束偽指令 ENDEND功能:匯編語言源程序的結(jié)束標志。功能:匯編語言源程序的結(jié)束標志。 在在ENDEND后面的指令,匯編程序不再處理后面的指令,匯編程序不再處理。格式:格式:ENDEND 等值偽指令等值偽指令 EQUEQU(EquateEquate)格式:格式:字符名稱字符名稱 EQUEQU 數(shù)據(jù)或匯編符號數(shù)據(jù)或匯編符號 數(shù)據(jù)地址賦值偽指令數(shù)據(jù)地址賦值偽指令 DATADATA格式:格式:字符名稱字符名稱 DATADATA 表達式表達式功能:將數(shù)據(jù)地址或代碼地址賦予規(guī)定的功能:將數(shù)據(jù)地址或代碼地址賦予規(guī)定的 字符名稱。字符名稱。 定義字節(jié)偽指令定義字節(jié)偽指令DB
4、DB(Define ByteDefine Byte)格式:格式:DB 8DB 8位二進制數(shù)表位二進制數(shù)表功能:從指定的地址單元開始,定義若干功能:從指定的地址單元開始,定義若干 個個8 8位內(nèi)存單元的數(shù)據(jù)。位內(nèi)存單元的數(shù)據(jù)。 數(shù)據(jù)與數(shù)據(jù)之間用數(shù)據(jù)與數(shù)據(jù)之間用“,”分割。分割。格式:格式:字符名稱字符名稱 BITBIT 位地址位地址 定義字偽指令定義字偽指令DWDW(Define WordDefine Word)格式:格式:DW 16DW 16位二進制數(shù)表位二進制數(shù)表功能:從指定的地址單元開始,定義功能:從指定的地址單元開始,定義 若干個若干個1616位數(shù)據(jù)。位數(shù)據(jù)。 定義位地址偽指令定義位地址
5、偽指令BITBIT功能:將位地址賦予所規(guī)定的字符名稱。功能:將位地址賦予所規(guī)定的字符名稱。三三. .匯編匯編 將匯編語言源程序轉(zhuǎn)換為計算機所能識將匯編語言源程序轉(zhuǎn)換為計算機所能識別的機器語言代碼程序的過程稱為匯編。別的機器語言代碼程序的過程稱為匯編。 匯編可分為:匯編可分為: 手工匯編手工匯編 計算機匯編計算機匯編 匯編和調(diào)試匯編和調(diào)試四四. . 程序設(shè)計的基本方法程序設(shè)計的基本方法編寫程序要求:編寫程序要求: 不僅要完成規(guī)定的功能任務(wù),而且還要求:不僅要完成規(guī)定的功能任務(wù),而且還要求: 執(zhí)行速度快執(zhí)行速度快、占用內(nèi)存少占用內(nèi)存少、條理清晰條理清晰、 閱讀方便閱讀方便、便于移植便于移植、巧妙而
6、實用巧妙而實用。 一般應(yīng)按以下幾個步驟進行:一般應(yīng)按以下幾個步驟進行: 分析問題,確定算法或解題思路分析問題,確定算法或解題思路 畫流程圖畫流程圖 編寫源程序編寫源程序 順序程序是指按順序依次執(zhí)行的程序,也順序程序是指按順序依次執(zhí)行的程序,也稱為簡單程序或直線程序。稱為簡單程序或直線程序。 順序程序結(jié)構(gòu)雖然比較簡單,但也能完成順序程序結(jié)構(gòu)雖然比較簡單,但也能完成一定的功能任務(wù),是構(gòu)成復(fù)雜程序的基礎(chǔ)。一定的功能任務(wù),是構(gòu)成復(fù)雜程序的基礎(chǔ)。 第二節(jié)第二節(jié) 匯編語言程序設(shè)計舉例匯編語言程序設(shè)計舉例一一. . 順序程序順序程序CONT: MOVCONT: MOV A,R0 A,R0; ;讀低讀低8 8
7、位位CPLCPL A A; ;取反取反ADDADD A,#1 A,#1; ;加加1 1MOVMOV R2,A R2,A; ;存低存低8 8位位MOVMOV A,R1 A,R1; ;讀高讀高8 8位位CPLCPL A A; ;取反取反ADDCADDC A,#80H A,#80H; ;加進位及符號位加進位及符號位MOV R3,AMOV R3,A; ;存高存高8 8位位RETRET; ;【例】【例】 已知已知1616位二進制負數(shù)存放在位二進制負數(shù)存放在R1R0R1R0中,中, 試求其補碼,并將結(jié)果存在試求其補碼,并將結(jié)果存在R3R2R3R2中。中。解:二進制負數(shù)的求補方法可歸結(jié)為解:二進制負數(shù)的求補
8、方法可歸結(jié)為“求反加求反加1”1”,符號,符號位不變。利用位不變。利用CPLCPL指令實現(xiàn)求反;加指令實現(xiàn)求反;加1 1時,則應(yīng)低時,則應(yīng)低8 8位先加位先加1 1,高高8 8位再加上低位的進位。注意這里不能用位再加上低位的進位。注意這里不能用INCINC指令,因為指令,因為INCINC指令不影響標志指令不影響標志位。位。程序如下:程序如下: 根據(jù)不同條件轉(zhuǎn)向不同的處理程序,根據(jù)不同條件轉(zhuǎn)向不同的處理程序,這種結(jié)構(gòu)的程序稱為分支程序。這種結(jié)構(gòu)的程序稱為分支程序。 8080C51C51指令系統(tǒng)中的指令系統(tǒng)中的條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令、比較轉(zhuǎn)移指令比較轉(zhuǎn)移指令和和位轉(zhuǎn)移指令位轉(zhuǎn)移指令,可以實現(xiàn)分,
9、可以實現(xiàn)分支程序。支程序。二二. .分支程序分支程序 S0S0單獨按下,單獨按下, 紅燈亮紅燈亮, ,其余燈其余燈滅;滅; S1 S1單獨按下,單獨按下, 綠燈亮綠燈亮, ,其余其余燈燈滅;滅; 其余情況,其余情況, 黃燈亮。黃燈亮?!纠恳阎娐啡鐖D【例】已知電路如圖4-54-5所示,要求實現(xiàn):所示,要求實現(xiàn):解:程序如下解:程序如下SGNL:ANL P1,#11100011BSGNL:ANL P1,#11100011B; ;紅綠黃燈滅紅綠黃燈滅 ORL P1,#00000011BORL P1,#00000011B; ;置置P1.0P1.0、P1.1P1.1輸入態(tài)輸入態(tài), , P1.5P1.
10、5P1.7P1.7狀態(tài)不變狀態(tài)不變SL0: JNB P1.0,SL1SL0: JNB P1.0,SL1 ;P1.0=0,S0;P1.0=0,S0未按下未按下, ,轉(zhuǎn)判轉(zhuǎn)判S1S1 JNB P1.1,RED JNB P1.1,RED ;P1.0=1,S0;P1.0=1,S0按下按下; ;且且P1.1=0,S1P1.1=0,S1未按下未按下, ,轉(zhuǎn)紅燈亮轉(zhuǎn)紅燈亮YELW:SETB P1.4YELW:SETB P1.4 ; ;黃燈亮黃燈亮 CLR P1.2CLR P1.2 ; ;紅燈滅紅燈滅 CLR P1.3CLR P1.3 ; ;綠燈滅綠燈滅 SJMP SL0SJMP SL0 ; ;轉(zhuǎn)循環(huán)轉(zhuǎn)循環(huán)S
11、L1: JNB P1.1,YELWSL1: JNB P1.1,YELW ;P1.0=0,S0;P1.0=0,S0未按下未按下;P1.1=0,S1;P1.1=0,S1未按下未按下, ,轉(zhuǎn)黃燈亮轉(zhuǎn)黃燈亮GREN:SETB P1.3GREN:SETB P1.3 ; ;綠燈亮綠燈亮 CLR P1.2CLR P1.2 ; ;紅燈滅紅燈滅 CLR P1.4CLR P1.4 ; ;黃燈滅黃燈滅 SJMP SL0SJMP SL0 ; ;轉(zhuǎn)循環(huán)轉(zhuǎn)循環(huán)RED: SETB P1.2RED: SETB P1.2 ; ;紅燈亮紅燈亮 CLR P1.3CLR P1.3 ; ;綠燈滅綠燈滅 CLR P1.4CLR P1.4
12、 ; ;黃燈滅黃燈滅 SJMP SL0SJMP SL0 ; ;轉(zhuǎn)循環(huán)轉(zhuǎn)循環(huán) 課堂練習(xí)題:課堂練習(xí)題: 電路及燈亮滅要求同上述【例】題,其中第電路及燈亮滅要求同上述【例】題,其中第3 3、4 4兩條指令兩條指令JNB P1.0JNB P1.0和和JNB P1.1JNB P1.1按下列要求修改,按下列要求修改,試重新編程。試重新編程。 JBJBP1.0P1.0,JBJBP1.1P1.1, JBJBP1.0P1.0, JNB P1.1JNB P1.1, JNB P1.0JNB P1.0, JBJBP1.1P1.1, 循環(huán)程序一般包括以下幾個部分:循環(huán)程序一般包括以下幾個部分: 循環(huán)初值;循環(huán)初值;
13、循環(huán)體;循環(huán)體; 循環(huán)修改;循環(huán)修改; 循環(huán)控制;循環(huán)控制;以上四部分可以有兩種組織形式,以上四部分可以有兩種組織形式,其結(jié)構(gòu)如其結(jié)構(gòu)如圖圖4-64-6所所示。示。 三三. . 循環(huán)程序循環(huán)程序【例】【例】設(shè)設(shè)XiXi均為單字節(jié)數(shù),并按順序存放在以均為單字節(jié)數(shù),并按順序存放在以50H50H為首為首地址的內(nèi)地址的內(nèi)RAMRAM存儲單元中,數(shù)據(jù)長度(個數(shù))存儲單元中,數(shù)據(jù)長度(個數(shù))N N存在存在R2R2中,試編程求和中,試編程求和S=XS=X1 1+X+X2 2+X+XN N,并將,并將S S(雙字節(jié))(雙字節(jié))存放在存放在R3R4R3R4中,(設(shè)中,(設(shè)S S6553665536)。)。解:程
14、序如下:解:程序如下: SXN: MOV R2,#NSXN: MOV R2,#N ;置數(shù)據(jù)長度置數(shù)據(jù)長度( (循環(huán)次數(shù)循環(huán)次數(shù)) ) MOV R3,#00H MOV R3,#00H ;和單元和單元( (高高8 8位位) )清清0 0 MOV R4,#00H MOV R4,#00H ;和單元和單元( (低低8 8位位) )清清0 0 MOV R0,#50H MOV R0,#50H ;求和數(shù)據(jù)區(qū)首址求和數(shù)據(jù)區(qū)首址LOOP:MOV A,R4LOOP:MOV A,R4 ;讀前次低讀前次低8 8位和位和 ADD A,R0ADD A,R0 ;低低8 8位累加位累加 MOV R4,AMOV R4,A ;存低
15、存低8 8位和位和 CLR A CLR A ; ADDC A,R3 ADDC A,R3 ;高高8 8位加進位位加進位 MOV R3,A MOV R3,A ;存高存高8 8位和位和 INC R0 INC R0 ;指向下一數(shù)據(jù)指向下一數(shù)據(jù) 循環(huán)修改循環(huán)修改 DJNZ R2,LOOP DJNZ R2,LOOP ;判判N N個數(shù)據(jù)累加完否?個數(shù)據(jù)累加完否? 循環(huán)控制循環(huán)控制 RET RET ;退出循環(huán)退出循環(huán) 退出循環(huán)退出循環(huán) 置置循循環(huán)環(huán)初初值值循循環(huán)環(huán)體體【例】編寫延時【例】編寫延時10ms10ms子程序子程序, ,foscfosc=12MHz=12MHz。 解解: :foscfosc=12MHz
16、=12MHz,一個機器周期為,一個機器周期為1 1 s s。DY10ms:MOV R6,#20 DY10ms:MOV R6,#20 ; ; 置外循環(huán)次數(shù)置外循環(huán)次數(shù)DLP1: MOV R7,#250 DLP1: MOV R7,#250 ; ; 置內(nèi)循環(huán)次數(shù)置內(nèi)循環(huán)次數(shù)DLP2: DJNZ R7,DLP2 DLP2: DJNZ R7,DLP2 ; 2; 2機周機周250 =500250 =500機周機周 DJNZ R6,DLP1 DJNZ R6,DLP1 ; 500; 500機周機周20= 1000020= 10000機周機周 RET RET ; ;說明:說明:MOV RnMOV Rn指令為指令
17、為1 1個機器周期個機器周期; ; DJNZ DJNZ指令為指令為2 2個機器周期個機器周期; ; RET RET指令為指令為2 2個機器周期個機器周期; ; (2 2機周機周250)+1+2250)+1+220+1+220+1+21 1 s s/ /機周機周=10063=10063 s10mss10ms【課堂練習(xí)題】【課堂練習(xí)題】 按下列要求編寫延時子程序:按下列要求編寫延時子程序: 延時延時2 2msms,foscfosc=6MHz=6MHz; 延時延時5 5msms,foscfosc=12MHz=12MHz; 延時延時1010s s,foscfosc=12MHz=12MHz; 設(shè)設(shè)80C
18、5180C51單片機的單片機的P1P1口作為輸出口,經(jīng)驅(qū)動電路口作為輸出口,經(jīng)驅(qū)動電路74LS240(874LS240(8反相三態(tài)緩沖反相三態(tài)緩沖/ /驅(qū)動器驅(qū)動器) )接接8 8只發(fā)光二極管,如圖只發(fā)光二極管,如圖4-4-8 8所示。當輸出位為所示。當輸出位為“1”1”時,發(fā)光二極管點亮,輸出位為時,發(fā)光二極管點亮,輸出位為“0”0”時為暗。試編程實現(xiàn):每個燈閃爍點亮?xí)r為暗。試編程實現(xiàn):每個燈閃爍點亮1010次,再轉(zhuǎn)移次,再轉(zhuǎn)移到下一個燈閃爍點亮到下一個燈閃爍點亮1010次,循環(huán)不止。次,循環(huán)不止。 【例】【例】 編制一個循環(huán)閃爍燈的程序。編制一個循環(huán)閃爍燈的程序。FLASH:MOV A,#
19、01HFLASH:MOV A,#01H ; ;置燈亮初值置燈亮初值FSH0: MOV R2,#0AHFSH0: MOV R2,#0AH; ;置閃爍次數(shù)置閃爍次數(shù)FLOP: MOV P1,AFLOP: MOV P1,A; ;點亮點亮 LCALL DY1sLCALL DY1s; ;延時延時1 1s s MOV P1,#00H MOV P1,#00H; ;熄滅熄滅 LCALL DY1sLCALL DY1s; ;延時延時1 1s s DJNZ R2,FLOP DJNZ R2,FLOP; ;閃爍閃爍1010次次 RLRL A A; ;左移一位左移一位 SJMP FSH0SJMP FSH0; ;循環(huán)循環(huán)
20、RETRET; ;解:程序如下:解:程序如下:延時子程序可根據(jù)延時長短,自行編寫。延時子程序可根據(jù)延時長短,自行編寫。 【課堂練習(xí)題【課堂練習(xí)題】 根據(jù)圖根據(jù)圖4-84-8電路,設(shè)計燈亮移位程序,電路,設(shè)計燈亮移位程序,要求要求8 8只發(fā)光二極管每次點亮一個,點亮只發(fā)光二極管每次點亮一個,點亮?xí)r間為時間為250ms250ms,順序是從下到上一個一個,順序是從下到上一個一個地循環(huán)點亮。設(shè)地循環(huán)點亮。設(shè)foscfosc=6=6MHzMHz?!纠俊纠恳阎阎狿1P1口數(shù)據(jù)每隔口數(shù)據(jù)每隔10ms10ms刷新一次,試刷新一次,試求其求其1s1s內(nèi)的平均值內(nèi)的平均值, , 平均值存平均值存30H30H
21、。 解:本題需求解:本題需求100100個數(shù)據(jù)的平均值,個數(shù)據(jù)的平均值, 一般有兩種方法:一般有兩種方法: 一種是全部累加后再平均;一種是全部累加后再平均; 另一種是邊平均邊累加,另一種是邊平均邊累加, 現(xiàn)給出兩種方法的程序?,F(xiàn)給出兩種方法的程序。AVRG1: MOV R2,#0AVRG1: MOV R2,#0 ; ;低低8 8位累加寄存器清位累加寄存器清0 0 MOV R3,#0 MOV R3,#0 ; ;高高8 8位累加寄存器清位累加寄存器清0 0 MOV R4,#100 MOV R4,#100 ; ;置平均次數(shù)置平均次數(shù)ALOP: MOV A,P1ALOP: MOV A,P1; ;讀讀P
22、1P1口數(shù)據(jù)口數(shù)據(jù) ADD A,R2ADD A,R2; ;低低8 8位累加位累加 MOV R2,AMOV R2,A; ;回存回存 CLR ACLR A; ;高高8 8位與進位累加位與進位累加 ADDC A,R3ADDC A,R3; ; MOV R3,A MOV R3,A; ;回存回存 LCALL DY10msLCALL DY10ms ; ;延時延時10ms10ms DJNZ R4,ALOP DJNZ R4,ALOP; ;判判100100次累加完否?未完繼續(xù)次累加完否?未完繼續(xù) MOV A,R3MOV A,R3;100;100次累加完次累加完, ,求平均值求平均值, ,被除數(shù)被除數(shù)A A、B B
23、 MOV B,R2 MOV B,R2; ; MOV R0,30H MOV R0,30H ; ;置商間址置商間址 MOV R6,#0MOV R6,#0; ;置除數(shù)置除數(shù)100,100,除數(shù)除數(shù)R6R5R6R5 MOV R5,#100 MOV R5,#100; ; LCALL SUM LCALL SUM;(A;(A、B)B)(R6(R6、R5)= R5)= 商商 R0, R0, 余數(shù)余數(shù)A A CJNE A,#50,NEXT CJNE A,#50,NEXT; ;四舍五入四舍五入NEXT: JCNEXT: JC GRET GRET;C=1,;C=1,50, 50, 舍舍 INCINC 30H 30H
24、;C=0,50, ;C=0,50, 入入GRET: RETGRET: RET; ; 全全部部累累加加后后再再平平均均注:SUM子程序可參閱例4-9AVRG2:AVRG2: MOV MOV 30H,#030H,#0; ;商累加寄存器清商累加寄存器清0 0MOVMOV31H,#031H,#0; ;余數(shù)累加寄存器清余數(shù)累加寄存器清0 0 MOVMOVR4,#100R4,#100; ;置平均次數(shù)置平均次數(shù)ALOP:ALOP:MOVMOVA,P1A,P1; ;讀讀P1P1口數(shù)據(jù)口數(shù)據(jù) MOVMOVB,#100B,#100; ;置除數(shù)置除數(shù)( (平均次數(shù)平均次數(shù)) )DIVDIVABAB;P1;P1口數(shù)據(jù)
25、除以口數(shù)據(jù)除以100100ADDADDA,30HA,30H; ;商累加商累加MOV MOV 30H,A30H,A; ;回存回存MOV MOV A,BA,B; ;ADDADDA,31HA,31H; ;余數(shù)累加余數(shù)累加MOVMOV31H,A31H,A; ;回存回存CLRCLRC C; ;SUBBSUBBA,#100A,#100; ;JCJCGONGON; ;余數(shù)累加余數(shù)累加100,100,余數(shù)累加寄存器不變余數(shù)累加寄存器不變INCINC30H30H; ;余數(shù)累加余數(shù)累加100, 100, 商累加寄存器商累加寄存器+1+1MOVMOV31H,A31H,A; ;減去減去100100后差后差余數(shù)累加寄存
26、器余數(shù)累加寄存器GON: GON: LCALLLCALLDY10msDY10ms; ;延時延時10ms10msDJNZDJNZR4,ALOPR4,ALOP ; ;判判100100次累加完否?未完繼續(xù)次累加完否?未完繼續(xù)MOVMOVA,31HA,31H;100;100次累加完畢次累加完畢, ,余數(shù)累加四舍五入余數(shù)累加四舍五入CJNECJNEA,#50,NEXTA,#50,NEXT; ;NEXT:NEXT:JCJCGRETGRET;C=1,;C=1,50, 50, 舍舍INCINC30H30H;C=0,50, ;C=0,50, 入入GRET:GRET:RET RET ; ; 邊邊平平均均邊邊累累加
27、加【課堂練習(xí)題【課堂練習(xí)題】 已知某單片機系統(tǒng)每隔已知某單片機系統(tǒng)每隔20ms20ms測一次測一次溫度,溫度,8 8位溫度位溫度A/DA/D值存在特殊功能寄存值存在特殊功能寄存器器SBUFSBUF中,試分別求其中,試分別求其1s1s和和1 1分內(nèi)的平均分內(nèi)的平均值值, , 分別存分別存30H30H和和3131H H。 當用當用PCPC作基址寄存器時,其表格首地址與作基址寄存器時,其表格首地址與PCPC值間距值間距不能超過不能超過256256字節(jié),且編程要事先計算好偏移量,比較字節(jié),且編程要事先計算好偏移量,比較麻煩。因此,一般情況下用麻煩。因此,一般情況下用DPTRDPTR作基址寄存器。作基址
28、寄存器。四四. . 查表程序查表程序用于查表的指令有兩條:用于查表的指令有兩條: MOVC A,A+MOVC A,A+DPTRDPTR MOVC A,A+ MOVC A,A+PCPC 當用當用DPTRDPTR作基址寄存器時,查表的步驟分三步:作基址寄存器時,查表的步驟分三步: 基址值(表格首地址)基址值(表格首地址)DPTRDPTR; 變址值(表中要查的項與表格首地址之間的變址值(表中要查的項與表格首地址之間的 間隔字間隔字節(jié)數(shù))節(jié)數(shù))A A; 執(zhí)行執(zhí)行MOVC AMOVC A,A+DPTRA+DPTR。解:編程如下:解:編程如下: CHAG:MOV DPTR,#TABDCHAG:MOV DP
29、TR,#TABD; ;置共陰字段碼表首址置共陰字段碼表首址MOV A,30H MOV A,30H ; ;讀顯示數(shù)字讀顯示數(shù)字 MOVC A,A+DPTR MOVC A,A+DPTR ; ;查表查表, ,轉(zhuǎn)換為顯示字段碼轉(zhuǎn)換為顯示字段碼 MOV 30H,A MOV 30H,A ; ;存顯示字段碼存顯示字段碼 RET RET ; ;TABD:DB 3FH,06H,5BH,4FH,66HTABD:DB 3FH,06H,5BH,4FH,66H;0;04 4共陰字段碼表共陰字段碼表 DB 6DH,7DH,07H,7FH,6FHDB 6DH,7DH,07H,7FH,6FH;5;59 9共陰字段碼表共陰字段
30、碼表【例】【例】 在單片機應(yīng)用系統(tǒng)中,常用在單片機應(yīng)用系統(tǒng)中,常用LEDLED數(shù)碼管顯示數(shù)數(shù)碼管顯示數(shù)碼,但顯示數(shù)字碼,但顯示數(shù)字( (9)9)與顯示數(shù)字編碼并不相同,需與顯示數(shù)字編碼并不相同,需要將顯示數(shù)字轉(zhuǎn)換為顯示字段碼,通常是用查表的方要將顯示數(shù)字轉(zhuǎn)換為顯示字段碼,通常是用查表的方法。現(xiàn)要求將法?,F(xiàn)要求將30H30H中的顯示數(shù)字轉(zhuǎn)換為顯示字段碼并中的顯示數(shù)字轉(zhuǎn)換為顯示字段碼并存入存入30H30H。已知共陰字段碼表首址為。已知共陰字段碼表首址為TABDTABD?!菊n堂練習(xí)題【課堂練習(xí)題】 已知已知8 8位顯示數(shù)字已存入首址為位顯示數(shù)字已存入首址為30H30H的內(nèi)的內(nèi)RAMRAM中,試將其轉(zhuǎn)
31、換為共陰顯示字中,試將其轉(zhuǎn)換為共陰顯示字段碼,存入首址為段碼,存入首址為40H40H的內(nèi)的內(nèi)RAMRAM中。中。解:編程如下:解:編程如下:CUBE:CUBE: MOV DPTR,#TAB MOV DPTR,#TAB ; ;置立方表首址置立方表首址MOV A,30HMOV A,30H ; ;讀數(shù)據(jù)讀數(shù)據(jù)ADD A,30HADD A,30H ; ;數(shù)據(jù)數(shù)據(jù)2A2AMOV 30H,AMOV 30H,A ; ;暫存立方表數(shù)據(jù)序號暫存立方表數(shù)據(jù)序號 MOVC A, A+DPTRMOVC A, A+DPTR; ;讀立方數(shù)據(jù)高讀立方數(shù)據(jù)高8 8位位XCH A,30H XCH A,30H ; ;存立方數(shù)據(jù)高
32、存立方數(shù)據(jù)高8 8位位, ,立方表數(shù)據(jù)序號立方表數(shù)據(jù)序號A AINC AINC A ; ;指向立方數(shù)據(jù)低指向立方數(shù)據(jù)低8 8位位MOVC A,A+DPTR MOVC A,A+DPTR ; ;讀立方數(shù)據(jù)低讀立方數(shù)據(jù)低8 8位位 MOV 31H,AMOV 31H,A ; ;存立方數(shù)據(jù)低存立方數(shù)據(jù)低8 8位位RET RET ; ;TAB: DW 0,0,0,1,0,8,0,27,0,64 TAB: DW 0,0,0,1,0,8,0,27,0,64 ;0;04040立方表立方表 DW 0,125,0,216,0FAH,00HDW 0,125,0,216,0FAH,00H; ;說明:數(shù)據(jù)說明:數(shù)據(jù)2A2
33、A原因是立方表數(shù)據(jù)為雙字節(jié)原因是立方表數(shù)據(jù)為雙字節(jié)【例】【例】 用查表程序求用查表程序求0 04040之間整數(shù)的立方。已知該整數(shù)存在之間整數(shù)的立方。已知該整數(shù)存在內(nèi)內(nèi)RAM 30HRAM 30H中,查得立方數(shù)存內(nèi)中,查得立方數(shù)存內(nèi)RAM 30HRAM 30H(高(高8 8位)位)31H31H。已知立。已知立方表方表( (雙字節(jié)雙字節(jié)) )首地址為首地址為TABTAB。 在單片機系統(tǒng)中設(shè)置在單片機系統(tǒng)中設(shè)置+ +、 、 、 四個運算命四個運算命令鍵,它們的鍵號分別為令鍵,它們的鍵號分別為0 0、1 1、2 2、3 3。當其中一。當其中一個鍵按下時,進行相應(yīng)的運算。操作數(shù)由個鍵按下時,進行相應(yīng)的運
34、算。操作數(shù)由P1P1口和口和P3P3口輸入,運算結(jié)果仍由口輸入,運算結(jié)果仍由P1P1口和口和P3P3口輸出。具體口輸出。具體如下:如下:P1P1口輸入被加數(shù)、被減數(shù)、被乘數(shù)和被除口輸入被加數(shù)、被減數(shù)、被乘數(shù)和被除數(shù),輸出運算結(jié)果的低數(shù),輸出運算結(jié)果的低8 8位或商;位或商;P3P3口輸入加數(shù)、口輸入加數(shù)、減數(shù)、乘數(shù)和除數(shù),輸出進位(借位)、運算結(jié)減數(shù)、乘數(shù)和除數(shù),輸出進位(借位)、運算結(jié)果的高果的高8 8位或余數(shù)。鍵盤號已存放在位或余數(shù)。鍵盤號已存放在30H30H中。中。五五. . 散轉(zhuǎn)程序散轉(zhuǎn)程序散轉(zhuǎn)程序是一種并行多分支程序。散轉(zhuǎn)程序是一種并行多分支程序?!纠俊纠?單片機四則運算系統(tǒng)。單片機四則運算系統(tǒng)。解:程序如下:解:程序如下:PRGM: MOV P1,#0FFH PRGM: MOV P1,#0FFH ;P1;P1口置輸入態(tài)口置輸入態(tài) MOV P3,#0FFH MOV P3,#0FFH ;P3;P3口置輸入態(tài)口置輸入態(tài) MOV DPTR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程建設(shè)管理與施工標準化作業(yè)指導(dǎo)書
- 工程項目管理規(guī)范操作流程解讀
- 游戲開發(fā)實踐作業(yè)指導(dǎo)書
- 農(nóng)業(yè)信息化技術(shù)推廣應(yīng)用作業(yè)指導(dǎo)書
- 標準鋼材購銷合同
- 測繪勞務(wù)分包合同
- 出口銷售合同
- 小麥種子購銷合同
- 員工試用勞動合同
- 2025年呼和浩特道路貨運從業(yè)資格證模擬考試
- 平衡計分卡-化戰(zhàn)略為行動
- 課堂精練九年級全一冊數(shù)學(xué)北師大版2022
- 著衣母嬰臥像教學(xué)設(shè)計
- 維克多高中英語3500詞匯
- 【課件】DNA片段的擴增及電泳鑒定課件高二下學(xué)期生物人教版(2019)選擇性必修3
- GB/T 6417.1-2005金屬熔化焊接頭缺欠分類及說明
- 科創(chuàng)板知識測評20個題目的答案
- 2023年湖北成人學(xué)位英語考試真題及答案
- 走好群眾路線-做好群眾工作(黃相懷)課件
- NY∕T 4001-2021 高效氯氟氰菊酯微囊懸浮劑
- 《社會主義市場經(jīng)濟理論(第三版)》第七章社會主義市場經(jīng)濟規(guī)則論
評論
0/150
提交評論