第7章73匯編語言程序設(shè)計(jì)_第1頁
第7章73匯編語言程序設(shè)計(jì)_第2頁
第7章73匯編語言程序設(shè)計(jì)_第3頁
第7章73匯編語言程序設(shè)計(jì)_第4頁
第7章73匯編語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2014/06 第第7章章 MCS-51微型計(jì)算機(jī)微型計(jì)算機(jī)系統(tǒng)系統(tǒng) 原理及應(yīng)用原理及應(yīng)用 2014/06 7.3 MCS-51匯編程序設(shè)計(jì)匯編程序設(shè)計(jì) 7.3.1 MCS-51匯編偽指令匯編偽指令 匯編語言語句一般分為匯編語言語句一般分為指令性語句指令性語句和和指示性語句指示性語句。 u 指令性語句指令性語句是采用助記符構(gòu)成的匯編語言語句,在匯編時(shí)是采用助記符構(gòu)成的匯編語言語句,在匯編時(shí) 能產(chǎn)生與之對應(yīng)的機(jī)器碼,供能產(chǎn)生與之對應(yīng)的機(jī)器碼,供CPU識別,從而執(zhí)行相應(yīng)的功能。識別,從而執(zhí)行相應(yīng)的功能。 u 指示性語句指示性語句又稱又稱偽指令語句偽指令語句。偽指令不是真正的指令,雖。偽指令不是真正

2、的指令,雖 然與指令的形式類似,但在匯編時(shí)不產(chǎn)生供然與指令的形式類似,但在匯編時(shí)不產(chǎn)生供CPU執(zhí)行的任何機(jī)執(zhí)行的任何機(jī) 器代碼。器代碼。 u 偽指令起到偽指令起到指示說明指示說明的作用,在機(jī)器匯編時(shí)供匯編程序識的作用,在機(jī)器匯編時(shí)供匯編程序識 別和執(zhí)行的命令,用于在匯編過程中對數(shù)據(jù)的存儲(chǔ)環(huán)境或匯編別和執(zhí)行的命令,用于在匯編過程中對數(shù)據(jù)的存儲(chǔ)環(huán)境或匯編 實(shí)施一定的控制。實(shí)施一定的控制。 2014/06 1、ORG 起始匯編偽指令起始匯編偽指令 標(biāo)號:標(biāo)號: ORG ORG 1616位的地址或標(biāo)號位的地址或標(biāo)號 匯編過程中,機(jī)器檢測到該語句時(shí),便確認(rèn)了匯編的起匯編過程中,機(jī)器檢測到該語句時(shí),便確認(rèn)

3、了匯編的起 始地址,然后把始地址,然后把ORG偽指令下一條指令的首字節(jié)機(jī)器碼存?zhèn)沃噶钕乱粭l指令的首字節(jié)機(jī)器碼存 入入16位的地址或標(biāo)號所指示的存儲(chǔ)單元內(nèi),其他的后續(xù)指位的地址或標(biāo)號所指示的存儲(chǔ)單元內(nèi),其他的后續(xù)指 令字節(jié)或數(shù)據(jù)連續(xù)依次存入后面的存儲(chǔ)單元中。令字節(jié)或數(shù)據(jù)連續(xù)依次存入后面的存儲(chǔ)單元中。 例:例: ORG 1000HORG 1000H START START:MOV AMOV A,#45H#45H; 結(jié)果:(結(jié)果:(1000H1000H)=74H=74H,(,(1001H1001H)=45H=45H 2014/06 2、END 匯編結(jié)束偽指令匯編結(jié)束偽指令 ENDEND 匯編程序檢測

4、到該語句時(shí),認(rèn)為匯編語言源程序已經(jīng)結(jié)匯編程序檢測到該語句時(shí),認(rèn)為匯編語言源程序已經(jīng)結(jié) 束,束,END后面的指令語句將不被匯編成機(jī)器碼。一個(gè)程序后面的指令語句將不被匯編成機(jī)器碼。一個(gè)程序 中包括主程序和若干個(gè)子程序,只能有一個(gè)中包括主程序和若干個(gè)子程序,只能有一個(gè)END語句,它語句,它 在所有程序單位的最末尾。在所有程序單位的最末尾。 3、EQU 賦值偽指令賦值偽指令(等值等值) 字符名字符名 EQUEQU 數(shù)據(jù)或匯編符數(shù)據(jù)或匯編符 其功能是將一個(gè)數(shù)或者特定的匯編符號賦予規(guī)其功能是將一個(gè)數(shù)或者特定的匯編符號賦予規(guī) 定的符號名稱。定的符號名稱。 2014/06 例如:例如: INPINPEQUEQ

5、U33H33H ADDADDA A,INPINP 這里將這里將INP等值為等值為33H. “ “字符名字符名”必須先賦值后使用,因此必須先賦值后使用,因此EQUEQU偽指令偽指令 通常放在源程序的開頭。通常放在源程序的開頭。 2014/06 例:例: ORG 1000HORG 1000H KK EQU R0KK EQU R0 H1 EQU 20HH1 EQU 20H DISP EQU 0300H DISP EQU 0300H MOV R1 MOV R1,H1H1; MOV AMOV A,KKKK; ACALL DISP ACALL DISP END END 例:例: ORG 0000H ORG

6、 0000H MOV A MOV A,CCCC; LCALL DISP LCALL DISP CC DATA 20HCC DATA 20H DISP XDATA 0B00HDISP XDATA 0B00H END END 2014/06 4、DATA 數(shù)據(jù)地址賦值偽指令數(shù)據(jù)地址賦值偽指令 字符名字符名 DATADATA 表達(dá)式表達(dá)式 它用來給左邊的它用來給左邊的“字符名字符名”賦值。表達(dá)式可以是數(shù)據(jù)、地賦值。表達(dá)式可以是數(shù)據(jù)、地 址,也可以是包含被定義的址,也可以是包含被定義的“字符名字符名”在內(nèi)的表達(dá)式,但不在內(nèi)的表達(dá)式,但不 能是匯編符號,如能是匯編符號,如R0-R7等。等。 (1)EQU

7、偽指令定義的符號必須先定義后使用,偽指令定義的符號必須先定義后使用, 而而DATA偽指令的符號可以先使用后定義;偽指令的符號可以先使用后定義; (2)用用EQU偽指令可以把一個(gè)匯編符號賦給一個(gè)字符名稱,偽指令可以把一個(gè)匯編符號賦給一個(gè)字符名稱, 而而DATA偽指令則不能。偽指令則不能。 (3)DATA偽指令可將一個(gè)表達(dá)式的值賦給一個(gè)字符名稱,所偽指令可將一個(gè)表達(dá)式的值賦給一個(gè)字符名稱,所 定義的字符名稱也可以出現(xiàn)在表達(dá)式中,而用定義的字符名稱也可以出現(xiàn)在表達(dá)式中,而用EQU定義定義 的字符則不能這樣使用。的字符則不能這樣使用。 (4)DATA偽指令常在程序中用來定義數(shù)據(jù)地址。偽指令常在程序中用

8、來定義數(shù)據(jù)地址。 2014/06 5、DB 定義字節(jié)偽指令定義字節(jié)偽指令 標(biāo)號標(biāo)號 :DBDB 項(xiàng)或項(xiàng)表項(xiàng)或項(xiàng)表 從規(guī)定的地址單元開始,定義若干個(gè)從規(guī)定的地址單元開始,定義若干個(gè)8位內(nèi)存單元的內(nèi)位內(nèi)存單元的內(nèi) 容。在程序存儲(chǔ)器的某一部分存入一組規(guī)定好的容。在程序存儲(chǔ)器的某一部分存入一組規(guī)定好的8位二進(jìn)位二進(jìn) 制數(shù),或者是將一個(gè)數(shù)據(jù)表格存入程序存儲(chǔ)器。這個(gè)偽指制數(shù),或者是將一個(gè)數(shù)據(jù)表格存入程序存儲(chǔ)器。這個(gè)偽指 令在匯編后,將影響程序存儲(chǔ)器的內(nèi)容。令在匯編后,將影響程序存儲(chǔ)器的內(nèi)容。 例如:例如: TAB1TAB1:DBDB3FH3FH,5555,88,CC TAB2 TAB2:DBDB10100

9、B10100B 若若TAB1TAB1的對應(yīng)地址為的對應(yīng)地址為2000H2000H,則以上偽指令經(jīng)匯編,則以上偽指令經(jīng)匯編 以后,將對以后,將對2000H2000H開始的若干內(nèi)存單元賦值:開始的若干內(nèi)存單元賦值: (2000H2000H)=3FH=3FH(2001H2001H)=37H=37H (2002H2002H)=38H=38H(2003H2003H)=43H =43H (2004H2004H)=14H =14H 2014/06 6.DW 定義字偽指令定義字偽指令 標(biāo)號標(biāo)號 :DWDW 項(xiàng)或項(xiàng)表項(xiàng)或項(xiàng)表 DW與與DB的功能類似,區(qū)別在于的功能類似,區(qū)別在于DB定義的是字節(jié),定義的是字節(jié),D

10、W 定義的是字。定義的是字。DW經(jīng)常被用來定義經(jīng)常被用來定義16位的地址,位的地址,16位地址的位地址的 存放順序是高存放順序是高8位在前,低位在前,低8位在后。位在后。 例如:例如: ORGORG 1000H1000H DW DW 3964H 3964H,06H06H,2020 匯編以后結(jié)果為:匯編以后結(jié)果為: (1000H1000H)=39H =39H (1001H1001H)=64H =64H (1002H1002H)=00H=00H (1003H1003H)=6H =6H (1004H1004H)=00H =00H (1005H1005H)=14H=14H 2014/06 7. DS預(yù)

11、留存儲(chǔ)空間偽指令預(yù)留存儲(chǔ)空間偽指令 標(biāo)號標(biāo)號: : DSDS 表達(dá)式表達(dá)式 該偽指令的功能是從標(biāo)號指定的單元開始該偽指令的功能是從標(biāo)號指定的單元開始, 保留若干字節(jié)保留若干字節(jié) 的內(nèi)存空間以備源程序使用。存儲(chǔ)空間內(nèi)預(yù)留的存儲(chǔ)單元數(shù)的內(nèi)存空間以備源程序使用。存儲(chǔ)空間內(nèi)預(yù)留的存儲(chǔ)單元數(shù) 由表達(dá)式的值決定由表達(dá)式的值決定。 例如例如: ORG 1000H: ORG 1000H DS 10 DS 10 DB 30H, 8FH DB 30H, 8FH 從從1000H開始開始,預(yù)留預(yù)留10個(gè)字節(jié)的內(nèi)存單元個(gè)字節(jié)的內(nèi)存單元,然后從然后從 1010H開始開始,按照下一條按照下一條DB指令賦值指令賦值,即即(1

12、00AH)=30H, (100BH)=8FH。保留的存儲(chǔ)空間將由程序的其它部分決。保留的存儲(chǔ)空間將由程序的其它部分決 定它們的用處。定它們的用處。 2014/06 8.BIT 位地址賦值偽指令位地址賦值偽指令 字符名字符名 BITBIT 位地址位地址 例:例:X1 BIT 30HX1 BIT 30H RECORD RECORD BIT P2.2 BIT P2.2 其功能是將位地址賦予所規(guī)定的字符名稱。其功能是將位地址賦予所規(guī)定的字符名稱。 把兩位位地址分別賦給兩個(gè)變量把兩位位地址分別賦給兩個(gè)變量X1和和RECORD,在,在 編程中它們可當(dāng)作位地址來使用。但不是所有的編程中它們可當(dāng)作位地址來使用

13、。但不是所有的MCS-51 匯編程序都有這條偽指令。當(dāng)不具備匯編程序都有這條偽指令。當(dāng)不具備BIT命令時(shí),可以使命令時(shí),可以使 用用EQU命令來定義位地址變量命令來定義位地址變量。 2014/06 程序的基本算法結(jié)構(gòu)有程序的基本算法結(jié)構(gòu)有3種種:順序結(jié)構(gòu)、分支(選順序結(jié)構(gòu)、分支(選 擇)結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。擇)結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 1、順序結(jié)構(gòu):順序結(jié)構(gòu): 7.3.2 MCS-51匯編程序設(shè)計(jì)匯編程序設(shè)計(jì) 2014/06 例:例:將將30H30H內(nèi)的兩位壓縮內(nèi)的兩位壓縮BCDBCD碼拆開,并轉(zhuǎn)換成相應(yīng)的碼拆開,并轉(zhuǎn)換成相應(yīng)的ASCIIASCII碼,碼, 存入兩個(gè)存入兩個(gè)RAMRAM單元單元31H31H

14、和和32H32H中(低位存中(低位存31H31H) 開始開始 保存保存30H30H內(nèi)容內(nèi)容 取低位取低位 將低位變將低位變ASCIIASCII 取高位取高位 將高位變將高位變ASCIIASCII 結(jié)束結(jié)束 ORG 1000HORG 1000H MOV R0MOV R0,#30H#30H; MOV SPMOV SP,#50H#50H; MOV AMOV A,R0R0; PUSH ACCPUSH ACC; ANL AANL A,#0FH#0FH; ORL AORL A,#30H#30H; INC R0INC R0; MOV MOV R0R0,A A; POP ACCPOP ACC; ANL AAN

15、L A,#0F0H#0F0H; SWAP ASWAP A; ORL AORL A,#30H#30H; INC R0INC R0; MOV MOV R0R0,A A; ENDEND 2014/06 例:例:將將40H40H單元中單元中8 8位無符號二進(jìn)制數(shù),轉(zhuǎn)換成位無符號二進(jìn)制數(shù),轉(zhuǎn)換成3 3位位BCDBCD碼,碼, 并存在并存在BAI(BAI(百百) ),SHI(SHI(十十) ),GE(GE(個(gè)個(gè)) )三個(gè)單元中。三個(gè)單元中。 ORG 2000HORG 2000H BAI DATA 30HBAI DATA 30H SHI DATA 31HSHI DATA 31H GE DATA 32HGE

16、DATA 32H MOV A, 40HMOV A, 40H MOV B, #100MOV B, #100 DIV AB ;DIV AB ;A/100,A/100,商存商存A,A,余數(shù)存余數(shù)存B B MOV BAI,A;MOV BAI,A;存百位數(shù)存百位數(shù) MOV A, BMOV A, B MOV B, #10MOV B, #10 ENDEND DIV AB ;DIV AB ;A/10,A/10,商存商存A,A,余數(shù)存余數(shù)存B B MOV SHI, A;MOV SHI, A;存十位數(shù)存十位數(shù) MOV GE, BMOV GE, B SJMP $SJMP $ 2014/06 2、分支程序設(shè)計(jì)分支程序

17、設(shè)計(jì) 根據(jù)不同的條件,執(zhí)行不同的程序段。直接用來判斷分支根據(jù)不同的條件,執(zhí)行不同的程序段。直接用來判斷分支 條件的指令有條件的指令有JZ、JNZ、CJNE、JC、JNC、JB、JNB等。等。 例:例:在內(nèi)部在內(nèi)部RAM50HRAM50H單元中有一數(shù),若其最高位為單元中有一數(shù),若其最高位為1 1,則將此數(shù),則將此數(shù) 各位變反,反之不變。各位變反,反之不變。 ORG 1000HORG 1000H MOV AMOV A,50H50H; JNB ACC.7,HERE; JNB ACC.7,HERE; CPL A;CPL A; MOV 50H,A; MOV 50H,A; HERE:SJMP HERE;

18、HERE:SJMP HERE; END END ORG 1000H ORG 1000H MOV AMOV A,50H50H; ANL AANL A,#80H#80H; CJNE A,#80H,HERE;CJNE A,#80H,HERE; MOV AMOV A,50H50H; CPL A;CPL A; MOV 50H,AMOV 50H,A; HERE:SJMP HERE; HERE:SJMP HERE; END END 2014/06 例:例:設(shè)變量設(shè)變量X X存放于存放于R2R2,函數(shù)值,函數(shù)值Y Y 存放于存放于R3R3,按下式的要求給,按下式的要求給Y Y賦值。賦值。 ORG 0500HO

19、RG 0500H MOV AMOV A,R2R2; CJNE ACJNE A,#00H#00H,L1L1; MOV AMOV A,#00H#00H; SJMP L3SJMP L3; L1:JB ACC.7,L2L1:JB ACC.7,L2 MOV A,#01H;MOV A,#01H; SJMP L3;SJMP L3; L2:MOV A,#0FFH;L2:MOV A,#0FFH; L3:MOV R3,AL3:MOV R3,A SJMP L3; SJMP L3; ENDEND 01 00 01 X X X Y , , , 2014/06 ORG 0500HORG 0500H MOV AMOV A,

20、R2R2; JZ L2JZ L2; MOV R3MOV R3,#01H#01H; JB ACC.7,L1JB ACC.7,L1 SJMP L3SJMP L3; L1:MOV R3,#0FFHL1:MOV R3,#0FFH; SJMP L3SJMP L3; L2:MOV R3L2:MOV R3,#00H#00H L3:SJMP L3;L3:SJMP L3; ENDEND 01 00 01 X X X Y , , , 2014/06 例:例:有兩個(gè)帶符號數(shù)分別存于有兩個(gè)帶符號數(shù)分別存于ONEONE和和TWOTWO單元,試編程比單元,試編程比 較大小,并將大的數(shù)存入較大小,并將大的數(shù)存入MAXMAX

21、單元。單元。 分析:分析:1 1)若)若X-YX-Y為正,則為正,則 OV=0OV=0,XYXY OV=1 OV=1,XYXY 2 2)若)若X-YX-Y為負(fù),則為負(fù),則 OV=0OV=0,XY XYXY 同號:對兩個(gè)正數(shù)相減或者兩個(gè)負(fù)數(shù)相減都不會(huì)溢出(同號:對兩個(gè)正數(shù)相減或者兩個(gè)負(fù)數(shù)相減都不會(huì)溢出(OV=0OV=0)。)。 若差為正則若差為正則XYXY;若差為負(fù)則;若差為負(fù)則XYXY SAVE: MOV MAX,A;送較大值至;送較大值至MAX SJMP $ END JB ACC.7,NEXT;若;若X-Y為負(fù),則轉(zhuǎn)為負(fù),則轉(zhuǎn)NEXT JB OV,YMAX ;若;若X-Y0,OV1,則,則Y

22、X SJMP XMAX ;若;若X-Y0,OV0,則,則XY NEXT:JB OV,XMAX ;X-YY YMAX:MOV A,TWO ;YX SJMP SAVE 2014/06 3、循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì) 循環(huán)程序一般由四部分組成:循環(huán)程序一般由四部分組成: 1 1) 循環(huán)初始化循環(huán)初始化 循環(huán)初始化程序段位于循環(huán)程序的開頭,用于完成循環(huán)前的準(zhǔn)循環(huán)初始化程序段位于循環(huán)程序的開頭,用于完成循環(huán)前的準(zhǔn) 備工作。例如:給循環(huán)體中計(jì)數(shù)器和各工作寄存器設(shè)置初值。備工作。例如:給循環(huán)體中計(jì)數(shù)器和各工作寄存器設(shè)置初值。 2 2) 循環(huán)處理循環(huán)處理 這部分程序位于循環(huán)體內(nèi),是循環(huán)程序重復(fù)執(zhí)行的部分。這部分

23、程序位于循環(huán)體內(nèi),是循環(huán)程序重復(fù)執(zhí)行的部分。 3 3) 循環(huán)控制循環(huán)控制 循環(huán)控制在循環(huán)體內(nèi),由修改循環(huán)控制變量和條件轉(zhuǎn)移語句等循環(huán)控制在循環(huán)體內(nèi),由修改循環(huán)控制變量和條件轉(zhuǎn)移語句等 組成,用于控制循環(huán)執(zhí)行次數(shù)。組成,用于控制循環(huán)執(zhí)行次數(shù)。 4 4) 循環(huán)結(jié)束循環(huán)結(jié)束 用于存放執(zhí)行循環(huán)程序所得結(jié)果以及恢復(fù)各單元結(jié)果用于存放執(zhí)行循環(huán)程序所得結(jié)果以及恢復(fù)各單元結(jié)果 2014/06 循環(huán)結(jié)構(gòu):它在一定的條件下循環(huán)結(jié)構(gòu):它在一定的條件下, , 反復(fù)執(zhí)行某一部分的反復(fù)執(zhí)行某一部分的 操作。循環(huán)結(jié)構(gòu)又分為當(dāng)型(操作。循環(huán)結(jié)構(gòu)又分為當(dāng)型(WhileWhile)循環(huán)結(jié)構(gòu)和直到型)循環(huán)結(jié)構(gòu)和直到型 (Until

24、Until)循環(huán)結(jié)構(gòu)兩種方式。)循環(huán)結(jié)構(gòu)兩種方式。 當(dāng)型循環(huán)是先判斷條件當(dāng)型循環(huán)是先判斷條件, , 條件成立則執(zhí)行循環(huán)體條件成立則執(zhí)行循環(huán)體A;A;而直到型循環(huán)則是先執(zhí)行循環(huán)體而直到型循環(huán)則是先執(zhí)行循環(huán)體 A A一次一次, ,再判斷條件再判斷條件, ,條件不成立再執(zhí)行循環(huán)體條件不成立再執(zhí)行循環(huán)體A A。循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu) 的兩種形式可以互相轉(zhuǎn)換。的兩種形式可以互相轉(zhuǎn)換。 (a) 當(dāng)型循環(huán)當(dāng)型循環(huán) (b) 直到型循環(huán)直到型循環(huán) 2014/06 例:例:把內(nèi)部把內(nèi)部RAMRAM中起始地址為中起始地址為BLK1BLK1的數(shù)據(jù)塊傳送到外部的數(shù)據(jù)塊傳送到外部RAMRAM中中 以以BLK2BLK2為起始地

25、址的區(qū)域,直到遇到為起始地址的區(qū)域,直到遇到“#”#”字符的字符的ASCIIASCII碼為碼為 止。數(shù)據(jù)塊長度放在止。數(shù)據(jù)塊長度放在R1R1中。中。 ORG 2000HORG 2000H BLK1 EQU 30HBLK1 EQU 30H BLK2 EQU 1000HBLK2 EQU 1000H MOV R0 MOV R0,#BLK1#BLK1; MOV DPTRMOV DPTR,#BLK2#BLK2; XHXH:CLR CCLR C; MOV AMOV A,R0R0; CJNE ACJNE A,#23H#23H,L1L1; SJMP JSSJMP JS; L1L1:MOVX MOVX DPTR

26、DPTR,A A; INC R0 INC R0; INC DPTR INC DPTR; DJNZ R1 DJNZ R1,XHXH; JSJS:SJMP JSSJMP JS; ENDEND 2014/06 例:例:已知內(nèi)部已知內(nèi)部RAM31HRAM31H為起始地址的數(shù)據(jù)塊內(nèi)數(shù)據(jù)是無符號數(shù),為起始地址的數(shù)據(jù)塊內(nèi)數(shù)據(jù)是無符號數(shù), 塊長在塊長在30H30H內(nèi),編程求數(shù)據(jù)塊中最大值并存入內(nèi),編程求數(shù)據(jù)塊中最大值并存入29H29H單元中。單元中。 ORG 0300HORG 0300H MOV R0MOV R0,#31H#31H; MOV 29HMOV 29H,#00H#00H; LOOPLOOP:MOV

27、AMOV A,R0R0; CJNE A CJNE A,29H29H,L1L1; L1L1:JC NEXTJC NEXT; MOV 29HMOV 29H,A A; NEXTNEXT:INC R0INC R0; DJNZ 30HDJNZ 30H,LOOPLOOP; ENDEND CJNECJNE只用于無符號整數(shù)的比較。只用于無符號整數(shù)的比較。 SJMP SJMP 2014/06 4、查表程序設(shè)計(jì)查表程序設(shè)計(jì) 兩條查表指令:兩條查表指令: MOVC AMOVC A,A+DPTRA+DPTR; MOVC AMOVC A,A+PCA+PC; 例:例:已知已知R0R0中有一個(gè)十六進(jìn)制數(shù)(中有一個(gè)十六進(jìn)制數(shù)

28、(0-F0-F中的一個(gè)),編程把它轉(zhuǎn)中的一個(gè)),編程把它轉(zhuǎn) 換成相應(yīng)的換成相應(yīng)的ASCIIASCII碼并送入碼并送入R0R0。 ORG 0100HORG 0100H MOV DPTRMOV DPTR,#TAB#TAB; MOV AMOV A,R0R0; MOVC AMOVC A,A+DPTRA+DPTR; MOV R0MOV R0,A A; SJMP SJMP TABTAB:DB 0, DB 0, 1,2,3,41,2,3,4 DB 5, DB 5, 6,7,8,96,7,8,9 DB A, DB A, B,C,D,E,FB,C,D,E,F ENDEND 2014/06 5、子程序設(shè)計(jì)子程序設(shè)

29、計(jì) 子程序是指完成某一確定任務(wù)并能被其他程序反復(fù)調(diào)用的子程序是指完成某一確定任務(wù)并能被其他程序反復(fù)調(diào)用的 程序段。子程序在結(jié)構(gòu)上應(yīng)具有通用性和獨(dú)立性程序段。子程序在結(jié)構(gòu)上應(yīng)具有通用性和獨(dú)立性 ORG 4000HORG 4000H MOV SPMOV SP,#50H#50H; MOV AMOV A,R2R2; ACALL HASCACALL HASC; MOV 30HMOV 30H,A A; MOV AMOV A,R2R2; SWAP ASWAP A; ACALL HASCACALL HASC; MOV 31HMOV 31H,A A; SJMP SJMP ; HASCHASC:MOV DPTRMOV DPTR,#TAB#TAB; ANL A ANL A,#0FH#0FH; MOVC A MOVC A,A+DPTRA+DPTR; RET RET TABTAB:DB 01234567DB 01234567 DB 89ABCDEF DB 89ABCDEF 例:例:在在R2R2中有兩位中有兩位1616進(jìn)制數(shù),試將它們分別轉(zhuǎn)換成進(jìn)制數(shù),試將它們分別轉(zhuǎn)換成ASCIIASCII, 并存入并存入30H30H和和31H31H

溫馨提示

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

評論

0/150

提交評論