




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、p5.1 5.1 匯編語言源程序的格式匯編語言源程序的格式 p5.25.2 偽指令偽指令 p5.3 5.3 匯編語言源程序的人工匯編匯編語言源程序的人工匯編p5.4 MCS-515.4 MCS-51匯編語言程序的基本結(jié)構(gòu)匯編語言程序的基本結(jié)構(gòu)與設(shè)計(jì)舉例與設(shè)計(jì)舉例1u計(jì)算機(jī)能夠計(jì)算機(jī)能夠直接直接執(zhí)行的是:執(zhí)行的是:0 0和和1 1組成的組成的機(jī)器碼指令程序。機(jī)器碼指令程序。2u上一章在講解指令時(shí)的程序,其特點(diǎn)是:上一章在講解指令時(shí)的程序,其特點(diǎn)是:1、指令是采用助記符,而不是用機(jī)器碼表示;指令是采用助記符,而不是用機(jī)器碼表示;2、地址是采用標(biāo)號(hào)地址地址是采用標(biāo)號(hào)地址(符號(hào)地址符號(hào)地址),而不是真
2、正的實(shí)際,而不是真正的實(shí)際地址。地址。u匯編語言源程序:用助記符和標(biāo)號(hào)地址編寫的程序。匯編語言源程序:用助記符和標(biāo)號(hào)地址編寫的程序。u匯編語言面向機(jī)器,要經(jīng)過匯編。匯編語言面向機(jī)器,要經(jīng)過匯編。u高級(jí)語言高級(jí)語言面向算法、過程、對(duì)象,類似自然語言,可移植面向算法、過程、對(duì)象,類似自然語言,可移植性好,須經(jīng)解釋或翻譯后才能被執(zhí)行。性好,須經(jīng)解釋或翻譯后才能被執(zhí)行。3匯編匯編p匯編:匯編:將匯編語言源程序轉(zhuǎn)換成機(jī)器語言目標(biāo)程序的過將匯編語言源程序轉(zhuǎn)換成機(jī)器語言目標(biāo)程序的過程稱為匯編。程稱為匯編。(可人工匯編可人工匯編或或機(jī)器匯編機(jī)器匯編)p 匯編程序:匯編程序:能將匯編語言源程序轉(zhuǎn)換成機(jī)器語言目標(biāo)
3、程能將匯編語言源程序轉(zhuǎn)換成機(jī)器語言目標(biāo)程序的序的軟件軟件稱為匯編程序。稱為匯編程序。(機(jī)器匯編機(jī)器匯編)pMCS-51MCS-51的匯編語言的的匯編語言的四分段格式四分段格式如下:如下:4 標(biāo)號(hào):標(biāo)號(hào): 操作碼操作碼 操作數(shù);注釋操作數(shù);注釋 規(guī)則:規(guī)則:(1 1)標(biāo)號(hào)字段和操作字碼段之間要有冒號(hào)標(biāo)號(hào)字段和操作字碼段之間要有冒號(hào)“:”相隔;相隔;(2 2)操作碼字段和操作數(shù)字段間的分界符是空格;)操作碼字段和操作數(shù)字段間的分界符是空格;(3 3)多操作數(shù)之間用逗號(hào)相隔;多操作數(shù)之間用逗號(hào)相隔; (4 4)操作數(shù)字段和注釋字段之間的分界符用分號(hào))操作數(shù)字段和注釋字段之間的分界符用分號(hào)“;”相相隔
4、。隔。 操作碼字段為必選項(xiàng),其余各段為任選項(xiàng)。操作碼字段為必選項(xiàng),其余各段為任選項(xiàng)。例如:例如: START: MOV A,#00H ;0A NOPNOP51標(biāo)號(hào)標(biāo)號(hào) 是語句所在地址的標(biāo)志符號(hào)。是語句所在地址的標(biāo)志符號(hào)。命名規(guī)范如下:命名規(guī)范如下:(1)由)由18個(gè)字母、數(shù)字與下劃線個(gè)字母、數(shù)字與下劃線“-”組成;組成;(2)首字符為字母;)首字符為字母;(3)同一標(biāo)號(hào)在一個(gè)程序中只能定義一次;)同一標(biāo)號(hào)在一個(gè)程序中只能定義一次; (4)絕對(duì)不允許把指令的保留字、寄存器及偽指令字符)絕對(duì)不允許把指令的保留字、寄存器及偽指令字符作為語句的標(biāo)號(hào)。作為語句的標(biāo)號(hào)。2操作碼字段操作碼字段 是匯編語言指
5、令中唯一不能空缺的部分。匯編程序就是是匯編語言指令中唯一不能空缺的部分。匯編程序就是根據(jù)這一字段來生成機(jī)器代碼的。根據(jù)這一字段來生成機(jī)器代碼的。 操作碼段也可以是偽指令的助記符,在匯編時(shí)起作用。操作碼段也可以是偽指令的助記符,在匯編時(shí)起作用。63操作數(shù)操作數(shù): 表示指令操作的對(duì)象,可以是一個(gè)具體的表示指令操作的對(duì)象,可以是一個(gè)具體的數(shù)據(jù),也可以是參加運(yùn)算的數(shù)據(jù)所在的地址。操作數(shù)數(shù)據(jù),也可以是參加運(yùn)算的數(shù)據(jù)所在的地址。操作數(shù)一般有以下幾種形式:一般有以下幾種形式: 沒有操作數(shù)沒有操作數(shù):操作數(shù)隱含在操作碼中,如:操作數(shù)隱含在操作碼中,如RETRET指令。指令。 只有一個(gè)操作數(shù)只有一個(gè)操作數(shù),如,
6、如INC AINC A指令。指令。 有兩個(gè)操作數(shù)有兩個(gè)操作數(shù):如:如MOV AMOV A,30H30H指令,操作數(shù)之間以逗號(hào)指令,操作數(shù)之間以逗號(hào)相隔。相隔。 有三個(gè)操作數(shù)有三個(gè)操作數(shù):如:如CJNE ACJNE A,#00H#00H,LOOPLOOP指令。指令。 可以采用字母或數(shù)字等多種表示形式。可以采用字母或數(shù)字等多種表示形式。7操作數(shù)是立即數(shù)操作數(shù)是立即數(shù), ,可用二進(jìn)制、十進(jìn)制和十六進(jìn)制形式:可用二進(jìn)制、十進(jìn)制和十六進(jìn)制形式:十六進(jìn)制,后綴十六進(jìn)制,后綴“H” H” 。 二進(jìn)制,后綴二進(jìn)制,后綴“B” B” 。十進(jìn)制,后綴十進(jìn)制,后綴“D”D”,也可省略。,也可省略。 若十六進(jìn)制的若十
7、六進(jìn)制的操作數(shù)以字符操作數(shù)以字符AFAF中的某個(gè)開頭時(shí),中的某個(gè)開頭時(shí),則需在它則需在它前面加一個(gè)前面加一個(gè) “ “0”0”,以便在匯編時(shí)把它和字符,以便在匯編時(shí)把它和字符AFAF區(qū)別開來。區(qū)別開來。 注意數(shù)字前加注意數(shù)字前加“#”#”。 帶加、減運(yùn)算符的表達(dá)式帶加、減運(yùn)算符的表達(dá)式: :8對(duì)于直接地址對(duì)于直接地址directdirect,有多種選擇:,有多種選擇: (1)(1)直接數(shù)據(jù)地址(各種進(jìn)制),如直接數(shù)據(jù)地址(各種進(jìn)制),如MOV AMOV A、30H30H等;等; (2)(2)標(biāo)號(hào)地址,如標(biāo)號(hào)地址,如MOV AMOV A,SUMSUM等,等, SUMSUM應(yīng)該在程序中應(yīng)該在程序中某
8、處加以定義;某處加以定義; (3)(3)帶有加減的表達(dá)式,設(shè)帶有加減的表達(dá)式,設(shè)SUMSUM為已定義的標(biāo)號(hào)地址,為已定義的標(biāo)號(hào)地址, 如如MOV AMOV A,SUM+13SUM+13; (4)(4)特殊功能寄存器名,如特殊功能寄存器名,如MOV AMOV A,P2P2等。等。9美元符號(hào)美元符號(hào)$的使用的使用用于表示該轉(zhuǎn)移指令操作碼所在的地址。用于表示該轉(zhuǎn)移指令操作碼所在的地址。例如,如下例如,如下指令:指令: JNB F0, $與如下指令是等價(jià)的:與如下指令是等價(jià)的:HERE:JNB F0,HERE 注釋指令或程序的含義,便于閱讀程序、注釋指令或程序的含義,便于閱讀程序、維護(hù)程序。維護(hù)程序。
9、 必須用必須用“;”隔開,隔開,續(xù)行續(xù)行時(shí),也必須以時(shí),也必須以“;”開頭開頭 。10 只有在匯編前的源程序中才有偽指令。經(jīng)過匯編只有在匯編前的源程序中才有偽指令。經(jīng)過匯編得到目標(biāo)程序(機(jī)器代碼)后,偽指令已無存在的必得到目標(biāo)程序(機(jī)器代碼)后,偽指令已無存在的必要,所以要,所以“偽偽”體現(xiàn)在匯編時(shí),體現(xiàn)在匯編時(shí),偽指令沒有相應(yīng)的機(jī)偽指令沒有相應(yīng)的機(jī)器代碼產(chǎn)生器代碼產(chǎn)生。 偽指令偽指令是告訴匯編程序,是告訴匯編程序,如何匯編如何匯編源程序的指令。源程序的指令。不屬于指令系統(tǒng)中的指令不屬于指令系統(tǒng)中的指令。 用來對(duì)匯編過程進(jìn)行某種控制,或者對(duì)符號(hào)、標(biāo)號(hào)用來對(duì)匯編過程進(jìn)行某種控制,或者對(duì)符號(hào)、標(biāo)號(hào)
10、賦值。賦值。 不同版本不同版本的匯編語言,基本用法類似,但的匯編語言,基本用法類似,但稍有不同稍有不同。11(1)起始地址偽指令起始地址偽指令用于用于設(shè)定設(shè)定目標(biāo)程序段目標(biāo)程序段或或數(shù)據(jù)塊數(shù)據(jù)塊的的起始地址起始地址。注意:注意:地址從小到大,且不能重疊。地址從小到大,且不能重疊。它放在一段源程序(主程序、它放在一段源程序(主程序、子程序)或數(shù)據(jù)塊的前面,說明緊跟在其后的程序段或數(shù)子程序)或數(shù)據(jù)塊的前面,說明緊跟在其后的程序段或數(shù)據(jù)塊的起始地址就是偽指令中的據(jù)塊的起始地址就是偽指令中的16位絕對(duì)地址或用標(biāo)號(hào)、位絕對(duì)地址或用標(biāo)號(hào)、表達(dá)式表示的地址。一般默認(rèn)從表達(dá)式表示的地址。一般默認(rèn)從0000開始
11、。開始。 p例如:例如: ORG 2000HSTART: MOV A, #7FHp它表明標(biāo)號(hào)為它表明標(biāo)號(hào)為START的目標(biāo)程序是從的目標(biāo)程序是從2000H單元開始存單元開始存放的。放的。 12(2)定義字節(jié)偽指令)定義字節(jié)偽指令 DB用于從指定的地址開始,在用于從指定的地址開始,在程序存儲(chǔ)器程序存儲(chǔ)器的連續(xù)單元中定的連續(xù)單元中定義字節(jié)數(shù)據(jù)。義字節(jié)數(shù)據(jù)。8位數(shù)表可以是一字節(jié)常數(shù)或字符,或用逗號(hào)位數(shù)表可以是一字節(jié)常數(shù)或字符,或用逗號(hào)分開的分開的字節(jié)串字節(jié)串,或用引號(hào)括起來的字符串。,或用引號(hào)括起來的字符串。例如例如: ORG 2000H TAB1: DB 30H, 8AH, 7FH, 73 DB
12、“5”, “a”, BCD30H2008H8AH2007H7FH2006H49H2005H35H2004H61H2003H42H2002H43H2001H44H2000H由于由于ORG 2000H,所以,所以TAB1的地址為的地址為2000H,因此以上偽指令經(jīng)匯編以后,將對(duì),因此以上偽指令經(jīng)匯編以后,將對(duì)2000H開始的若干內(nèi)存單元賦值。開始的若干內(nèi)存單元賦值。13(3)定義數(shù)據(jù)字偽指令)定義數(shù)據(jù)字偽指令 DW 用于從指定地址開始,在用于從指定地址開始,在程序存儲(chǔ)器程序存儲(chǔ)器的連續(xù)單元中定義的連續(xù)單元中定義16位的數(shù)據(jù)字。位的數(shù)據(jù)字。存放時(shí),數(shù)據(jù)字的高存放時(shí),數(shù)據(jù)字的高8位在前(低地址),低位
13、在前(低地址),低 8位在后(高地址)。位在后(高地址)。例如,例如, DW“AA”;存入存入41H,41HDW“A” ;存入存入00H,41HDW“ABC”; 超過兩字節(jié)超過兩字節(jié),不合法不合法DW 100H, 1ACH, -804;按順序存入按順序存入01H、00H、01H、0ACH、0FCH、0DCH14例如例如: ORG 1500H TAB2: DW 1234H, 80H匯編以后匯編以后: (1500H)=12H(1501H)=34H(1502H)=00H(1503H)=80H。12H1503H34H1502H00H1501H80H1500H15(4) 預(yù)留存儲(chǔ)空間偽指令預(yù)留存儲(chǔ)空間偽
14、指令 DS 表達(dá)式表達(dá)式用于從指定地址開始,在用于從指定地址開始,在程序存儲(chǔ)器程序存儲(chǔ)器中保留中保留指定數(shù)目指定數(shù)目的的字字節(jié)單元節(jié)單元作為作為預(yù)留存儲(chǔ)區(qū)預(yù)留存儲(chǔ)區(qū),供程序運(yùn)行使用。源程序匯編時(shí),對(duì),供程序運(yùn)行使用。源程序匯編時(shí),對(duì)預(yù)留單元不賦值。預(yù)留單元不賦值。例如:例如:ADDRTABL: DS 20;從標(biāo)號(hào)從標(biāo)號(hào)ADDRTABL代表的地址開始,預(yù)留代表的地址開始,預(yù)留20個(gè)連續(xù)的地址單元個(gè)連續(xù)的地址單元ORG8100HDS08H;從從8100H地址開始,保留地址開始,保留8個(gè)連續(xù)的地址單元個(gè)連續(xù)的地址單元16例如例如: ORG 1000HDS 20HDB 30H, 8FH匯編后:從匯編后
15、:從1000H開始,預(yù)留開始,預(yù)留 32(20H)個(gè)字節(jié)的內(nèi)存單元,然后從個(gè)字節(jié)的內(nèi)存單元,然后從1020H開始,按照下一條開始,按照下一條DB指令賦值,即指令賦值,即(1020H)=30H,(1021H)=8FH。 8FH1021H30H1020H101FH1001H1000H1002H17(5) 等值偽指令等值偽指令EQU 將一個(gè)數(shù)值或寄存器名賦給一個(gè)指定的符號(hào)名。賦值后,一個(gè)數(shù)值或寄存器名賦給一個(gè)指定的符號(hào)名。賦值后,其值在整個(gè)程序中有效(其值在整個(gè)程序中有效(不能再改變不能再改變)。其中)。其中可以可以是是 地址、標(biāo)號(hào)或表達(dá)式,地址、標(biāo)號(hào)或表達(dá)式,工作寄存器工作寄存器,其值為,其值為8
16、位或位或16位二進(jìn)位二進(jìn)制數(shù)。賦值以后的字符名稱既可以作制數(shù)。賦值以后的字符名稱既可以作地址地址使用,也可以作使用,也可以作立即立即數(shù)數(shù)使用。使用。先定義后使用先定義后使用。例如:例如:TAB EQU 1000H TAB1 EQU TAB MOV DPTR, # TAB 前一條偽指令表示前一條偽指令表示TAB地址的值為地址的值為1000H,后一條表示符號(hào)地址,后一條表示符號(hào)地址TAB1與與TAB等值(可以互換)。等值(可以互換)。18 (6) 位地址符號(hào)定義偽指令位地址符號(hào)定義偽指令 BIT 用于給字符名稱賦以位地址。經(jīng)賦值后就可用指令中用于給字符名稱賦以位地址。經(jīng)賦值后就可用指令中BIT左面
17、的字符名稱來代替左面的字符名稱來代替BIT右邊所指出的位。右邊所指出的位。 其中其中可以是絕對(duì)地址,也可以是符號(hào)地址(位符號(hào)名稱)??梢允墙^對(duì)地址,也可以是符號(hào)地址(位符號(hào)名稱)。例如:例如:FLG BIT F0 FLG2 BIT 0F0H AI BIT P1.0經(jīng)以上偽指令定義后,在編程中就可以把經(jīng)以上偽指令定義后,在編程中就可以把FLG和和AI作為位地址作為位地址來使用。來使用。 19 (7)結(jié)束匯編偽指令)結(jié)束匯編偽指令ENDEND是匯編語言源程序的結(jié)束標(biāo)志,表示匯編結(jié)束。在是匯編語言源程序的結(jié)束標(biāo)志,表示匯編結(jié)束。在END以后所寫的指令,匯編程序都不予以處理。以后所寫的指令,匯編程序都
18、不予以處理。 在一個(gè)源程序中只能有在一個(gè)源程序中只能有1條條END命令。在同時(shí)包含有主程序和命令。在同時(shí)包含有主程序和子程序的源程序中,也只能有一個(gè)子程序的源程序中,也只能有一個(gè)END命令,并放到所有指命令,并放到所有指令的最后;否則,就有一部分指令不能被匯編。令的最后;否則,就有一部分指令不能被匯編。 也是選擇項(xiàng),當(dāng)源程序?yàn)橹鞒绦驎r(shí)才具有,且其值也是選擇項(xiàng),當(dāng)源程序?yàn)橹鞒绦驎r(shí)才具有,且其值為主程序第為主程序第1條指令的符號(hào)地址;當(dāng)源程序不是主程序時(shí),條指令的符號(hào)地址;當(dāng)源程序不是主程序時(shí),END命令不應(yīng)帶命令不應(yīng)帶項(xiàng)。項(xiàng)。20該偽指令用于給地址賦予DATA前面的符號(hào),賦值后可用該符號(hào)代替DA
19、TA后面的片內(nèi)RAM字節(jié)單元地址。(8) DATA偽指令偽指令匯編后,RESULT就表示片內(nèi)RAM的60H單元,程序后面用片內(nèi)RAM的60H單元的地方就可以用RESULT。21(9) XDATA偽指令偽指令該偽指令與DATA偽指令基本相同,只是它針對(duì)的是。22將一個(gè)匯編程序插入到源程序中 (10)INCLUDE 偽指令偽指令$將指定的文件內(nèi)容立即插入到源程序中,它通常用來將用戶自定義的8051符號(hào)文件包含到程序中去。23匯編程序的匯編過程匯編程序的匯編過程 匯編有兩種方法:手工匯編、機(jī)器匯編。匯編有兩種方法:手工匯編、機(jī)器匯編。 手工匯編過程:手工匯編過程:第一次匯編:確定地址,翻譯成各條機(jī)器
20、碼,第一次匯編:確定地址,翻譯成各條機(jī)器碼,字符標(biāo)號(hào)字符標(biāo)號(hào)原樣寫出;原樣寫出;第二次匯編:第二次匯編:標(biāo)號(hào)代真標(biāo)號(hào)代真,將字符標(biāo)號(hào)用所計(jì)算出的具體,將字符標(biāo)號(hào)用所計(jì)算出的具體地址值或偏移量代換。地址值或偏移量代換。 24源程序源程序 目標(biāo)程序目標(biāo)程序 地址地址 ORG 1000H ORG 1000H START START:MOV R0MOV R0,2FH 2FH MOV R2 MOV R2,#00H #00H MOV A MOV A,R0 R0 MOV R3 MOV R3,A A INC R3 INC R3 SJMP SJMP NEXT NEXT LOOP LOOP:INC R0 INC
21、R0 CJNE R0 CJNE R0,#44H#44H,NEXTNEXT INC R2 INC R2 NEXT NEXT:DJNZ R3DJNZ R3,LOOPLOOP MOV MOV 2AH2AH,R2 R2 SJMP $ SJMP $ END END 第一次匯編第一次匯編第二次匯編第二次匯編1000 A82F1002 7A001004 E61005 FB1006 0B1007 80NEXT1009 08100A B644NEXT100D 0A100E DBLOOP1010 8A2A1012 80FEA82F7A00E6FB0B800508B644010ADBF98A2A80FE主要知識(shí)點(diǎn):
22、主要知識(shí)點(diǎn):順序程序順序程序; ;分支程序分支程序; ;循環(huán)程序循環(huán)程序; ; 查表程序查表程序; ;子程序子程序; ;運(yùn)算程序運(yùn)算程序 ; ;25u用匯編語言與用高級(jí)語言進(jìn)行程序設(shè)計(jì)很相似。對(duì)于比用匯編語言與用高級(jí)語言進(jìn)行程序設(shè)計(jì)很相似。對(duì)于比較復(fù)雜的問題可以先根據(jù)題目的要求作出流程圖,然后較復(fù)雜的問題可以先根據(jù)題目的要求作出流程圖,然后再根據(jù)流程圖來編寫程序。對(duì)于比較簡(jiǎn)單的問題則可以再根據(jù)流程圖來編寫程序。對(duì)于比較簡(jiǎn)單的問題則可以不作流程因而直接編程。不作流程因而直接編程。u兩者的差別還是很大的。一個(gè)很重要的差別就在于用匯兩者的差別還是很大的。一個(gè)很重要的差別就在于用匯編語言編程時(shí),對(duì)于編
23、語言編程時(shí),對(duì)于數(shù)據(jù)的存放位置數(shù)據(jù)的存放位置,以及,以及工作單元的工作單元的安排安排等都要由編程者自己安排。而用高級(jí)語言編程時(shí),等都要由編程者自己安排。而用高級(jí)語言編程時(shí),這些問題都是由計(jì)算機(jī)安排的,編程者則不必過問。這些問題都是由計(jì)算機(jī)安排的,編程者則不必過問。26程序框架 ORG 0000H LJMP MAIN ;跳轉(zhuǎn)至主程序 ORG 0003H LJMP INT0_INT ;跳轉(zhuǎn)至外部中斷0的中斷服務(wù)程序 ORG 000BH LJMP T0_INT ;跳轉(zhuǎn)至定時(shí)器0的中斷服務(wù)程序 ORG 0013H LJMP INT1_INT ;跳轉(zhuǎn)至外部中斷1的中斷服務(wù)程序 ORG 0030H MAI
24、N: ;開始寫主程序 END中斷入口地址中斷入口地址主程序開始主程序開始27u理解程序結(jié)構(gòu)(順序、分支、循環(huán)、子程序);理解程序結(jié)構(gòu)(順序、分支、循環(huán)、子程序);u熟練掌握程序設(shè)計(jì)的思路方法和技巧;熟練掌握程序設(shè)計(jì)的思路方法和技巧;u要求掌握典型算法;要求掌握典型算法; 找到分析問題和解決問題的著眼點(diǎn);找到分析問題和解決問題的著眼點(diǎn); 學(xué)會(huì)抓住不同問題的規(guī)律性;學(xué)會(huì)抓住不同問題的規(guī)律性; 舉一反三,獨(dú)立思考,有創(chuàng)意,有新意,獨(dú)到。舉一反三,獨(dú)立思考,有創(chuàng)意,有新意,獨(dú)到。28一、一、分清指令和偽指令及其功能;分清指令和偽指令及其功能;二、二、高級(jí)語言程序設(shè)計(jì)方法的比較與遷移;高級(jí)語言程序設(shè)計(jì)方
25、法的比較與遷移;三、三、特別注意匯編語言是面向機(jī)器的,特別注意匯編語言是面向機(jī)器的, 要記住要記住 CPU的資源;的資源; 存儲(chǔ)器結(jié)構(gòu)與尋址方式;存儲(chǔ)器結(jié)構(gòu)與尋址方式; I/O口、定時(shí)口、定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)等關(guān)鍵的參數(shù);計(jì)數(shù)器、中斷系統(tǒng)等關(guān)鍵的參數(shù); 寄存器間接尋址中指針的選擇和使用技巧。寄存器間接尋址中指針的選擇和使用技巧。四、四、從宏觀了解從宏觀了解MCS-51匯編語言程序的整體結(jié)構(gòu),匯編語言程序的整體結(jié)構(gòu), 從微觀從微觀上理解微機(jī)中各組成部分是如何通過程序聯(lián)系起來。上理解微機(jī)中各組成部分是如何通過程序聯(lián)系起來。分析問題,確定算法分析問題,確定算法根據(jù)算法,畫出程序流程圖根據(jù)算法,畫出
26、程序流程圖分配內(nèi)存工作區(qū)及有關(guān)端口地址分配內(nèi)存工作區(qū)及有關(guān)端口地址 分配內(nèi)存工作區(qū),尤其是片內(nèi)分配內(nèi)存工作區(qū),尤其是片內(nèi)RAMRAM的分配,把內(nèi)存區(qū)、的分配,把內(nèi)存區(qū)、堆棧區(qū)、各種緩沖區(qū)要合理地分配,并確定每個(gè)區(qū)域的首堆棧區(qū)、各種緩沖區(qū)要合理地分配,并確定每個(gè)區(qū)域的首地址,便于編程使用。要確定外部擴(kuò)展的各種地址,便于編程使用。要確定外部擴(kuò)展的各種I/OI/O端口的端口的地址、分配地址、分配I/OI/O接口線。接口線。編寫程序編寫程序上機(jī)調(diào)試上機(jī)調(diào)試30順序結(jié)構(gòu)順序結(jié)構(gòu) 分支程序結(jié)構(gòu)分支程序結(jié)構(gòu)循環(huán)程序結(jié)構(gòu)循環(huán)程序結(jié)構(gòu)順序程序順序程序是程序設(shè)計(jì)中的基本模塊。順序程序沒有分支,從第是程序設(shè)計(jì)中的基
27、本模塊。順序程序沒有分支,從第一條指令開始依次執(zhí)行每一條指令,直到最后一條,程序就算一條指令開始依次執(zhí)行每一條指令,直到最后一條,程序就算執(zhí)行完畢。執(zhí)行完畢。特點(diǎn):特點(diǎn):比較簡(jiǎn)單,能完成一定的功能,是構(gòu)成復(fù)雜程序的基礎(chǔ)。比較簡(jiǎn)單,能完成一定的功能,是構(gòu)成復(fù)雜程序的基礎(chǔ)。31看幾個(gè)例題??磶讉€(gè)例題。32例例1 功能:將單字節(jié)壓縮功能:將單字節(jié)壓縮BCD碼(存于數(shù)據(jù)內(nèi)存碼(存于數(shù)據(jù)內(nèi)存30H單單元)元)分離分離轉(zhuǎn)換轉(zhuǎn)換成成ASCII碼放在碼放在31H、32H單元。單元。-30H-31H-32H-33H-34H-35H36H36H38H37H68H38HMOV 30H,#68HMOV A,30H;用
28、除法分離;用除法分離MOV B,#10HDIV AB;商商6在在A,余數(shù),余數(shù)8在在B中中MOV 31H,B;轉(zhuǎn)換成分離的;轉(zhuǎn)換成分離的BCDMOV 32H,AORL 31H,#30H;存結(jié)果存結(jié)果ORL 32H,#30H33例例2 功能:功能:將將8位二進(jìn)制數(shù)位二進(jìn)制數(shù)(存于數(shù)據(jù)內(nèi)存(存于數(shù)據(jù)內(nèi)存30H單元)單元)轉(zhuǎn)換成轉(zhuǎn)換成三位分離的三位分離的BCD碼放在碼放在31H、32H 、33H單元。單元。-30H-31H-32H-33H-34H02H35H05H36H04H37HFEH38HMOV A,30H;用除法分離;用除法分離MOV B,#10DIV AB;商商25在在A,余數(shù),余數(shù)4個(gè)位在
29、個(gè)位在B中中MOV 31H,BMOV B,#10DIV AB;商商2百位在百位在A,余數(shù),余數(shù)5十位在十位在B中中MOV 32H,B ;存結(jié)果存結(jié)果MOV 33H,A個(gè)個(gè)十十百百34例例3 功能(功能(例例2的逆運(yùn)算的逆運(yùn)算):):將將三位分離的三位分離的BCD碼放在碼放在31H、32H 、33H單元單元轉(zhuǎn)換成轉(zhuǎn)換成8位二進(jìn)制數(shù)位二進(jìn)制數(shù)(存于數(shù)據(jù)內(nèi)(存于數(shù)據(jù)內(nèi)存存30H單元)單元) 。-30H-31H-32H-33H-34H02H35H05H36H04H37HFEH38HMOV A,33H;MOV B,#10MUL AB;積積BA,最大,最大20即即33H中存的數(shù)不中存的數(shù)不能超過能超過2A
30、DD A,32H;百位乘以百位乘以10加十位,在加十位,在A中中MOV B,#10MUL AB;再乘以再乘以10ADD A,31H ;存結(jié)果存結(jié)果MOV 30H,A個(gè)個(gè)十十百百35處理過程:將30H單元的內(nèi)容高3位屏蔽;31H單元內(nèi)容的高5位屏蔽,高低四位交換,左移一位;然后與30H單元的內(nèi)容相或,拼裝后放到40H單元。36程序如下:程序如下:ORG 0100HMOV A,30H ANL A,#00011111BMOV 30H,A;MOV A,31HANL A,#00000111B ;SWAP A RL A ;ORL A,30H;組裝組裝MOV 40H,AEND37查表查表 例例55功能:功能
31、:求變量求變量X(0 x5) X(0 x5) 的平方的平方 入口:入口:X X 值存放在片內(nèi)值存放在片內(nèi)RAMRAM的的 30H 30H 單元單元出口:出口:X X2 2 值存放在片內(nèi)值存放在片內(nèi)RAMRAM的的 31H31H 單元單元 ORG 0000HSTART: MOV DPTR,# TABLE MOV A,30H MOVC A,A+DPTR MOV 31H,A;存結(jié)果;存結(jié)果 SJMP $ ORG 100HTABLE: DB 00,01,04,09,16,25 END-TABLETABLE-101H-102H19H103H10H104H09H105H04H106H01H107H00H1
32、08H程序存儲(chǔ)器38例例6 6 將內(nèi)部將內(nèi)部RAM中中20H單元和單元和30H單元的無符號(hào)數(shù)單元的無符號(hào)數(shù)相加,結(jié)果存入相加,結(jié)果存入R0(高位)和(高位)和R1(低位)中。(低位)中。ORGORG0000H0000HLJMPLJMPMAINMAINORGORG0030H0030HMAIN:MAIN:MOVMOVA,20HA,20HCLRCLRC CADDADDA,30HA,30HMOVMOVR1,AR1,ACLRCLRA AADDC ADDC A,#00A,#00MOVMOVR0,AR0,ASJMP SJMP $ $ENDEND39結(jié)構(gòu):根據(jù)不同的條件,進(jìn)行相應(yīng)的處理。結(jié)構(gòu):根據(jù)不同的條件,
33、進(jìn)行相應(yīng)的處理。通常用條件轉(zhuǎn)移指令形成簡(jiǎn)單分支結(jié)構(gòu)。通常用條件轉(zhuǎn)移指令形成簡(jiǎn)單分支結(jié)構(gòu)。如:如: 判(判(A) = Z 或或 NZ ,轉(zhuǎn)移,轉(zhuǎn)移判(判(CY)= 1 或或 0 ,轉(zhuǎn)移,轉(zhuǎn)移判(判(bit)=1 或或 0 ,轉(zhuǎn)移,轉(zhuǎn)移CJNE 比較不相等轉(zhuǎn)移比較不相等轉(zhuǎn)移 40 根據(jù)不同的條件,執(zhí)行根據(jù)不同的條件,執(zhí)行不同的程序段。不同的程序段。JZ、JNZ;JC、JNC;JB、JNB、JBC;CJNE ;正確合理地運(yùn)用正確合理地運(yùn)用關(guān)鍵:關(guān)鍵:用條件轉(zhuǎn)移指令實(shí)現(xiàn)分支;用條件轉(zhuǎn)移指令實(shí)現(xiàn)分支;用無條件轉(zhuǎn)移指令匯合到一用無條件轉(zhuǎn)移指令匯合到一點(diǎn)。點(diǎn)。YesNo41例例1 1、設(shè)設(shè)a a存放在累加器
34、存放在累加器A A中,中,b b存放在寄存器存放在寄存器B B中,要求按下式中,要求按下式 計(jì)算計(jì)算Y Y值,并將結(jié)果值,并將結(jié)果Y Y存于存于R2R2中,試編寫程序。中,試編寫程序。 a-b a-b (a0a0) Y = Y = a+b a+b (a 0a 0) 解:本題關(guān)鍵是判解:本題關(guān)鍵是判a a是正數(shù),還是負(fù)數(shù);是正數(shù),還是負(fù)數(shù);由由ACC.7ACC.7便知。便知。 ORG 0030HORG 0030H BRBR: JB ACC.7JB ACC.7,ADD1ADD1 CLR C;CLR C;計(jì)算分支計(jì)算分支a-ba-b SUBB A SUBB A,B B SJMP DONESJMP D
35、ONE ADD1 ADD1: ADD AADD A,B B;計(jì)算分支計(jì)算分支a+b DONEDONE: MOV R2,A;MOV R2,A;存結(jié)果存結(jié)果 SJMP SJMP ENDEND 42例例2 2、如果累加器、如果累加器A A的的D1D0D1D0位都為位都為0 0,則,則R2R2加加1 1,否則,否則,R3R3減減 1 1,試編寫程序。,試編寫程序。 解:根據(jù)解:根據(jù)A A和和00000011B00000011B邏輯邏輯“與與”的結(jié)果來判定。的結(jié)果來判定。 ORG 0030HORG 0030H MOV B MOV B,A A;保存;保存A A ANL A ANL A,#00000011B
36、#00000011B JNZ R3DEC1JNZ R3DEC1 INC R2 INC R2 SJMP DONESJMP DONE R3DEC1 : DEC R3DEC R3;計(jì)算分支計(jì)算分支 DONEDONE: MOV AMOV A,B;B;恢復(fù)恢復(fù)A A SJMP $SJMP $ END END D1D0位位都為都為1 ?CJNE A,#03H,R3DEC143CJNE A, #0, Next1LCALL Pr0LJMP ToExitNext1: CJNE A, #1, Next2LCALL Pr1LJMP ToExitNext2: CJNE A, #2, Next3LCALL Pr2LJM
37、P ToExitNext3: CJNE A, #3, Else1LCALL Pr3LJMP ToExitElse1: LCALL PrElseToExit: SJMP $多分支程序的設(shè)計(jì)類似高級(jí)語言中的case。44CJNE A, #0, Next1LCALL Pr0 Next1: CJNE R1, #1, Next2LCALL Pr1Next2: CJNE R2, #5DH, Next3LCALL Pr2 Next3: CJNE R3, #3FH, END1LCALL Pr3 END1: LCALL PrENDToExit: SJMP $輪詢一遍45 ORG 0000 MOV A,R7 RL
38、 A ADD A,R7 MOV DPTR,#TAB JMP A+DPTRTAB:LJMP L0 LJMP L1 LJMP L2 LJMP L3L0:INC R0 JMP TOENDL1:INC R1 JMP TOENDL2:INC R2 JMP TOENDL3:INC R3TOEND:SJMP $ENDu根據(jù)R7的值,轉(zhuǎn)移到不同的分支中的1個(gè)。例中R7=03.46順序程序順序程序 每條指令只執(zhí)行一次;每條指令只執(zhí)行一次;分支程序分支程序 根據(jù)不同條件,會(huì)跳過一些指令,而轉(zhuǎn)去根據(jù)不同條件,會(huì)跳過一些指令,而轉(zhuǎn)去 執(zhí)行另一些指令執(zhí)行另一些指令共同點(diǎn):每條指令至多執(zhí)行共同點(diǎn):每條指令至多執(zhí)行一次一次
39、。但是,實(shí)際中有時(shí)要求某程。但是,實(shí)際中有時(shí)要求某程序段序段多次重復(fù)執(zhí)行多次重復(fù)執(zhí)行,需要采用循環(huán)結(jié)構(gòu)。,需要采用循環(huán)結(jié)構(gòu)。 47循環(huán)結(jié)構(gòu)不但使程序簡(jiǎn)練,而且大大節(jié)省存儲(chǔ)空間。循環(huán)結(jié)構(gòu)不但使程序簡(jiǎn)練,而且大大節(jié)省存儲(chǔ)空間。循環(huán)程序包含四部分:循環(huán)程序包含四部分:、初始化部分(循環(huán)計(jì)數(shù)器、變量置初值)初始化部分(循環(huán)計(jì)數(shù)器、變量置初值)、循環(huán)處理部分(主體功能,需要重復(fù)執(zhí)行的部分)循環(huán)處理部分(主體功能,需要重復(fù)執(zhí)行的部分) 、循環(huán)控制部分(修改地址指針、修改變量、檢測(cè)循環(huán)控制部分(修改地址指針、修改變量、檢測(cè)循環(huán)結(jié)束條件)循環(huán)結(jié)束條件)、循環(huán)結(jié)束處理部分(對(duì)結(jié)果分析、處理,存放結(jié)果)循環(huán)結(jié)束處
40、理部分(對(duì)結(jié)果分析、處理,存放結(jié)果)p在具體結(jié)構(gòu)上分:在具體結(jié)構(gòu)上分:先先循環(huán)循環(huán)后后判斷、判斷、先先判斷判斷后后循環(huán)。循環(huán)。 1、先循環(huán)處理后循環(huán)控制,稱為先循環(huán)處理后循環(huán)控制,稱為“直到型直到型”循環(huán);循環(huán); 2、 先循環(huán)控制后循環(huán)處理,稱為先循環(huán)控制后循環(huán)處理,稱為“當(dāng)型當(dāng)型”循環(huán)。循環(huán)。48循環(huán)次數(shù)已知,可用計(jì)數(shù)器控制循環(huán)次數(shù);循環(huán)次數(shù)已知,可用計(jì)數(shù)器控制循環(huán)次數(shù);循環(huán)次數(shù)未知,根據(jù)某種條件判斷是否終止循環(huán)。循環(huán)次數(shù)未知,根據(jù)某種條件判斷是否終止循環(huán)。 49 ORG 0030HZero: mov R0,#30H mov R7,#10 mov A,#00HLoop: mov R0,A i
41、nc R0 djnz R7,Loop sjmp $ END30HR023H98H0A8H0FDH00000050ORG 0030HADD1: MOVR3, #00HMOVR4, #00HMOVR2, #nMOVR0, #40HLOOP: MOVA, R3 ;取和的低位取和的低位ADDA, R0 ; 相加相加MOVR3, ACLRAADDC A, R4 ;低位字節(jié)向高位字節(jié)進(jìn)位低位字節(jié)向高位字節(jié)進(jìn)位MOVR4, AINCR0 ;地址加地址加1DJNZR2, LOOP;未加完繼續(xù)重復(fù)未加完繼續(xù)重復(fù)SJMP$END51例例3把把內(nèi)部?jī)?nèi)部RAM中起始地址為中起始地址為BLK1的數(shù)據(jù)塊的數(shù)據(jù)塊傳送傳送到
42、到外部外部RAM以以BLK2為為 起始地址的區(qū)域,直到遇到起始地址的區(qū)域,直到遇到“#”字符的字符的ASC碼為止。碼為止。MOV SP,#6FH MOVR0 ,#BLK1 ;BLK1數(shù)據(jù)塊起始地址數(shù)據(jù)塊起始地址MOVDPTR ,#BLK2 ;BLK2數(shù)據(jù)塊起始地址數(shù)據(jù)塊起始地址XH:MOVA ,R0 ;取數(shù)據(jù);取數(shù)據(jù)PUSHACCCLRCSUBBA ,#23H ;判是否為判是否為“#”字符字符JZSTOPPOPACCMOVX DPTR ,A ;數(shù)據(jù)傳送;數(shù)據(jù)傳送INCR0INCDPTRAJMP XH ;循環(huán)控制;循環(huán)控制 STOP:SJMP$END52u單重單重循環(huán)程序和循環(huán)程序和多重多重循環(huán)
43、;循環(huán);u多重多重循環(huán)(循環(huán)嵌套)應(yīng)注意的問題:循環(huán)(循環(huán)嵌套)應(yīng)注意的問題: 只允許只允許外外重循環(huán)重循環(huán)嵌套嵌套內(nèi)內(nèi)重循環(huán)重循環(huán) 不允許不允許循環(huán)相互循環(huán)相互交叉交叉 不允許不允許從從外外循環(huán)程序循環(huán)程序跳跳到到內(nèi)內(nèi)循環(huán)程序循環(huán)程序53Delay: mov R7,#200Del1: mov R6,#123 nopDel2: djnz R6,Del2 djnz R7,Del1 sjmp $ ; (;1us;1us;1us;1us;1us;1us;2us;2us;2us;2usT =200T =200(1+1+123(1+1+1232+2)+12+2)+11us1us =50001us=50m
44、s =50001us=50ms12MHz晶振晶振54統(tǒng)計(jì)從統(tǒng)計(jì)從32H單元開始的單元開始的14個(gè)存儲(chǔ)單元有多少的數(shù)與個(gè)存儲(chǔ)單元有多少的數(shù)與30 h單元的數(shù)相同,統(tǒng)計(jì)結(jié)果存單元的數(shù)相同,統(tǒng)計(jì)結(jié)果存31 h單元。單元。 ORG 0030H MOV 31h,#00 MOV R2,#14;循環(huán)次數(shù)14 MOV R0,#32H; 地址指針初值LOOP: MOV A,R0 ; 取數(shù) CJNE A,30H,Next ; 比較是否相等 INC 31H; 統(tǒng)計(jì)單元加1 Next: INC R0;指針加1指向下一個(gè) DJNZ R2,LOOP ; 循環(huán)是否結(jié)束的判斷 sjmp $ END55例例6 6、設(shè)在、設(shè)在8
45、0318031內(nèi)部?jī)?nèi)部RAMRAM中存一無符號(hào)數(shù)的數(shù)組,其長(zhǎng)度為中存一無符號(hào)數(shù)的數(shù)組,其長(zhǎng)度為2020,起始地址是起始地址是30H30H,要求將它們從大到小排序,排序后仍存放在原,要求將它們從大到小排序,排序后仍存放在原區(qū)域中。區(qū)域中。 解:先舉四個(gè)數(shù)排序的例子解:先舉四個(gè)數(shù)排序的例子內(nèi)內(nèi)RAM RAM 第一次外循環(huán)第一次外循環(huán) 第二次外循環(huán)第二次外循環(huán) 第三次外循環(huán)第三次外循環(huán) 30H 0 0 0 3 0 3 0 630H 0 0 0 3 0 3 0 6 31H 0 3 0 2 0 6 0 3 31H 0 3 0 2 0 6 0 3 32H 0 2 0 6 0 2 0 2 32H 0 2 0
46、 6 0 2 0 2 33H 0 6 0 0 0 0 0 0 33H 0 6 0 0 0 0 0 0共共4 1 = 3 次外循環(huán)次外循環(huán)56這就是所謂的這就是所謂的“冒泡法冒泡法”。4 4個(gè)數(shù)排序最多經(jīng)過個(gè)數(shù)排序最多經(jīng)過 3 3 次外循環(huán)就可排出次外循環(huán)就可排出, ,每次外循環(huán)都包含每次外循環(huán)都包含3 3次內(nèi)循環(huán)。實(shí)際上大多情況不用次內(nèi)循環(huán)。實(shí)際上大多情況不用 3 3 次外循環(huán)就可排完。次外循環(huán)就可排完。對(duì)于對(duì)于2020個(gè)數(shù)排序也是如此,用不到個(gè)數(shù)排序也是如此,用不到1919次循環(huán),排序就結(jié)束。次循環(huán),排序就結(jié)束。為了提高排序速度,程序中為了提高排序速度,程序中可設(shè)一可設(shè)一交換標(biāo)志交換標(biāo)志位位
47、,如,如10H10H位,位,每次循環(huán)中:若有交換則每次循環(huán)中:若有交換則 SETB 10HSETB 10H 若無交換則若無交換則 CLR 10HCLR 10H 每次循環(huán)結(jié)束時(shí),測(cè)每次循環(huán)結(jié)束時(shí),測(cè)10H10H位,判斷排序是否結(jié)束位,判斷排序是否結(jié)束。 57 ORG 0030H First DATA 20H Secend DATA 21H MOV B,#20 MOV SP,#50HL0: MOV R0,#30H CLR F0 DEC B ; 長(zhǎng)度計(jì)數(shù)長(zhǎng)度計(jì)數(shù) push B LOOP: MOV A,R0 ; 內(nèi)循環(huán)的入口內(nèi)循環(huán)的入口 MOV First,A ; 暫存,為交換作準(zhǔn)備暫存,為交換作準(zhǔn)備
48、 INC R0 MOV Secend, R0 CJNE A, Secend,Next ; 若若 first second轉(zhuǎn)移轉(zhuǎn)移 Next: JNC NEXT1 ; firstsecond轉(zhuǎn)移,轉(zhuǎn)移,否否則,交換則,交換 MOV R0,First DEC R0 ; 使使R0退格指向小地址退格指向小地址first MOV R0,Second INC R0 ; 恢復(fù)恢復(fù)R0指向大地址指向大地址second SETB F0 ; 置交換標(biāo)志置交換標(biāo)志NEXT1: DJNZ B,LOOP ; 內(nèi)循環(huán)是否結(jié)束的判斷內(nèi)循環(huán)是否結(jié)束的判斷 POP B JB F0,L0 ; 判斷標(biāo)志位為判斷標(biāo)志位為1否?外循環(huán)
49、否?外循環(huán) sjmp $ ; 結(jié)束的判斷結(jié)束的判斷 END58p 子程序是構(gòu)成單片機(jī)應(yīng)用程序必不可少的部分,通過子程序是構(gòu)成單片機(jī)應(yīng)用程序必不可少的部分,通過ACALL和和LCALL兩條子程序調(diào)用指令,可以十分方便地兩條子程序調(diào)用指令,可以十分方便地用來調(diào)用任何地址處的子程序。用來調(diào)用任何地址處的子程序。p 子程序節(jié)省占用的存儲(chǔ)單元,使程序簡(jiǎn)短、清晰,善于靈子程序節(jié)省占用的存儲(chǔ)單元,使程序簡(jiǎn)短、清晰,善于靈活的使用子程序,是程序設(shè)計(jì)的重要技巧之一?;畹氖褂米映绦?,是程序設(shè)計(jì)的重要技巧之一。p 子程序必須以子程序必須以RET指令結(jié)尾指令結(jié)尾.p 在設(shè)計(jì)、調(diào)用子程序時(shí),有以下幾點(diǎn)應(yīng)在設(shè)計(jì)、調(diào)用子程
50、序時(shí),有以下幾點(diǎn)應(yīng)注意注意: 當(dāng)一段程序需多次應(yīng)用當(dāng)一段程序需多次應(yīng)用,或?yàn)槎嗳藨?yīng)用時(shí)或?yàn)槎嗳藨?yīng)用時(shí),這段程序編為這段程序編為子子程序。程序。59子程序名;子程序功能子程序名;子程序功能;入口參數(shù);出口參數(shù);入口參數(shù);出口參數(shù);占用資源;占用資源;現(xiàn)場(chǎng)的保護(hù)與恢復(fù)?,F(xiàn)場(chǎng)的保護(hù)與恢復(fù)。子程序名:子程序名: 現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)保護(hù) - - - 現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)恢復(fù) 子程序返回子程序返回retLcall 子程序名子程序名保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng): 如果在調(diào)用前,如果在調(diào)用前,主程序主程序已已經(jīng)經(jīng)使用了使用了某些存儲(chǔ)單元或寄存某些存儲(chǔ)單元或寄存器,器,在調(diào)用時(shí),在調(diào)用時(shí),這些寄存器和這些寄存器和存儲(chǔ)單元存儲(chǔ)單元又有其他
51、用途,又有其他用途,就應(yīng)就應(yīng)先把這些單元或寄存器中的內(nèi)先把這些單元或寄存器中的內(nèi)容壓入堆棧保護(hù),調(diào)用完后再容壓入堆棧保護(hù),調(diào)用完后再從堆棧中彈出以便加以恢復(fù)。從堆棧中彈出以便加以恢復(fù)。如果有較多的寄存器要保護(hù),如果有較多的寄存器要保護(hù),應(yīng)使主、子程序使用不同的寄應(yīng)使主、子程序使用不同的寄存器組。存器組。60子程序名;子程序功能;子程序名;子程序功能;入口參數(shù);出口參數(shù)入口參數(shù);出口參數(shù);現(xiàn)場(chǎng)的保護(hù)與恢復(fù);占用資源?,F(xiàn)場(chǎng)的保護(hù)與恢復(fù);占用資源。子程序名:子程序名:現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)保護(hù)-現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)恢復(fù)子程序返回子程序返回retLcall 子程序名子程序名入口參數(shù)入口參數(shù)和和出口參數(shù)出口參數(shù): 用之前
52、主程序要按子程序的要用之前主程序要按子程序的要求設(shè)置好地址單元或存儲(chǔ)器(稱為求設(shè)置好地址單元或存儲(chǔ)器(稱為入入口參數(shù)口參數(shù)),以便子程序從指定的地址),以便子程序從指定的地址單元或存儲(chǔ)器獲得輸入數(shù)據(jù);單元或存儲(chǔ)器獲得輸入數(shù)據(jù); 子程序經(jīng)運(yùn)算或處理后的結(jié)果子程序經(jīng)運(yùn)算或處理后的結(jié)果存放到指定的地址單元或寄存器(稱存放到指定的地址單元或寄存器(稱為為出口參數(shù)出口參數(shù)),主程序調(diào)用后從指定),主程序調(diào)用后從指定的地址單元或寄存器讀取運(yùn)算或處理的地址單元或寄存器讀取運(yùn)算或處理后的結(jié)果,只有這樣,才能完成子程后的結(jié)果,只有這樣,才能完成子程序和主程序間的數(shù)據(jù)的正確傳遞。序和主程序間的數(shù)據(jù)的正確傳遞。61子程序名;子程序功能;入口參數(shù);出口參數(shù);子程序名;子程序功能;入口參數(shù);出口參數(shù);現(xiàn)場(chǎng)的保護(hù)與恢復(fù);占用資源?,F(xiàn)場(chǎng)的保護(hù)與恢復(fù);占用資源。子程序嵌套子程序嵌套子程序名:子程序名:現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)保護(hù)-現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)恢復(fù)子程序返回子程序返回retLcall 子程序名子程序名子程序中可包括對(duì)另外子程序子程序中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年橡膠低溫脆性試驗(yàn)儀項(xiàng)目可行性研究報(bào)告
- 2024-2025工廠車間安全培訓(xùn)考試試題7A
- 熱線受理員培訓(xùn)
- 2025廠級(jí)安全培訓(xùn)考試試題7A
- 2025年拉架羅紋布項(xiàng)目可行性研究報(bào)告
- 2025年折疊資料架項(xiàng)目可行性研究報(bào)告
- 2024-2025管理人員安全培訓(xùn)考試試題7A
- 2024-2025班組安全培訓(xùn)考試試題及答案a卷
- 萬一突發(fā)狀況的護(hù)理應(yīng)急準(zhǔn)備試題及答案
- 2024-2025公司、項(xiàng)目部、各個(gè)班組三級(jí)安全培訓(xùn)考試試題(a卷)
- 廣東廣州市海珠區(qū)官洲街道辦事處政府雇員公開招聘5人(必考題)模擬卷含答案
- (完整word)2019注冊(cè)消防工程師繼續(xù)教育三科試習(xí)題及答案
- 結(jié)構(gòu)膠msdslord第一部分化學(xué)產(chǎn)品和公司名稱
- 低血糖昏迷搶救預(yù)案及流程
- 新教材教科版四年級(jí)下冊(cè)科學(xué)全冊(cè)課時(shí)練(同步練習(xí))(共24課)
- 從專業(yè)走向管理
- 2022年中國(guó)礦業(yè)權(quán)評(píng)估新準(zhǔn)則
- 抵押物清單(標(biāo)準(zhǔn)樣本)
- 《物聯(lián)網(wǎng)》課件第4章-物聯(lián)網(wǎng)通信技術(shù)
- 2010年個(gè)人所得稅稅率表
- JZLX輸電線路工程專業(yè)監(jiān)理實(shí)施細(xì)則(架線工程)
評(píng)論
0/150
提交評(píng)論