《單片機原理與應(yīng)用》-胡輝-電子教案-4917第4章_第1頁
《單片機原理與應(yīng)用》-胡輝-電子教案-4917第4章_第2頁
《單片機原理與應(yīng)用》-胡輝-電子教案-4917第4章_第3頁
《單片機原理與應(yīng)用》-胡輝-電子教案-4917第4章_第4頁
《單片機原理與應(yīng)用》-胡輝-電子教案-4917第4章_第5頁
已閱讀5頁,還剩132頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章程序設(shè)計雖然單片機的每—條指令能使計算機完成一種特定的操作。但要完成某一特定的任務(wù)還需要將這些指令按工作要求有序組合為一段完整的程序。程序?qū)嶋H上是一系列計算機指令的有序集合。我們把利用計算機的指令系統(tǒng)來合理地編寫出解決某個問題的程序的過程,稱之為程序設(shè)計。4.1簡單匯編語言程序設(shè)計

編制程序的步驟1.任務(wù)分析(硬件、軟件系統(tǒng)分析)2.確定算法和工作步驟;3.程序總體設(shè)計和流程圖繪制關(guān)于流程圖符號:開始、結(jié)束----圓角矩形工作任務(wù)----矩形判斷分支----菱形程序流向----程序連接----開始結(jié)束4.分配內(nèi)存,確定程序與數(shù)據(jù)區(qū)存放地址;5.編寫源程序;6.調(diào)試、修改,最終確定程序。方法技巧1.模塊化設(shè)計(按功能分:顯示、打印、輸入、發(fā)送等)2.盡量采用循環(huán)及子程序結(jié)構(gòu)(節(jié)省內(nèi)存)匯編語言的規(guī)范匯編語言源程序由以下兩種指令構(gòu)成匯編語句(指令語句)偽指令(指示性語句)匯編語句的格式:

標(biāo)號:

操作碼

操作數(shù) ;注釋數(shù)據(jù)表示形式:

二進制(B)、十六進制(H)、十進制(D或省略)、ASCII碼(以單引號標(biāo)識)3.偽指令:控制匯編用的特殊指令,這些指令不屬于指令系統(tǒng),不產(chǎn)生機器代碼。4.1.1分支程序分支程序可根據(jù)要求無條件或條件地改變程序執(zhí)行流向。編寫分支程序主要在于正確使用轉(zhuǎn)移指令。分支程序有:單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)、多分支結(jié)構(gòu)(散轉(zhuǎn))條件成立?下條指令程序段A單分支結(jié)構(gòu)YN條件成立?程序段AYN程序段A雙分支結(jié)構(gòu)分支程序分支程序可根據(jù)要求無條件或條件地改變程序執(zhí)行流向。編寫分支程序主要在于正確使用轉(zhuǎn)移指令。分支程序有:單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)、多分支結(jié)構(gòu)(散轉(zhuǎn))K=?程序段nn0程序段1多分支結(jié)構(gòu)程序段011.比較數(shù)的大小

入口條件:兩個帶符號數(shù)分別存在內(nèi)部RAM30H和31H單元中,試比較它們的大小,將較大的數(shù)存入32H單元中。X-Y為正:OV=0,則X>YOV=1,則X<YX-Y為負:OV=0,則X<YOV=1,則X>Y

ORG 0100H MOV A,30H ;取初值 CLR C SUBB A,31H ;X-Y JZ DZ1 ;X=Y?JCEBB JB OV,EB1 ;X-Y>0,OV=1,X<Y AJMP DZ1 ;X-Y>0,OV=0,X>YEBB:JB OV,DZ1 ;X-Y<0,OV=1,X>YEB1:MOV A,31H ;X<Y AJMP JS0DZ1:MOV A,30H ;X>YJS0:MOV 32H,A END例:設(shè)變量x以補碼形式存放在片內(nèi)RAM30H單元中,變量y與x的關(guān)系是:編程根據(jù)x的值求y值并放回原單元。2.函數(shù)運算

A=?y=x+5<0>0y=20Hy=x0取x即(30h)A開始存y即y30h結(jié)束

ORG0000HSTART:MOVA,30HJZNEXT;x=0,轉(zhuǎn)移ANLA,#80H;保留符號位JZED;x>0,轉(zhuǎn)移MOVA,#05H;x<0,不轉(zhuǎn)移ADDA,30HMOV30H,ASJMPEDNEXT:MOV30H,#20HED:SJMP$START:MOVDPTR,#TABMOVA,R7ADDA,R7;R7×2AMOVR3,A;暫存R3MOVCA,@A+DPTR;取高位地址XCHA,R3INCAMOVCA,@A+DPTR;取低位地址MOVDPL,AMOVDPH,R3;轉(zhuǎn)移地址送入DPTRCLRAJMP@A+DPTRTAB:DWP0

DWP1…DW

PN例:根據(jù)R7的內(nèi)容,轉(zhuǎn)至對應(yīng)的分支程序。設(shè)R7的內(nèi)容為0~N,對應(yīng)的處理程序地址分別為P0~P7P0高位P0低位TABP1高位P1低位TAB+2

4.3.3循環(huán)程序循環(huán)程序一般由:初始化部分循環(huán)體部分--處理部分、修改部分、控制部分結(jié)束部分其結(jié)構(gòu)一般有兩種:先進入處理部分,再控制循環(huán)至少執(zhí)行一次循環(huán)體先控制循環(huán),再進入處理部分循環(huán)體是否執(zhí)行,取決于判斷結(jié)果。開始設(shè)置循環(huán)初值循環(huán)處理循環(huán)修改結(jié)束處理結(jié)束循環(huán)結(jié)束?開始設(shè)置循環(huán)初值循環(huán)處理循環(huán)修改結(jié)束處理結(jié)束循環(huán)結(jié)束?NYYN循環(huán)控制的一般方法:循環(huán)次數(shù)已知利用循環(huán)次數(shù)控制循環(huán)次數(shù)未知利用關(guān)鍵字控制利用“邏輯尺”根據(jù)“邏輯尺”的內(nèi)容,進行控制。例:統(tǒng)計數(shù)據(jù)塊的長度

入口條件:內(nèi)部RAM30H開始的存儲區(qū)有若干個數(shù)據(jù),最后一個數(shù)據(jù)為字符FFH,結(jié)果存入40H單元。

ORG 0100HMAIN:MOVR1,#30H ;R1作為地址指針CLR A ;累加器A作為計數(shù)器LOOP:CJNE @R1,#0FFH,NEXT ;與數(shù)據(jù)FF比較,不等轉(zhuǎn)移SJMP JSH1 ;找到結(jié)束符號,結(jié)束循環(huán)NEXT:INC A ;計數(shù)器加1INC R1 ;指針加lSJMPL00P ;循環(huán)JSHl:INC A ;再加入l個字符MOV 40H,A ;存結(jié)果END

4.1.3延時程序

1.0.1s延時程序(晶振為12M)

ORG 0100H MOV R2,#200LOOP:MOV R3,#250 DJNZ R3,$ DJNZ R2,LOOP RET由于采用12M晶振,機器周期為1μs,DJNZ的指令周期為2,整個程序的執(zhí)行時間為250×200×2×1μs=100000μs=0.1s

2.1s延時程序(晶振為12M)ORG 0100HMOV R1,#10LOOP1:MOV R2,#200LOOP: MOV R3,#250 DJNZ R3,$ DJNZ R2,LOOP DJNZ R1,LOOP1 RET例:50ms延時子程序。設(shè)晶振頻率為12MHz,則機器周期為1us。DEL:MOVR7,#200;1MCDEL1:MOVR6,#123;1MCNOP;1MCDJNZR6,$;2MCDJNZR7,DEL1;2MCRET;2MC延時時間:t=1+200[(1+1+2*123)+2]+2≈50000us=50ms4.2MCS-51常用子程序

4.2.1代碼轉(zhuǎn)換類程序設(shè)計

4.2.2查表程序設(shè)計

4.2.3定點數(shù)運算子程序

4.2.4浮點數(shù)運算子程序

子程序問題子程序設(shè)計時注意事項:1.給子程序賦一個名字。實際為入口地址代號。2.要能正確傳遞參數(shù): 入口條件:子程序中要處理的數(shù)據(jù)如何給予。 出口條件:子程序處理結(jié)果如何存放。(寄存器、存儲器、堆棧方式)3.保護與恢復(fù)現(xiàn)場:

保護現(xiàn)場:壓棧指令PUSH

恢復(fù)現(xiàn)場:彈出指令POP4.子程序可以嵌套

4.2.1代碼轉(zhuǎn)換類程序設(shè)計

1.單字節(jié)十六進制數(shù)轉(zhuǎn)換成雙字節(jié)ASCII碼

表4-1十六進制數(shù)與ASCII碼之間的關(guān)系十六進制數(shù)十六進制數(shù)十六進制數(shù)十六進制數(shù)030H434H838HC43H131H535H939HD44H232H636HA41HE45H333H737HB42HF46H入口條件:待轉(zhuǎn)換的單字節(jié)十六進制數(shù)在寄存器R2中。出口:高四位的ASCII碼在A中,低四位的ASCII碼在B中。

ORG 0100H MOV A,R2 MOV B,A ;暫存待轉(zhuǎn)換的單字節(jié)十六進制數(shù) LCALL MS1 ;轉(zhuǎn)換低四位 XCH A,B ;存放低四位的ASCII碼 SWAP A ;準(zhǔn)備轉(zhuǎn)換高四位 LCALL MS1 ;轉(zhuǎn)換高四位 SJMP $MS1: ANL A,#0FH ;將累加器的低四位轉(zhuǎn)換成ASCII碼 ADD A,#90H DA A ADDC A,#40H DA A RET將多位十六進制數(shù)轉(zhuǎn)換成ASCII碼,設(shè)R0指向十六進制數(shù)低位,R2存放字節(jié)數(shù),轉(zhuǎn)換后R1指向ASCII碼高位。HTASC:MOVA,@R0;取十六進制數(shù)ANLA,#0FH;取低四位ADDA,#15;偏移修正MOVCA,@A+PC;查表得ASCII碼MOV@R1,A;保存INCR1MOVA,@R0;取十六進制數(shù)高四位SWAPA;ANLA,#0F0HADDA,#06H;偏移修正MOVCA,@A+PC;查表MOV@R1,A;保存INCR0;指向下一單元INCR1DJNZR2,HTASCRETASCTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46H2.ASCII碼轉(zhuǎn)換成十六進制數(shù)入口條件:待轉(zhuǎn)換的ASCII碼在R2中。出口:轉(zhuǎn)換后的十六進制數(shù)在R3中。 ORG 0100H MOV A,R2SUBBA,#30HCLR CJNB ACC.4,M1SUBBA,#7M1: MOVR3,ASJMP $ END3.十六進制整數(shù)轉(zhuǎn)換成單字節(jié)BCD碼整數(shù)

入口條件:待轉(zhuǎn)換的單字節(jié)十六進制整數(shù)在R2中。出口:轉(zhuǎn)換后的BCD碼整數(shù)(十位和個位)在R5中,百位在R3中。

MOV A,R2HBCD: MOV B,#100;分離出百位,存放在R3中 DIV AB MOV R3,A MOV A,#10 ;余數(shù)繼續(xù)分離十位和個位 XCH A,B DIV AB SWAP A ORL A,B ;將十位和個位拼裝成BCD碼 MOV R5,A SJMP $ END4.雙字節(jié)十六進制整數(shù)轉(zhuǎn)換成雙字節(jié)BCD碼整數(shù)

入口條件:待轉(zhuǎn)換的雙字節(jié)十六進制整數(shù)在R6、R7中。

出口:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R3、R4、R5中。

ORG 0100H

HB2: CLR A ;BCD碼初始化

MOV R3,A

MOV R4,A

MOV R5,A

MOV R2,#10H ;轉(zhuǎn)換雙字節(jié)十六進制整數(shù)

HB3:MOV A,R7 ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中

RLC A

MOV R7,A

MOV A,R6

RLC A

MOV R6,A

MOV A,R5 ;BCD碼帶進位自身相加,相當(dāng)于乘2

ADDC A,R5

DA A ;十進制調(diào)整MOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,AMOV A,R3ADDC A,R3MOV R3,A ;雙字節(jié)十六進制數(shù)的萬位數(shù)不超過6,不用調(diào)整DJNZ R2,HB3 ;判斷16位處理完?SJMP $END5.雙字節(jié)BCD碼整數(shù)轉(zhuǎn)換成雙字節(jié)十六進制整數(shù)

入口條件:待轉(zhuǎn)換的雙字節(jié)BCD碼整數(shù)在R2、R3中。出口:轉(zhuǎn)換后的雙字節(jié)十六進制整數(shù)仍在R2、R3中。

ORG 0100HBH2: MOV A,R3;將低字節(jié)轉(zhuǎn)換成十六進制LCALLBCD1MOV R3,AMOV A,R2;將高字節(jié)轉(zhuǎn)換成十六進制LCALLBCD1MOV B,#100;擴大一百倍MUL ABADD A,R3;和低字節(jié)按十六進制相加MOV R3,ACLR A

ADDC A,BMOV R2,ASJMP $BCD1:MOV B,#10H;分離十位和個位DIV ABMOV R4,B ;暫存?zhèn)€位MOV B,#10;將十位轉(zhuǎn)換成十六進制MUL ABADD A,R4 ;十六進制加上個位RET END

4.2.2查表程序設(shè)計

MOVC A,@A+DPTRMOVC A,@A+PC1.查表求ASCII碼入口條件:R0低四位有一個十六進制數(shù)(0~F)。出口:將查表找出的相應(yīng)ASCII碼并送回R0中。

ORG 0100HMOV A,R0 ANL A,#0FH ;屏蔽高4位ADD A,#03H ;查表指令PC值與表格PC值相差3字節(jié)MOVC A,@A+PC ;查表MOV R0,A ;存結(jié)果SJMP $ASCTAB:DB '0','1','2','3','4','5','6','7'DB '8','9','A','B','C','D','E','F'4.2.3定點數(shù)運算子程序

1.多字節(jié)BCD碼加法

入口條件:字節(jié)數(shù)在R7中,被加數(shù)在30H起始單元中,加數(shù)在40H起始單元中。出口:和在30H起始單元中,最高位進位在CY中。

ORG 0100H MOV R7,#03H MOV R0,#30H MOV R1,#40H MOVA,R7;取字節(jié)數(shù)至R2中MOV R2,A ADD A,R0 ;初始化數(shù)據(jù)指針

MOV R0,A MOV A,R2 ADD A,R1 MOV R1,A CLR CBB1: DEC R0 ;調(diào)整數(shù)據(jù)指針 DEC R1 MOVA,@R0

ADDCA,@R1 ;按字節(jié)相加 DA A ;十進制調(diào)整 MOV @R0,A ;和存回[R0]中 DJNZ R2,BB1 ;處理完所有字節(jié) END2.多字節(jié)BCD碼減法入口條件:字節(jié)數(shù)在R7中,被減數(shù)在[R0]中,減數(shù)在[R1]中。出口:差在[R0]中,最高位借位在CY中。ORG0100HBCDB:LCALLMN1 ;減數(shù)[R1]十進制取補LCALLBCDA ;按多字節(jié)BCD碼加法處理CPLC ;將補碼加法的進位標(biāo)志轉(zhuǎn)換成借位標(biāo)志MOVF0,CLCALLMN1 ;恢復(fù)減數(shù)[R1]的原始值MOVC,F(xiàn)0 ;恢復(fù)借位標(biāo)志RETMN1:MOV A,R0;[R1]十進制取補子程序入口XCH A,R1 ;交換指針XCH A,R0LCALL NEG ;通過[R0]實現(xiàn)[R1]取補MOV A,R0XCH A,R1 ;換回指針XCH A,R0RETBCDA:MOV A,R7;取字節(jié)數(shù)至R2中MOV R2,AADD A,R0 ;初始化數(shù)據(jù)指針MOV R0,AMOV A,R2

ADD A,R1MOV R1,ACLR CBCD1:DEC R0 ;調(diào)整數(shù)據(jù)指針DEC R1MOV A,@R0ADDC A,@R1 ;按字節(jié)相加DA A ;十進制調(diào)整MOV @R0,A ;和存回[R0]中DJNZ R2,BCD1 ;處理完所有字節(jié)RETNEG:MOV A,R7 ;BCD碼取補子程序DEC AMOV R2,AMOV A,R0MOV R3,ANEG0: CLR CMOV A,#99HSUBB A,@R0 ;按字節(jié)十進制取補MOV @R0,A ;存回[R0]中INC R0 ;調(diào)整數(shù)據(jù)指針DJNZ R2,NEG0 ;處理完(R2)字節(jié)MOV A,#9AH ;最低字節(jié)單獨取補SUBB A,@R0MOV @R0,AMOV A,R3 ;恢復(fù)指針MOV R0,ARET

4.雙字節(jié)二進制無符號數(shù)乘法子程序入口條件:被乘數(shù)在R2、R3中,乘數(shù)在R6、R7中。出口:乘積在R2、R3、R4、R5中。 ORG 0100HMULD:MOV A,R3 ;計算R3乘R7MOV B,R7MUL ABMOV R4,B ;暫存部分積MOV R5,AMOV A,R3 ;計算R3乘R6MOV B,R6MUL ABADD A,R4 ;累加部分積MOV R4,ACLR A

ADDC A,BMOV R3,AMOV A,R2 ;計算R2乘R7MOV B,R7MUL ABADD A,R4 ;累加部分積MOV R4,AMOV A,R3ADDC A,BMOV R3,ACLR ARLC AXCH A,R2 ;計算R2乘R6MOV B,R6MUL ABADD A,R3 ;累加部分積MOV R3,AMOV A,R2ADDC A,BMOV R2,ARET6.雙字節(jié)二進制無符號數(shù)除法子程序入口條件:被除數(shù)在R2、R3、R4、R5中,除數(shù)在R6、R7中。出口:OV=0時,雙字節(jié)商在R2、R3中,OV=1時溢出。 ORG 0100HDIVD:CLR C ;比較被除數(shù)和除數(shù)MOV A,R3SUBB A,R7MOV A,R2SUBB A,R6JC DVD1SETB OV ;溢出RETDVD1:MOV B,#10H ;計算雙字節(jié)商DVD2:CLR C ;部分商和余數(shù)同時左移一位MOV A,R5RLC AMOV R5,AMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AXCH A,R2RLC AXCH A,R2MOV F0,C ;保存溢出位CLR CSUBB A,R7 ;計算(R2R3-R6R7)MOV R1,AMOV A,R2SUBB A,R6ANL C,/F0 ;結(jié)果判斷JC DVD3MOV R2,A ;夠減,存放新的余數(shù)MOV A,R1MOV R3,AINC R5 ;商的低位置一DVD3:DJNZ B,DVD2 ;計算完十六位商(R4R5)MOV A,R4 ;將商移到R2R3中MOV R2,AMOV A,R5MOV R3,ACLR OV ;設(shè)立成功標(biāo)志RET4.2.4浮點數(shù)運算子程序1.浮點數(shù)的表示(1)二進制浮點操作數(shù)

用三個字節(jié)表示,第一個字節(jié)的最高位為數(shù)符,其余七位為階碼(補碼形式),第二字節(jié)為尾數(shù)的高字節(jié),第三字節(jié)為尾數(shù)的低字節(jié),尾數(shù)用雙字節(jié)純小數(shù)(原碼)來表示。當(dāng)尾數(shù)的最高位為1時,便稱為規(guī)格化浮點數(shù),簡稱操作數(shù)(2)十進制浮點操作數(shù)用三個字節(jié)表示,第一個字節(jié)的最高位為數(shù)符,用來表示正負數(shù)(0表示正數(shù),1表示負數(shù))其余七位為階碼(二進制補碼形式),第二字節(jié)為尾數(shù)的高字節(jié),第三字節(jié)為尾數(shù)的低字節(jié),尾數(shù)用雙字節(jié)BCD碼純小數(shù)(原碼)來表示。當(dāng)十進制數(shù)的絕對值大于1時,階碼就等于整數(shù)部分的位數(shù)。

例如:156.6的階碼是03H,-156.6的階碼是83H;當(dāng)十進制數(shù)的絕對值小于1時,階碼就等于80H減去小數(shù)點后面零的個數(shù)。例如

:0.00362的階碼是7EH,-0.00362的階碼是0FEH。例如:有一個十進制浮點操作數(shù)存放在30H、31H、32H中,數(shù)值是-0.07315,即-0.7315乘以10的-1次方,則階碼為7FH,若加上數(shù)符(30H)=0FFH,31H=73H,(32H)=15H。

(3)運算精度單次定點運算精度為結(jié)果最低位的當(dāng)量值;單次二進制浮點算術(shù)運算的精度優(yōu)于十萬分之三;單次二進制浮點超越函數(shù)運算的精度優(yōu)于萬分之一;BCD碼浮點數(shù)本身的精度比較低(萬分之一到千分之一),不宜作為運算的操作數(shù),僅用于輸入或輸出時的數(shù)制轉(zhuǎn)換。不管那種數(shù)據(jù)格式,隨著連續(xù)運算的次數(shù)增加,精度都會下降。

2.浮點數(shù)加減法子程序入口條件:被加數(shù)在[R0]中,加數(shù)在[R1]中。被減數(shù)在[R0]中,減數(shù)在[R1]中。當(dāng)F0=0時,程序作浮點數(shù)加法運算;當(dāng)F0=1時,程序作浮點數(shù)減法運算。出口:OV=0時,和(差)仍在[R0]中,OV=1時,溢出。ORG 0100HFADD:CLR F0 ;設(shè)立加法標(biāo)志 SJMP AS ;計算代數(shù)和FSUB:SETB F0 ;設(shè)立減法標(biāo)志AS:LCALL MVR1;計算代數(shù)和。先將[R1]傳送到第二工作區(qū) MOV C,F(xiàn)0;用加減標(biāo)志來校正第二操作數(shù)的有效符號 RRC A XRL A,@R1MOV C,ACC.7

ASN: MOV 1EH,C;將第二操作數(shù)的有效符號存入位1EH中

XRL A,@R0 ;與第一操作數(shù)的符號比較

RLC A

MOV F0,C ;保存比較結(jié)果

LCALL MVR0 ;將[R0]傳送到第一工作區(qū)中

LCALL AS1 ;在工作寄存器中完成代數(shù)運算

MOV0: INC R0 ;將結(jié)果傳回到[R0]中的子程序入口

INC R0

MOV A,R4 ;傳回尾數(shù)的低字節(jié)

MOV @R0,A

DEC R0

MOV A,R3;傳回尾數(shù)的高字節(jié)

MOV @R0,A

DEC R0

MOV A,R2 ;取結(jié)果的階碼

MOV C,1FH ;取結(jié)果的數(shù)符

MOV ACC.7,C ;拼入階碼中

MOV @R0,A

CLR ACC.7 ;不考慮數(shù)符

CLR OV ;清除溢出標(biāo)志

CJNE A,#3FH,MV01;階碼是否上溢?

SETB OV ;設(shè)立溢出標(biāo)志

MV01:MOV A,@R0;取出帶數(shù)符的階碼

RET

MVR0:MOV A,@R0;將[R0]傳送到第一工作區(qū)中的子程序

MOV C,ACC.7 ;將數(shù)符保存在位1FH中

MOV 1FH,C

MOV C,ACC.6 ;將階碼擴充為8bit補碼

MOV ACC.7,C

MOV R2,A ;存放在R2中

INC R0

MOV A,@R0 ;將尾數(shù)高字節(jié)存放在R3中

MOV R3,A

INC R0

MOV A,@R0 ;將尾數(shù)低字節(jié)存放在R4中

MOV R4,A

DEC R0 ;恢復(fù)數(shù)據(jù)指針

DEC R0

RET

MVR1: MOV A,@R1;將[R1]傳送到第二工作區(qū)中的子程序

MOV C,ACC.7 ;將數(shù)符保存在位1EH中

MOV 1EH,C

MOV C,ACC.6 ;將階碼擴充為8bit補碼

MOV ACC.7,C

MOV R5,A;存放在R5中

INC R1

MOV A,@R1;將尾數(shù)高字節(jié)存放在R6中

MOV R6,A

INC R1

MOV A,@R1;將尾數(shù)低字節(jié)存放在R7中

MOV R7,A

DEC R1 ;恢復(fù)數(shù)據(jù)指針

DEC R1

RET

AS1: MOV A,R6;讀取第二操作數(shù)尾數(shù)高字節(jié)

ORL A,R7

JZ AS2 ;第二操作數(shù)為零,不必運算

MOV A,R3;讀取第一操作數(shù)尾數(shù)高字節(jié)

ORL A,R4

JNZ EQ

MOV A,R6;第一操作數(shù)為零,結(jié)果以第二操作數(shù)為準(zhǔn)

MOV R3,A MOV A,R7 MOVR4,A MOV A,R5 MOV R2,A MOV C,1EH MOV 1FH,CAS2: RET

EQ: MOV A,R2;對階,比較兩個操作數(shù)的階碼

XRL A,R5 JZ AS4 ;階碼相同,對階結(jié)束

JB ACC.7,EQ3 ;階符互異

MOV A,R2 ;階符相同,比較大小

CLR C

SUBB A,R5 JC EQ4

EQ2: CLR C ;第二操作數(shù)右規(guī)一次

MOV A,R6 ;尾數(shù)縮小一半

RRC A MOV R6,A MOV A,R7 RRC A

MOV R7,A INC R5 ;階碼加一

ORL A,R6 ;尾數(shù)為零否?

JNZ EQ ;尾數(shù)不為零,繼續(xù)對階

MOV A,R2 ;尾數(shù)為零,提前結(jié)束對階

MOV R5,A SJMP AS4

EQ3: MOV A,R2 ;判斷第一操作數(shù)階符

JNB ACC.7,EQ2;如為正,右規(guī)第二操作數(shù)

EQ4: CLR C

LCALL RR1 ;第一操作數(shù)右規(guī)一次

ORL A,R3 ;尾數(shù)為零否?

JNZ EQ ;不為零,繼續(xù)對階

MOV A,R5 ;尾數(shù)為零,提前結(jié)束對階

MOV R2,A

AS4: JB F0,AS5 ;尾數(shù)加減判斷

MOV A,R4 ;尾數(shù)相加

ADD A,R7

MOV R4,A

MOV A,R3

ADDC A,R6

MOV R3,A

JNC AS2

LJMP RR1 ;有進位,右規(guī)一次

AS5: CLR C ;比較絕對值大小

MOV A,R4

SUBB A,R7

MOV B,A

MOV A,R3

SUBB A,R6

JC AS6

MOV R4,B ;第一尾數(shù)減第二尾數(shù)

MOV R3,A

LJMP RLN ;結(jié)果規(guī)格化

AS6: CPL 1FH ;結(jié)果的符號與第一操作數(shù)相反

CLR C;結(jié)果的絕對值為第二尾數(shù)減第一尾數(shù)

MOV A,R7

SUBB A,R4

MOV R4,A

MOV A,R6

SUBB A,R3

MOV R3,A

RLN: MOV A,R3 ;浮點數(shù)規(guī)格化

ORL A,R4 ;尾數(shù)為零否?

JNZ RLN1

MOV R2,#0C1H ;階碼取最小值

RET

RLN1: MOV A,R3

JB ACC.7,RLN2 ;尾數(shù)最高位為一否?

CLR C ;不為一,左規(guī)一次

LCALL RL1

SJMP RLN ;繼續(xù)判斷

RLN2: CLR OV ;規(guī)格化結(jié)束

RET

RL1: MOV A,R4 ;第一操作數(shù)左規(guī)一次

RLC A ;尾數(shù)擴大一倍

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

DEC R2 ;階碼減一

CJNE R2,#0C0H,RL1E;階碼下溢否?

CLR A

MOV R3,A ;階碼下溢,操作數(shù)以零計

MOV R4,A

MOV R2,#0C1H

RL1E: CLR OV

RET

RR1: MOV A,R3 ;第一操作數(shù)右規(guī)一次

RRC A ;尾數(shù)縮小一半

MOV R3,A

MOV A,R4

RRC A

MOV R4,A

INC R2 ;階碼加一

CLR OV ;清溢出標(biāo)志

CJNE R2,#40H,RR1E;階碼上溢否?

MOV R2,#3FH ;階碼溢出

SETB OV

RR1E: RET謝謝觀看/歡迎下載BYFAITHIMEANAVISIONOFGOODONECHERISHESANDTHEENTHUSIASMTHATPUSHESONETOSEEKITSFULFILLMENTREGARDLESSOFOBSTACLES.BYFAITHIBYFAITH一本萬利工程1、背景驅(qū)動2、盈利策略3、選菜試菜4、價值創(chuàng)造5、完美呈現(xiàn)6、成功面試7、持續(xù)改造(一)、一本萬利工程的背景驅(qū)動

1、什么是一本萬利

2、餐飲時代的變遷菜單經(jīng)驗的指導(dǎo)方針運營市場定位的體現(xiàn)經(jīng)營水平的體現(xiàn)體現(xiàn)餐廳的特色與水準(zhǔn)溝通的工具餐廳對顧客的承諾菜單承諾的六大表現(xiàn)1、名字的承諾2、質(zhì)量的承諾3、價格的承諾4、規(guī)格標(biāo)準(zhǔn)的承諾5、外文翻譯的準(zhǔn)確6、保證供應(yīng)的承諾

1、顧客滿意度餐廳價值、價格、合理感、愉快感、安心感、美味感、便利感、滿足感、有價值感、喜悅感、特別感2-2、初期投資餐廳面積、保證金、設(shè)備投資、店鋪裝潢、器具用品投資、制服選定、菜單制作2-1、開業(yè)準(zhǔn)備廚具、供應(yīng)商選定、設(shè)計、用品選定、餐廳配置、員工訓(xùn)練、餐廳氣氛、促銷方式3、經(jīng)營數(shù)據(jù)營業(yè)額、客流量、成本率、人均消費、顧客回頭率、出品速度、人事費用菜單內(nèi)容決定決定相關(guān)相關(guān)決定決定決定決定以菜單為導(dǎo)向的硬件投資

1、餐廳的裝修風(fēng)格2、硬件設(shè)施服務(wù)操作3、餐廳動線4、餐具與家俬5、廚房布局6、廚房設(shè)備菜單設(shè)計正果1、能誘導(dǎo)顧客購買你想讓他買的餐點2、能迅速傳達餐廳要表達的東西3、雙贏:顧客喜歡、餐廳好賣餐廳時代的變遷食物時代硬體時代軟體時代心體時代食物食品饑食飽食品質(zhì)挑食品味品食品德懼食體驗人們正在追尋更多的感受,更多的意義更多的體驗,更多的幸福(二)盈利策略1、組建工程團隊2、確定核心價值3、確定盈利目標(biāo)4、確定客單價5、設(shè)計盈利策略6、確定核心產(chǎn)品誰來設(shè)計菜單?產(chǎn)品=做得出來的物品商品=賣得出去的物品商家=產(chǎn)品具備商品附加值物(什么產(chǎn)品)+事(滿足顧客何種需求)從物到事從食物到餐飲從吃什么到為什么吃產(chǎn)品本身決定一本,產(chǎn)品附加值決定萬利從生理到心理從物質(zhì)到精神從概念到五覺體驗創(chuàng)造產(chǎn)品的五覺附加值體驗何來

一家企業(yè)以服務(wù)為舞臺以商品為道具,讓消費者完全投入的時候,體驗就出現(xiàn)了PART01物=你的企業(yè)賣什么產(chǎn)品+事=能滿足顧客何種需求?確定核心價值理念核心價值理念1、賣什么樣的菜2、賣什么樣的氛圍?3、如何接待顧客?賣給誰?賣什么事?賣什么價?企業(yè)目標(biāo)的設(shè)定1、理論導(dǎo)向的目標(biāo)設(shè)定2、預(yù)算3、制定利潤目標(biāo)費用營業(yè)額虧損區(qū)利潤區(qū)臨界點變動費用總費用營業(yè)額曲線費用線X型損益圖利潤導(dǎo)向的目標(biāo)設(shè)定確定目標(biāo)設(shè)定營業(yè)收入=固定成本+目標(biāo)利潤1-變動成本率-營業(yè)稅率例:A餐廳每月固定成本40萬,變動成本50%,營業(yè)稅率5.5%,目標(biāo)利率每月8萬,問A餐廳的月營業(yè)收入:月營收入=(40+8)÷(1-50%-5.5%)=48÷0.445=108萬測算損益平衡點保本線=固定成本1-變動成本率-營業(yè)稅率例:A餐廳保本線=40÷(1-50%-5.5%)

=40÷0.445

=90萬定價的三重意義2、向競爭對手發(fā)出的信息和信號1、是利潤最大化和最重要的決定因素3、價格本事是價值的體現(xiàn)定價由此開始1、評估產(chǎn)品、服務(wù)的質(zhì)量2、尋求顧客價值與平衡點3、以價值定義市場確定客單價盈利占比策略

占比策略內(nèi)部策略銷售占比占比策略內(nèi)部策略10%40%10%20%20%(三)、選菜試菜1、ABC產(chǎn)品分析2、產(chǎn)品的確定(食材、口味、烹調(diào)、餐飲)3、成本的確定ABC分析策略毛利率營業(yè)額CBACABBACCCAA營業(yè)額C毛利A優(yōu)化、提升增加銷售雙A雙贏ABC顧客商品漲價保留虧本商品刪營業(yè)額A毛利C顧客超額、成本過高有意義的保留無意義的刪除雙C雙輸菜單內(nèi)容選擇的標(biāo)準(zhǔn)因素成本設(shè)備廚師技術(shù)操作空間菜系風(fēng)格吻合度品質(zhì)可控度原料供應(yīng)顧客喜好菜單協(xié)議度(銷售目標(biāo)、顏色、口味、造型、營養(yǎng)等)產(chǎn)品類別確定的四個方面1、按食材確定比例2、按口味確定比例3、按烹飪確定比例4、按餐飲確定比例

(無酒精飲品、含酒精飲品比例)框架依據(jù)操作依據(jù)目標(biāo)依據(jù)成本依據(jù)試口味成本操作第一次試菜的內(nèi)容精確的成本核算—五個關(guān)鍵詞1、凈料率(一料一控、一料多檔)2、調(diào)味料成本(單件產(chǎn)品、批量產(chǎn)品)3、燃料成本4、統(tǒng)一計量單位5、標(biāo)準(zhǔn)食譜成本卡試口味餐具造型色彩第二次試菜的內(nèi)容四料構(gòu)成表1、符合思想審定2、符合目標(biāo)審定3、符合定位審定4、符合框架審定四平構(gòu)成表(四)、創(chuàng)造價值1、定價策略的確定2、提升雙A核心產(chǎn)品的附加值3、

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論