3.2.1 硬件電路
硬件電路采用實(shí)驗(yàn)開發(fā)板上的電路,如圖3.4所示。

圖3.4 單片機(jī)做加、減、乘、除運(yùn)算的電路圖
工作原理
利用P0口、P2口外接的撥動(dòng)開關(guān)設(shè)制運(yùn)算的數(shù)據(jù),利用單片機(jī)的算術(shù)運(yùn)算指令進(jìn)行加、減、乘、除運(yùn)算,并將結(jié)果送P1口發(fā)光二極管顯示。
3.2.2 程序設(shè)計(jì)
1. 加法運(yùn)算程序
ORG 0000H
MOV A,P0
MOV R0,P2
ADD A,R0
MOV P1,A
SJMP $
END
2. 減法運(yùn)算程序
ORG 0000H
MOV A,P0
MOV R0,P2
SUBB A,R0
MOV P1,A
SJMP $
END
3. 乘法運(yùn)算程序
ORG 0000H
MOV A,P0
MOV B,P2
MUL AB
MOV P1,A
SJMP $
END
4. 除法運(yùn)算程序
ORG 0000H
MOV A,P0
MOV B,P2
DIV AB
MOV P1,A
SJMP $
END
3.2.3 源程序的編輯、編譯、下載
打開“偉福”模擬仿真軟件進(jìn)行程序的編輯、編譯。
打開“ISP下載軟件”將目標(biāo)文件下載到ISP-4實(shí)驗(yàn)開發(fā)板上的AT89S51單片機(jī)芯片,觀察程序運(yùn)行結(jié)果。
3.2.4 相關(guān)知識(shí)
前面的任務(wù)里,在加、減、乘、除的過程中,只要改變P0、P2口數(shù)據(jù)發(fā)光二極管的亮滅就發(fā)生變化,下面我們來分析任務(wù)實(shí)現(xiàn)的過程。
1. 單片機(jī)是怎樣做加、減、乘、除運(yùn)算的?
在單片機(jī)CPU內(nèi)部集成的算術(shù)運(yùn)算部件(主要有加法器和乘法器、除法器),可以完成加、減、乘、除運(yùn)算,單片機(jī)的算術(shù)運(yùn)算指令經(jīng)過指令譯碼器譯碼后產(chǎn)生的控制信號(hào)控制算術(shù)運(yùn)算部件工作產(chǎn)生運(yùn)算結(jié)果。
2. MCS-51單片機(jī)有哪些算術(shù)運(yùn)算指令?
MCS-51單片機(jī)算術(shù)運(yùn)算指令共有24條,算術(shù)運(yùn)算主要是執(zhí)行加、減、乘、除法四則運(yùn)算。另外MCS-51指令系統(tǒng)中有相當(dāng)一部分是進(jìn)行加、減1操作,BCD碼的運(yùn)算和調(diào)整,我們都?xì)w類為運(yùn)算指令。雖然MCS-51單片機(jī)的算術(shù)邏輯單元ALU僅能對8位無符號(hào)整數(shù)進(jìn)行運(yùn)算,但利用進(jìn)位標(biāo)志C,則可進(jìn)行多字節(jié)無符號(hào)整數(shù)的運(yùn)算。同時(shí)利用溢出標(biāo)志,還可以對帶符號(hào)數(shù)進(jìn)行補(bǔ)碼運(yùn)算。需要指出的是,除加、減1指令外,這類指令大多數(shù)都會(huì)對PSW(程序狀態(tài)字)有影響。這在使用中應(yīng)特別注意。
(1) 不帶進(jìn)位的加法指令(4條)
這4條指令的作用是把立即數(shù),直接地址、工作寄存器及間接地址內(nèi)容與累加器A的內(nèi)容相加,運(yùn)算結(jié)果存在A中。
ADD A,#data ;(A)+#data→(A) 累加器A中的內(nèi)容與立即數(shù)#data相加,結(jié)果存在A中
ADD A,data ;(A)+(data)→(A) 累加器A中的內(nèi)容與直接地址單元中的內(nèi)容相加,結(jié)果存在A中
ADD A,Rn ;(A)+(Rn)→(A) 累加器A中的內(nèi)容與工作寄存器Rn中的內(nèi)容相加,結(jié)果存在A中
ADD A,@Ri ;(A)+((Ri))→(A) 累加器A中的內(nèi)容與工作寄存器Ri所指向地址單元中的內(nèi)容相加,結(jié)果存在A中
如任務(wù)中“加法程序”里 MOV A,P0
MOV R0,P2
ADD A,R0
就是將P0口與P2口的內(nèi)容相加。
(2) 帶進(jìn)位的加法指令(4條)
這4條指令除與[1]功能相同外,在進(jìn)行加法運(yùn)算時(shí)還需考慮進(jìn)位問題。
ADDC A,data ;(A)+(data)+(C)→(A) 累加器A中的內(nèi)容與直接地址單元的內(nèi)容連同進(jìn)位位相加,結(jié)果存在A中
ADDC A,#data ;(A)+#data +(C)→(A) 累加器A中的內(nèi)容與立即數(shù)連同進(jìn)位位相加,結(jié)果存在A中
ADDC A,Rn ;(A)+Rn+(C)→(A) 累加器A中的內(nèi)容與工作寄存器Rn中的內(nèi)容、連同進(jìn)位位相加,結(jié)果存在A中
ADDC A,@Ri ;(A)+((Ri))+(C)→(A) 累加器A中的內(nèi)容與工作寄存器Ri指向地址單元中的內(nèi)容、連同進(jìn)位位相加,結(jié)果存在A中
(3) 帶借位減法指令(4條)
這組指令包含立即數(shù)、直接地址、間接地址及工作寄存器與累加器A連同借位位C內(nèi)容相減,結(jié)果送回累加器A中。
這里我們對借位位C的狀態(tài)作出說明,在進(jìn)行減法運(yùn)算中,CY=1表示有借位,CY=0則無借位。OV=1聲明帶符號(hào)數(shù)相減時(shí),從一個(gè)正數(shù)減去一個(gè)負(fù)數(shù)結(jié)果為負(fù)數(shù),或者從一個(gè)負(fù)數(shù)中減去一個(gè)正數(shù)結(jié)果為正數(shù)的錯(cuò)誤情況。在進(jìn)行減法運(yùn)算前,如果不知道借位標(biāo)志位C的狀態(tài),則應(yīng)先對CY進(jìn)行清零操作。
SUBB A,data ;(A)-(data)- (C)→(A) 累加器A中的內(nèi)容與直接地址單元中的內(nèi)容、連同借位位相減,結(jié)果存在A中。
SUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的內(nèi)容與立即數(shù)、連同借位位相減,結(jié)果存在A中。
SUBB A,Rn ;(A)-(Rn)-(C)→(A) 累加器A中的內(nèi)容與工作寄存器中的內(nèi)容、連同借位位相減,結(jié)果存在A中
SUBB A,@Ri ;(A)-((Ri))-(C)→(A) 累加器A中的內(nèi)容與工作寄存器Ri指向的地址單元中的內(nèi)容、連同借位位相減,結(jié)果存在A中。
如任務(wù)中“減法程序”里 MOV A,P0
MOV R0,P2
SUBB A,R0
就是將P0口與P2口的內(nèi)容相減。
(4) 乘法指令(1條)
這個(gè)指令的作用是把累加器A和寄存器B中的8位無符號(hào)數(shù)相乘,所得到的是16位乘積,這個(gè)結(jié)果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,說明乘積大于FFH,否則OV=0,但進(jìn)位標(biāo)志位CY總是等于0。
MUL AB ;(A)×(B)→(A)和(B) 累加器A中的內(nèi)容與寄存器B中的內(nèi)容相乘,結(jié)果存在A、B中。
如任務(wù)中“加法程序”里 MOV A,P0
MOV B,P2
MUL AB
就是將P0口與P2口的內(nèi)容相乘,低字節(jié)存于A,高字節(jié)存于B。
(5) 除法指令(1條)
這個(gè)指令的作用是把累加器A的8位無符號(hào)整數(shù)除以寄存器B中的8位無符號(hào)整數(shù),所得到的商存在累加器A,而余數(shù)存在寄存器B中。除法運(yùn)算總是使OV和進(jìn)位標(biāo)志位CY等于0。如果OV=1,表明寄存器B中的內(nèi)容為00H,那么執(zhí)行結(jié)果為不確定值,表示除法有溢出。
DIV AB ;(A)÷(B)→(A)和(B) 累加器A中的內(nèi)容除以寄存器B中的內(nèi)容,所得到的商存在累加器A,而余數(shù)存在寄存器B中。
如任務(wù)中“加法程序”里 MOV A,P0
MOV B,P2
DIV AB
就是將P0口與P2口的內(nèi)容相除,商存于A,余數(shù)存于B。
(6) 加1指令(5條)
這5條指令的的功能均為原寄存器的內(nèi)容加1,結(jié)果送回原寄存器。上述提到,加1指令不會(huì)對任何標(biāo)志有影響,如果原寄存器的內(nèi)容為FFH,執(zhí)行加1后,結(jié)果就會(huì)是00H。這組指令共有直接、寄存器、寄存器減間址等尋址方式:
INC A ;(A)+1→(A) 累加器A中的內(nèi)容加1,結(jié)果存在A中。
INC data ;(data)+1→(data) 直接地址單元中的內(nèi)容加1,結(jié)果送回原地址單元中。
INC @Ri ;((Ri))+1→((Ri)) 寄存器的內(nèi)容指向的地址單元中的內(nèi)容加1,結(jié)果送回原地址單元中
INC Rn ;(Rn)+1→(Rn)寄存器Rn的內(nèi)容加1,結(jié)果送回原地址單元中
INC DPTR ;(DPTR)+1→(DPTR)數(shù)據(jù)指針的內(nèi)容加1,結(jié)果送回?cái)?shù)據(jù)指針中
在INC data這條指令中,如果直接地址是I/O,其功能是先讀入I/O鎖存器的內(nèi)容,然后在CPU進(jìn)行加1操作,再輸出到I/O上,這就是“讀—修改—寫”操作。
(7) 減1指令(4條)
這組指令的作用是把所指的寄存器內(nèi)容減1,結(jié)果送回原寄存器,若原寄存器的內(nèi)容為00H,減1后即為FFH,運(yùn)算結(jié)果不影響任何標(biāo)志位,這組指令共有直接、寄存器、寄存器間址等尋址方式,當(dāng)直接地址是I/O口鎖存器時(shí),“讀—修改—寫”操作與加1指令類似。
DEC A ;(A)-1→(A)累加器A中的內(nèi)容減1,結(jié)果送回累加器A中
DEC data ;(data)-1→(data)直接地址單元中的內(nèi)容減1,結(jié)果送回直接地址單元中
DEC @Ri ;((Ri))-1→((Ri))寄存器Ri指向的地址單元中的內(nèi)容減1,結(jié)果送回原地址單元中
DEC Rn ;(Rn)-1→(Rn)寄存器Rn中的內(nèi)容減1,結(jié)果送回寄存器Rn中。
(8) 十進(jìn)制調(diào)整指令(1條)
在進(jìn)行BCD碼運(yùn)算時(shí),這條指令總是跟在ADD或ADDC指令之后,其功能是將執(zhí)行加法運(yùn)算后存于累加器A中的結(jié)果進(jìn)行調(diào)整和修正。
DA A
3. 算術(shù)運(yùn)算指令應(yīng)用舉例
【例3.4】 雙字節(jié)無符號(hào)數(shù)加法(R0R1)+(R2R3)→(R4R5)
R0、R2、R4中存放16位數(shù)的高字節(jié),R1、R3、R5中存放低字節(jié)。由于不存在16位數(shù)加法指令,所以只能先加低8位,而在加高8位時(shí)要連低8沉位相加時(shí)產(chǎn)生的進(jìn)位一起相加。假設(shè)其和不超過16位,其編程如下:
MOV A,R1 ;取被加數(shù)低字節(jié)
ADD A,R3 ;低字節(jié)相加
MOV R5,A ;保存和低字節(jié)
MOV A,R0 ;取高字節(jié)被加數(shù)
ADDC A,R2 ;兩高字節(jié)之和加低位進(jìn)位
MOV R4,A ;保存和高字節(jié)
【例3.5】 雙字節(jié)無符號(hào)數(shù)相減(R0R1)-(R2R3)→(R4R5)
R0、R2、R4存放16位數(shù)的高字節(jié),R1、R3、R5存放低字節(jié)。先減低8位,后減高8位和低位減借位,所以要先清零。其編程如下:
MOV A,R1 ;取被減數(shù)低字節(jié)
CLR C ;清借位位
SUBB A,R3 ;低字節(jié)相減
MOV R5,A ;保存差低字節(jié)
MOV A,R0 ;取被減法高字節(jié)
SUBB A,R2 ;兩高字節(jié)之差減低位借位
MOV R4,A ;保存差高字節(jié)
【例3.6】 利用除法指令把累加器A中的8位二進(jìn)制轉(zhuǎn)換為3位BCD數(shù),并以壓縮形式存放在地址M1、M2單元中。
解:累加器A中的8位二進(jìn)制數(shù),先對其除以100(64H),商數(shù)即為十進(jìn)制的百位數(shù);余數(shù)部分再除以10(0AH),所得商數(shù)和余數(shù)分別為十進(jìn)制和個(gè)位數(shù),即得到3位BCD數(shù)的存放 是通過SWAP和ADD指令實(shí)現(xiàn)的。參考程序如下:
MOV B,#64H ;除數(shù)100送B
DIV AB ;得8位數(shù)
MOV M1, A ;百位數(shù)存于M1中
MOV A #0AH ;取除數(shù)10
XCH A,B ;上述余數(shù)與除數(shù)交換
XCH AB ;得十位數(shù)和個(gè)位數(shù)
SWAP A ;十位數(shù)存于A的高4位
ADD A,B ;組成壓縮BCD數(shù)
MOV M2,A ;十?個(gè)位壓縮BCD數(shù)存M2
若上述程序執(zhí)行前:(A)=A8H(168),則執(zhí)行后:(M1)=(01)BCD,(M2)(68)BCD 。
【例3.7】 對BCD碼加法65+58 =123(BDH)進(jìn)行十進(jìn)制調(diào)整。
解:高R5(高)、R4(低)為被加數(shù);高R3(高)、R2(低)為加數(shù);相加和的結(jié)果存和:高R6(萬)、R5(千、百)、R4(十、個(gè))。
參考程序如下:
MOV A,R4 ;被加數(shù)十位?個(gè)位送入A
ADD A,R2 ;十位?個(gè)位相加
DA A ;和的十位?個(gè)位調(diào)整
MOV R4,A ;和的十位?個(gè)位存入R4
MOV A,R5 ;被加數(shù)千位?百位送入A
ADDC A,R3 ;千位?百位的和加低位進(jìn)位
DA A ;和的千位?百位調(diào)整
MOV R5,A ;和的千位?百位存入R5
MOV A,#00H ; A清零
ADDC A,#00H ;求和的萬位值
MOV R6,A ;和的萬位存入R6
若程序執(zhí)行前:(R5)=(98H)BCD,(R4)=(76H)BCD,(R3)=(54H)BCD,(R2)=(32H)BCD,則執(zhí)行后:(R6)=(01H)BCD,(R5)=(53H)BCD,(R4)=(08H)BCD。
【例3.8】 雙字節(jié)數(shù)求補(bǔ)碼。
解:對于一個(gè)16位數(shù),R3存高8位,R2存低8位,求補(bǔ)結(jié)果仍存R3、R2。求補(bǔ)的參考程序如下:
MOV A,R2 ;低8位數(shù)送A
CPL A, ;低8位數(shù)取反
ADD A,#01H ;加1得低8位數(shù)補(bǔ)碼
MOV R2 ,A ;存補(bǔ)碼低8位
MOV A,R3 ;高8位數(shù)送A
CPL A, ;高8位數(shù)取反
ADDC A,#00H ;加低8位進(jìn)位
MOV R3 ,A ;存補(bǔ)碼高8位
3.3 任務(wù)四 單片機(jī)作邏輯運(yùn)算
〖學(xué)習(xí)目標(biāo)〗: 通過學(xué)習(xí)任務(wù)四的完成方法,掌握MCS-51單片機(jī)的邏輯運(yùn)算指令的功能。
〖任務(wù)描述〗: 利用單片機(jī)的邏輯運(yùn)算指令進(jìn)行邏輯與、或、異或等邏輯運(yùn)算,并將結(jié)果送P1口發(fā)光二極管顯示。
3.3.1 硬件電路
硬件電路仍采用實(shí)驗(yàn)開發(fā)板上的電路,如圖3.4所示。
工作原理
通過P0口、P2口外接的撥動(dòng)開關(guān)設(shè)制運(yùn)算的數(shù)據(jù),利用單片機(jī)的邏輯運(yùn)算指令運(yùn)算,并將結(jié)果送P1口發(fā)光二極管顯示。
3.3.2 程序設(shè)計(jì)
1. 邏輯“與”運(yùn)算程序
ORG 0000H
MOV A,P0
ANL A,P2
MOV P1,A
SJMP $
END
2. 邏輯“或”運(yùn)算程序
ORG 0000H
MOV A,P0
ORL A,P2
MOV P1,A
SJMP $
END
3. 邏輯“異或”運(yùn)算程序
ORG 0000H
MOV A,P0
XRL A,P2
MOV P1,A
SJMP $
END
3.3.3 源程序的編輯、編譯、下載
打開“偉福”模擬仿真軟件進(jìn)行程序的編輯、編譯。
打開“ISP下載軟件”將目標(biāo)文件下載到ISP-4實(shí)驗(yàn)開發(fā)板上的AT89S51單片機(jī)芯片,觀察程序運(yùn)行結(jié)果。
3.3.4 相關(guān)知識(shí)
在上面的任務(wù)中,我們可以看到隨著P0、P2口的變化,發(fā)光二極管的輸出和相關(guān)邏輯運(yùn)算的結(jié)果一致,那么,到底單片機(jī)是怎樣實(shí)現(xiàn)這種變化的呢?
1. 單片機(jī)是怎樣做邏輯運(yùn)算的?
單片機(jī)CPU內(nèi)部集成的邏輯運(yùn)算部件(主要有與運(yùn)算器、或運(yùn)算器、異或運(yùn)算器等),可以完成與、或、異或運(yùn)算等,單片機(jī)的邏輯運(yùn)算指令經(jīng)過指令譯碼器譯碼后產(chǎn)生的控制信號(hào)控制邏輯運(yùn)算部件工作產(chǎn)生運(yùn)算結(jié)果。
2. MCS-51單片機(jī)有哪些邏輯運(yùn)算指令?
邏輯運(yùn)算和移位指令共有25條,有與、或、異或、求反、左右移位、清0等邏輯操作,有直接、寄存器和寄存器間址等尋址方式。這類指令一般不影響程序狀態(tài)字(PSW)標(biāo)志。
(1) 循環(huán)移位指令(4條)
這4條指令的作用是將累加器中的內(nèi)容循環(huán)左或右移一位,后兩條指令是連同進(jìn)位位CY一起移位。
RL A ;累加器A中的內(nèi)容左移一位。
RR A ;累加器A中的內(nèi)容右移一位。
RLC A ;累加器A中的內(nèi)容連同進(jìn)位位CY左移一位。
RRC A ;累加器A中的內(nèi)容連同進(jìn)位位CY右移一位。
(2) 累加器半字節(jié)交換指令(1條)
這條指令是將累加器中的內(nèi)容高低半字節(jié)互換,這在上一節(jié)中內(nèi)容已有介紹。
SWAP A ; 累加器中的內(nèi)容高低半字節(jié)互換
(3) 求反指令(1條)
這條指令將累加器中的內(nèi)容按位取反。
CPL A ; 累加器中的內(nèi)容按位取反
(4) 清零指令(1條)
這條指令將累加器中的內(nèi)容清0。
CLR A ; 0→(A),累加器中的內(nèi)容清0
(5) 邏輯與操作指令(6條)
這組指令的作用是將兩個(gè)單元中的內(nèi)容執(zhí)行邏輯與操作。如果直接地址是I/O地址,則為“讀—修改—寫”操作。
ANL A,data ;累加器A中的內(nèi)容和直接地址單元中的內(nèi)容執(zhí)行與邏輯操作。結(jié)果存在寄存器A中。
ANL data,#data ;直接地址單元中的內(nèi)容和立即數(shù)執(zhí)行與邏輯操作。結(jié)果存在直接地址單元中。
ANL A,#data ;累加器A的內(nèi)容和立即數(shù)執(zhí)行與邏輯操作。結(jié)果存在累加器A中。
ANL A,Rn ;累加器A的內(nèi)容和寄存器Rn中的內(nèi)容執(zhí)行與邏輯操作。結(jié)果存在累加器A中。
ANL data,A ;直接地址單元中的內(nèi)容和累加器A的內(nèi)容執(zhí)行與邏輯操作。結(jié)果存在直接地址單元中。
ANL A,@Ri ;累加器A的內(nèi)容和工作寄存器Ri指向的地址單元中的內(nèi)容執(zhí)行與邏輯操作。結(jié)果存在累加器A中。
如任務(wù)中的ANL A,P2 指令。
(6) 邏輯或操作指令(6條)
這組指令的作用是將兩個(gè)單元中的內(nèi)容執(zhí)行邏輯或操作。如果直接地址是I/O地址,則為“讀—修改—寫”操作。
ORL A,data ;累加器A中的內(nèi)容和直接地址單元中的內(nèi)容執(zhí)行邏輯或操作。結(jié)果存在寄存器A中。
ORL data,#data ;直接地址單元中的內(nèi)容和立即數(shù)執(zhí)行邏輯或操作。結(jié)果存在直接地址單元中。
ORL A,#data ;累加器A的內(nèi)容和立即數(shù)執(zhí)行邏輯或操作。結(jié)果存在累加器A中。
ORL A,Rn ;累加器A的內(nèi)容和寄存器Rn中的內(nèi)容執(zhí)行邏輯或操作。結(jié)果存在累加器A中。
ORL data,A ;直接地址單元中的內(nèi)容和累加器A的內(nèi)容執(zhí)行邏輯或操作。結(jié)果存在直接地址單元中。
ORL A,@Ri ;累加器A的內(nèi)容和工作寄存器Ri指向的地址單元中的內(nèi)容執(zhí)行邏輯或操作。結(jié)果存在累加器A中。
如任務(wù)中的 ORL A,P2 指令。
(7) 邏輯異或操作指令(6條)
這組指令的作用是將兩個(gè)單元中的內(nèi)容執(zhí)行邏輯異或操作。如果直接地址是I/O地址,則為“讀—修改—寫”操作。
XRL A,data ;累加器A中的內(nèi)容和直接地址單元中的內(nèi)容執(zhí)行邏輯異或操作。結(jié)果存在寄存器A中。
XRL data,#data ;直接地址單元中的內(nèi)容和立即數(shù)執(zhí)行邏輯異或操作。結(jié)果存在直接地址單元中。
XRL A,#data ;累加器A的內(nèi)容和立即數(shù)執(zhí)行邏輯異或操作。結(jié)果存在累加器A中。
XRL A,Rn ;累加器A的內(nèi)容和寄存器Rn中的內(nèi)容執(zhí)行邏輯異或操作。結(jié)果存在累加器A中。
XRL data,A ;直接地址單元中的內(nèi)容和累加器A的內(nèi)容執(zhí)行邏輯異或操作。結(jié)果存在直接地址單元中。
XRL A,@Ri ;累加器A的內(nèi)容和工作寄存器Ri指向的地址單元中的內(nèi)容執(zhí)行邏輯異或操作。結(jié)果存在累加器A中。
如任務(wù)中的 XRL A,P2 指令。
3. 邏輯運(yùn)算指令應(yīng)用舉例
【例3.9】 16位數(shù)的算術(shù)左移。16位數(shù)在內(nèi)存中低8位存放在M1單元,高8位存放在M1+1單元。
解:所謂算術(shù)左移就是將操作數(shù)左移一位,并使最低位補(bǔ)充0,相當(dāng)于完成16位數(shù)的乘務(wù)員操作,故稱算術(shù)左移。參考程序如下:
CLR C ;進(jìn)位CY清零
MOV R1,#M1 ;操作數(shù)地址M1送R1
MOV A,@ R1 ;低8位數(shù)送A
RLC A, ;低8位左移,最低位補(bǔ)0
MOV @ R1 ,A ;低8位左移后,回送M1存放
INC R1 ;指向16位高8位地址M1+1
MOV A,@ R1 ;低8位送A
RLC A, ;高8位帶低8位進(jìn)位左移
MOV @ R1 ,A ;高8位左移后回送M1+1存放
若要對16位數(shù)進(jìn)行循環(huán)移位,則應(yīng)首先設(shè)法把最高位(D15)的值置入CY,然后再參照以上程序編寫即可。利用以后介紹的位操作指令可以很容易地實(shí)現(xiàn)將某一位的值置入CY。
