版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-301第第4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3024.1 匯編語言程序設(shè)計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ)1. 匯編語言匯編語言匯編語言源程序源程序目標(biāo)程序目標(biāo)程序匯編程序匯編程序匯編匯編4.1 4.1 匯編語言程序設(shè)計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ) 匯編語言匯編語言第第4 4章章 匯編語言程序設(shè)計
2、匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-303標(biāo)號:指令助記符操作數(shù);注釋,指令指令:注意:立即數(shù)前加“#”,后面帶“B”、“D”、“H”分別表示“二進制”、 “十進制”、“十六進制”指令中rel、addr16、addr11常用標(biāo)號地址表示指令中操作數(shù)可帶加、減運算符的表達式“$”符號表示該轉(zhuǎn)移指令機器碼所在ROM的首地址標(biāo)號以字母開頭、不超過8個字符,不允許使用保留字、寄存器名及偽指令字符4.1 4.1 匯編語言程序設(shè)計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ) 匯編語言匯編語言第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計T
3、he Principle and Application Of Microcomputer2022-5-304標(biāo)號:指令助記符操作數(shù);注釋,偽指令偽指令偽指令:偽指令偽指令機器指令機器指令一一對應(yīng)一一對應(yīng)特點:偽指令是由匯編程序識別,并完成相應(yīng)的功能功能:在匯編過程中對數(shù)據(jù)的存儲環(huán)境或匯編實施一定的控制,如:偽指令給程序分配一定的存儲區(qū)、定義符號、指定暫存數(shù)據(jù)的RAM區(qū)等 4.1 4.1 匯編語言程序設(shè)計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ) 匯編語言匯編語言第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-
4、5-305DATA(賦值)偽指令:(賦值)偽指令: 格式:字符名 DATA 表達式DATA偽指令與EQU偽指令的區(qū)別:EQU定義的字符名必須“先定義后使用”,而DATA定義的“字符名”沒有這種限制DATA偽指令可放在程序的任何位置,比EQU偽指令靈活 功能:將右邊“表達式”的值賦給左邊的“字符名”注意:這里的表達式允許是一個數(shù)據(jù)或地址,也可以是包含被定義的“字符名”在內(nèi)的表達式,但不能是匯編符號,如R0R7等 4.1 4.1 匯編語言程序設(shè)計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ) 匯編語言匯編語言第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of
5、 Microcomputer2022-5-306ORG(起始匯編)偽指令(起始匯編)偽指令 :格式:ORG 功能:把以下語句定義的內(nèi)存數(shù)據(jù)或程序,從表達式指定的起點(偏移地址)開始連續(xù)存放,直至遇到新的ORG指令。表達式值是一個無符號數(shù)格式:END功能:結(jié)束匯編語言源程序的標(biāo)志用途:常用于匯編語言源程序末尾,表示匯編結(jié)束注意:一個源程序只能有一個END命令,且置于程序的最后。在END以后所寫的指令,匯編程序都不予處理 END(結(jié)束匯編)偽指令 :4.1 4.1 匯編語言程序設(shè)計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ) 匯編語言匯編語言第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle
6、and Application Of Microcomputer2022-5-307BIT(位地址賦值)偽指令:(位地址賦值)偽指令: 格式:字符名 BIT 位地址功能:將位地址賦予BIT前面的字符名,經(jīng)賦值后可用該字符名代替BIT后面的位地址注意:被定義后,“字符名”是一個符號位地址有些匯編程序不允許使用BIT偽指令,用戶只能用EQU偽指令定義位地址變量,但是用這種方式定義時,EQU語句右邊只能是實際的物理地址,而不能使符號位地址 如:K1 BIT 20HKK BIT K1 X2 EQU 6DHX2 EQU K14.1 4.1 匯編語言程序設(shè)計基礎(chǔ)匯編語言程序設(shè)計基礎(chǔ) 匯編語言匯編語言第第4
7、 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3081. 順序結(jié)構(gòu)順序結(jié)構(gòu)程序設(shè)計程序設(shè)計特點:執(zhí)行程序的方式是“從頭到尾”逐條執(zhí)行指令語句,直至程序結(jié)束例4-1: 拆字程序。 將30H單元內(nèi)的兩位BCD碼拆開并轉(zhuǎn)換成ASCII碼,將轉(zhuǎn)換后的ASCII碼放在31H和32H單元,并讓低位ASCII碼放在32H單元 程序:ORG2000HMOVA,30H ANLA,#0FHADDA,#30H MOV32H,AMOVA,30HSWAPA ANLA,#0FHADDA,#30HMOV31H,ASJMP$
8、 END 4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計4.2 MCS51匯編語言程序設(shè)計匯編語言程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-309例例4-2:將:將60H單元中的單元中的8位無符號數(shù)轉(zhuǎn)換成三位位無符號數(shù)轉(zhuǎn)換成三位BCD碼,碼,并存放在并存放在BAI(百位)、(百位)、SHI(十位)和(十位)和GE(個位)三(個位)三個單元中個單元中 MOV SHIW,A MOV GEW,BSJMP $ END程序:ORG
9、 2000HBAIW DATA 40HSHIW DATA 41HGEW DATA 42HMOVA,60H ;取數(shù)MOVB,#100 ;除數(shù)為100DIV AB ;確定百位數(shù),位于A中MOV BAIW,A ;存百位數(shù)MOV A,B ;余數(shù)送AMOV B,#10 ;除數(shù)為10DIV AB ;確定十位數(shù)和個位數(shù)4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3010例例4-3:將兩個三字節(jié):將兩
10、個三字節(jié)無符號數(shù)無符號數(shù)相加,其中一個加數(shù)在內(nèi)部相加,其中一個加數(shù)在內(nèi)部RAM的的32H、31H和和30H單元;另一個加數(shù)在內(nèi)部單元;另一個加數(shù)在內(nèi)部RAM的的35H、34H和和33H單元,要求相加后的和存入單元,要求相加后的和存入32H、31H和和30H單元,進位存入位尋址單元,進位存入位尋址區(qū)的區(qū)的20H單元中單元中 MOVR0,A INCR0 INCR1MOVA,R0ADDC A,R1MOVR0,AMOV20H,CEND程序:ORG2000HCLRCMOVR0,30HMOVR1,33HMOVA,R0ADDA,R1MOVR0,AINCR0INCR1MOVA,R0ADDC A,R14.2 M
11、CS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3011例例10-24:16位數(shù)求補位數(shù)求補。已知。已知16位二進制數(shù)在位二進制數(shù)在R1、R0中,中,將此將此16位二進制數(shù)求補,求補結(jié)果存入內(nèi)部位二進制數(shù)求補,求補結(jié)果存入內(nèi)部RAM 31H、30H單元單元 程序:ORG2000HCLRCMOVA,R0;取低位字節(jié)送入ACPLA;求反ADDA,#01H;加1MOV30H,A;存低位字節(jié)補碼MOVA,R
12、1;取高位字節(jié)送ACPLA;去反ADDC A,#00H;加進位MOV31H,A;存高位字節(jié)補碼END4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-30122. 分支結(jié)構(gòu)分支結(jié)構(gòu)程序設(shè)計程序設(shè)計利用條件轉(zhuǎn)移指令,使程序執(zhí)行到某一指令后,根據(jù)條件(即上面運算的情況)是否滿足,改變程序執(zhí)行的次序特點特點:先用:先用比較指令比較指令或或數(shù)據(jù)操作數(shù)據(jù)操作及及位測指令位測指令等改變標(biāo)志等改變標(biāo)志寄存
13、器各個標(biāo)志位,然后用條件轉(zhuǎn)移指令進行分支寄存器各個標(biāo)志位,然后用條件轉(zhuǎn)移指令進行分支設(shè)計要點:先建立可供條件轉(zhuǎn)移指令測試的條件 選用合適的條件轉(zhuǎn)移指令,如: JZ,JNZ,CJNE,DJNZ等/JC,JNC,JB,JNB,JBC等 在轉(zhuǎn)移的目的地址處設(shè)定標(biāo)號4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3013例例10-25:求單字節(jié):求單字節(jié)有符號有符號二進制數(shù)的補碼二進制數(shù)的補碼程序
14、:ORG 2000HJNB ACC.7,NEG ;(A)0,不需轉(zhuǎn)換MOV C,ACC.7 ;保存符號位MOV 00H,C ;保存符號位CPL AADD A,#1MOV C,00HMOV ACC.7,C ;恢復(fù)符號位NEG: SJMP $END4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3014例例10-26:已知:已知VAR單元中有一自變量單元中有一自變量X,請按如下條件,請按如下條
15、件編出求函數(shù)值編出求函數(shù)值Z并將它存入并將它存入FUN單元的程序單元的程序 Z=X0X=0X010-1AXA=0?A0?A1A1YYN存數(shù)存數(shù)N方法一:先分支后賦值 AXXA=0?A0?R11R11存數(shù)存數(shù)YNNY方法二:先賦值后分支4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3015方法一方法一:先分支后賦值:先分支后賦值程序:ORG 2000HVAR DATA 40HFUN DAT
16、A 41HSTART:MOV A,VARJZ SAVEJNB ACC.7,ZHENMOV A,#0FFH SJMP SAVEZHEN:MOV A,#01H SAVE:MOV FUN,A SJMP $ENDAXA=0?A0?A1A1YYN存數(shù)存數(shù)N4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3016ORG 2000HVAR DATA 40HFUN DATA 41HSTART:MOV A,
17、VAR;自變量XACJNEA,#0,NEQ;若X0,則轉(zhuǎn)NEQ SJMP SAVENEQ: JNB ACC.7,ZHEN;若X0,則轉(zhuǎn)ZHENMOVA,#0FFH ;若X0?R11R11存數(shù)存數(shù)YNNY流程圖:流程圖:程序:ORG 2000HVAR DATA 40HFUN DATA 41HSTART:MOV A,VARJZ SAVEMOV R1,#0FFH JB ACC.7,NEGMOV R1,#01HSJMP SAVENEG: MOV A,R1 SAVE:MOV FUN,A SJMP $END4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)
18、計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3018例例10-27:兩個:兩個帶符號數(shù)帶符號數(shù)分別存于分別存于ONE和和TWO單元,試編程比較大單元,試編程比較大小,并將大的數(shù)存入小,并將大的數(shù)存入MAX單元單元 開始開始 XY?X-Y0?OV=1?MAXXXOV=1?MAXYY結(jié)束結(jié)束YNNYYYNN流程圖流程圖:4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Princi
19、ple and Application Of Microcomputer2022-5-3019分析:兩個帶符號數(shù)的比較可將兩數(shù)相減后的正負和溢出標(biāo)志結(jié)合在一起判斷 1)若X-Y為正,則 OV=0,XY OV=1,XY2)若X-Y為負,則 OV=0,XY同號:對兩個正數(shù)相減或者兩個負數(shù)相減都不會溢出(OV=0)。若差為正則XY;若差為負則X0,OV1,則YX SJMP XMAX;若X-Y0,OV0,則XYNEG: JB OV,XMAX;X-YYYMAX:MOV A,TWO;YXSJMP SAVEXMAX:MOV A,ONE;XYSAVE: MOV MAX,A;送較大值至MAXSJMP $END4
20、.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3021例例10-28:設(shè)計可多達:設(shè)計可多達128路分支出口的轉(zhuǎn)移程序路分支出口的轉(zhuǎn)移程序 分析:設(shè)128個出口分別轉(zhuǎn)向128段小程序,它們的首地址依次為addr00、addr01、addr02、addr03、addr7F。要轉(zhuǎn)移到某分支的信息存放在工作寄存器R2中,則散轉(zhuǎn)程序: ORG 1000HEQU TAB 2000HMOV DPTR,
21、#TAB MOV A,R2 RL A ;將出口分支信息乘2,因為散轉(zhuǎn)表中的轉(zhuǎn)移 JMP A+DPTR;指令均為2字節(jié)指令,若為3字節(jié)指令應(yīng)乘3TAB: AJMP addr00 AJMP addr01 AJMP addr02 AJMP addr7F4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-30223. 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)程序程序組成組成:初始化初始化循環(huán)體循環(huán)體循環(huán)控制循環(huán)控制循環(huán)結(jié)束處
22、理循環(huán)結(jié)束處理4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3023例例10-29:已知:已知內(nèi)部內(nèi)部RAM的的ADDR1單元開始有一單元開始有一無符號無符號數(shù)據(jù)塊,塊數(shù)據(jù)塊,塊長在長在LEN單元,請編出求數(shù)據(jù)塊中各數(shù)累加和并存于單元,請編出求數(shù)據(jù)塊中各數(shù)累加和并存于外部外部RAM的的SUM1單元的程序單元的程序 (注注:和不超過:和不超過256)方法一:先判斷后處理流程圖:0(A)塊長
23、塊長+1(R2)ADDR1 (R1)完成?完成?(A)+ (R1)(A)YN(R1)+1(R1)和和(SUM1)程序:ORG 2000HADDR1 EQU 30HLEN EQU 20HSUM1 EQU 2000H MOV DPTR,#SUM1CLR AMOV R2,LENMOV R1,#ADDR1 INC R2SJMP CHECKLOOP: ADD A,R1 INC R1CHECK:DJNZ R2,LOOP MOVX DPTR,A SJMP $END4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序
24、設(shè)計The Principle and Application Of Microcomputer2022-5-3024方法二:先處理后判斷流程圖:0(A)塊長塊長(R2)ADDR1 (R1)完成?完成?(A)+ (R1)(A)YN(R1)+1(R1)和和(SUM1)程序:ORG 2000HADDR1 EQU 30HLEN EQU 20HSUM1 EQU 2000H MOV DPTR,#SUM1CLR AMOV R2,LENMOV R1,#ADDR1 NEXT: ADD A,R1 INC R1DJNZ R2,NEXTMOVX DPTR,A SJMP $END4.2 MCS4.2 MCS5151匯
25、編語言程序設(shè)計匯編語言程序設(shè)計 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3025例例10-30:已知內(nèi)部:已知內(nèi)部RAM ADDR1為起始地址的數(shù)據(jù)塊內(nèi)為起始地址的數(shù)據(jù)塊內(nèi)部數(shù)據(jù)是無符號數(shù),塊長在部數(shù)據(jù)是無符號數(shù),塊長在LEN單元內(nèi),請編程求出數(shù)單元內(nèi),請編程求出數(shù)據(jù)塊中的最大值并存入據(jù)塊中的最大值并存入MAX單元單元 程序:ORG 2000HADDR1 DATA 50HLEN DATA 30HMAX DATA 32HMOV MAX, #00H;MA
26、X單元清零MOV R1,#ADDR1;ADDR1送R1LOOP: MOV A,R1;數(shù)據(jù)塊中數(shù)送入ACJNE A,MAX,NEXT1;A和(MAX)比較NEXT1: JC NEXT;若A9,則轉(zhuǎn)NEXT2ADD A,#30H;若(A)10;則(A)(A)30HSJMP SAVE;轉(zhuǎn)SAVENEXT2:ADD A,#37H;(A)(A)37HSAVE:MOV R0,A;存數(shù)SJMP $;結(jié)束END4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 查表結(jié)構(gòu)程序設(shè)計查表結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Applicat
27、ion Of Microcomputer2022-5-3029方法二方法二:查表求解:現(xiàn)以:查表求解:現(xiàn)以“MOVC A,A+PC”指令為例指令為例程序:ORG 2000HMOV A,R0;取需轉(zhuǎn)換數(shù)值到(A)ANL A,#0FH;屏蔽高四位ADD A,#03H;計算偏移量MOVC A,A+PC;查表MOV R0,A;存數(shù)SJMP $;結(jié)束TAB:DB 0,1,2,3,4DB 5,6,7,8,9DB A,B,C,D,E,F(xiàn)END4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 查表結(jié)構(gòu)程序設(shè)計查表結(jié)構(gòu)程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Princ
28、iple and Application Of Microcomputer2022-5-3030方法三:先把R0中內(nèi)容加上90H,并作十進制調(diào)整,然后再用ADDC指令使R0中內(nèi)容加上40H,也作十進制調(diào)整,所得結(jié)果即為相應(yīng)ASCII碼程序:ORG 2700HMOV A,R0;取需轉(zhuǎn)換數(shù)值到(A)ANL A,#0FH;屏蔽高四位ADD A,#90H;A中的內(nèi)容加90H DA A;十進制調(diào)整ADDC A,#40H;A中的內(nèi)容加40HDA A;十進制調(diào)整MOV R0,A;存數(shù)SJMP $;結(jié)束END4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 查表結(jié)構(gòu)程序設(shè)計查表結(jié)構(gòu)程序設(shè)計
29、第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-30315. 子程序結(jié)構(gòu)子程序結(jié)構(gòu)程序程序特點:簡化整個程序的結(jié)構(gòu),便于調(diào)試,可實現(xiàn)程序模塊化、縮短程序設(shè)計時間、減少對存儲空間的占用 LCALL/ACALLRET注意:子程序的第一條指令地址稱為子程序的始地址或入口地址。該指令前必須有標(biāo)號,標(biāo)號應(yīng)以子程序任務(wù)定名主程序調(diào)用子程序是通過安排在主程序中的調(diào)用指令實現(xiàn)的,在子程序末尾放置RET子程序返回指令子程序調(diào)用和返回指令能自動保護和恢復(fù)斷點地址,但對需要保護的工作寄存器、特殊寄存器和內(nèi)存單元
30、中的內(nèi)容,就必須在子程序開始和末尾(RET指令前)安排保護和恢復(fù)的指令4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 子程序設(shè)計子程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3032為使所編子程序可以放在64KB程序存儲器的任何地方并能被主程序調(diào)用,子程序內(nèi)容通常使用相對轉(zhuǎn)移指令而不使用長轉(zhuǎn)移指令,以便匯編時生成浮動代碼子程序參數(shù)可以分為入口參數(shù)和出口參數(shù)兩類:入口參數(shù)是指子程序需要的原始參數(shù),由調(diào)用它的主程序通過約定工作寄存器R0R7、特殊功能寄存器SF
31、R、內(nèi)存單元或堆棧等預(yù)先傳送給子程序使用;出口參數(shù)是由子程序根據(jù)入口參數(shù)執(zhí)行程序后獲得的結(jié)果參數(shù),應(yīng)由子程序通過約定的工作寄存器R0R7、特殊功能寄存器SFR、內(nèi)存單元或堆棧等傳遞給主程序使用 4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 子程序設(shè)計子程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3033主程序與子程序之間的參數(shù)傳遞主程序與子程序之間的參數(shù)傳遞傳遞的參數(shù)傳遞的參數(shù)入口參數(shù)入口參數(shù)出口參數(shù)出口參數(shù)參數(shù)的參數(shù)的傳遞方法傳遞方法用寄存器或累加器傳
32、遞參數(shù)用寄存器或累加器傳遞參數(shù)利用寄存器傳遞利用寄存器傳遞參數(shù)地址參數(shù)地址利用堆棧傳遞參數(shù)利用堆棧傳遞參數(shù)利用位地址傳遞參數(shù)利用位地址傳遞參數(shù)入口參數(shù):是指子程序需要的原始數(shù)據(jù),由主程序傳遞給子程序出口參數(shù):是由子程序提供入口參數(shù)執(zhí)行子程序后獲得的結(jié)構(gòu)參數(shù),由子程序傳遞給主程序4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 子程序設(shè)計子程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3034u用寄存器或累加器傳遞參數(shù) 將入口參數(shù)或出口參數(shù)放在工作寄存器或累加器
33、中u利用寄存器傳遞參數(shù)地址 CPU在主程序中把子程序入口參數(shù)地址利用寄存器R0R7傳遞給子程序;子程序執(zhí)行完成后的出口參數(shù)也如此傳遞給主程序優(yōu)點:程序最簡單、運算速度快缺點:工作寄存器數(shù)量有限,不能傳遞太多的數(shù)據(jù);主程序必須先把數(shù)據(jù)送到工作寄存器;參數(shù)個數(shù)固定,不能由主程序任意設(shè)定優(yōu)點:節(jié)省傳遞數(shù)據(jù)的工作量、可實現(xiàn)變長度運算如:參數(shù)在內(nèi)部RAM中R0、R1;參數(shù)在外部RAM或ROM中DPTR;可變長度運算時,可用一個寄存器指出數(shù)據(jù)長度,或者在RAM中使用結(jié)束標(biāo)志缺點:參數(shù)不易控制4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 子程序設(shè)計子程序設(shè)計第第4 4章章 匯編語言程
34、序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3035u利用堆棧傳遞參數(shù)主程序傳遞參數(shù)給子程序:主程序?qū)?shù)依次壓棧,子程序再依次彈棧并將其應(yīng)用于子程序操作和運算子程序傳遞參數(shù)給主程序:子程序?qū)?shù)依次壓棧,主程序再依次彈棧并將其應(yīng)用于主程序u利用位地址傳遞參數(shù) 當(dāng)子程序的入口參數(shù)是字節(jié)中的某些位時,將這些位地址作為參數(shù)傳遞例10-33:在寄存器R2中存放兩位16進制數(shù),請編制程序?qū)⑵浞謩e轉(zhuǎn)換為ASCII碼并且存入M1單元和M11單元優(yōu)點:簡單、傳遞參數(shù)量大,不必為特定的參數(shù)分配存儲單元缺點:堆棧指針的深度不易控
35、制4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 子程序設(shè)計子程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3036入口參數(shù): (SP)兩位16位進制數(shù)出口參數(shù):(SP)1位十六進制數(shù)對應(yīng)的ASCII碼使用資源:SP,A,DPTR,R2,內(nèi)部RAM40H、41H單元主程序:ORG 2000HM1DATA 40HMOV SP,#60H;設(shè)堆棧指針初值MOV DPTR,#TAB1;ASCII碼表頭地址送數(shù)據(jù)指針PUSH 02H;第一個16進制數(shù)進棧,利用堆棧傳遞
36、參數(shù)ACALL ASCH;調(diào)用轉(zhuǎn)換子程序POP M1;第一個ASCII碼送入M1單元MOV A,R2;SWAP A;高4位和低4位交換PUSH ACC;第二個16進制數(shù)進棧ACALL ASCH;第二次調(diào)用轉(zhuǎn)換子程序POP M1+1;第二個ASCII碼送入M11單元SJMP $4.2 MCS4.2 MCS5151匯編語言程序設(shè)計匯編語言程序設(shè)計 子程序設(shè)計子程序設(shè)計第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計The Principle and Application Of Microcomputer2022-5-3037ASCH:DEC SPDEC SP;修改SP指針到參數(shù)位置POP ACC;彈出參數(shù)到(A)ANL A,#0FHMOVC A,A+DPTR;查表PUSH ACC;參數(shù)進棧INC SP;修改SP指針返回地址INC SPRETTAB1:DB 01234567DB 89ABCDEFEND子程序:4.2 MCS4.2
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆河北省唐山市遵化市物理高二上期中調(diào)研模擬試題含解析
- 2025屆上海市四中高三上物理期中綜合測試模擬試題含解析
- 2025屆湖北省宜昌市二中物理高一第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 山西省太原市2025屆物理高二第一學(xué)期期末統(tǒng)考試題含解析
- 2025屆山西平遙縣和誠物理高二第一學(xué)期期末考試試題含解析
- 陜西省渭南市臨渭區(qū)尚德中學(xué)2025屆高二物理第一學(xué)期期中監(jiān)測試題含解析
- 2025屆安徽師大附中物理高二第一學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 激光雷達系統(tǒng)基礎(chǔ)知識單選題100道及答案解析
- 新疆塔城地區(qū)(2024年-2025年小學(xué)五年級語文)統(tǒng)編版期中考試((上下)學(xué)期)試卷及答案
- 小學(xué)主題班會課件小學(xué)生食品安
- 永椿化工新材料有限公司 年產(chǎn) 800 噸鄰三氟甲基苯甲酰氯系列產(chǎn)品、1500 噸 2,6- 二氟苯甲酰胺系列產(chǎn)品、500 噸叔丁基二甲基氯硅烷、500 噸 3-氨基-2-溴-5-氟苯甲酸甲酯等產(chǎn)品項目環(huán)境影響報告書
- GB/T 21837-2023鐵磁性鋼絲繩電磁檢測方法
- 給高二孩子的一封信
- 廚房衛(wèi)生教案-勞動課教學(xué)設(shè)計
- 鍍鋅板通風(fēng)管工程施工方案
- 助產(chǎn)職業(yè)生涯規(guī)劃書
- 體外診斷試劑注冊申報資料模板-穩(wěn)定性研究資料
- 艾賓浩斯遺忘曲線-計劃表《遺忘曲線》
- 福建省泉州市德化縣2023-2024學(xué)年七年級上學(xué)期期中考試道德與法治試題
- 真核生物基因表達調(diào)控
- 信息資源目錄編制規(guī)范(用于個人參考學(xué)習(xí)版本)
評論
0/150
提交評論