版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.1.標(biāo)號(hào):指令的符號(hào)地址標(biāo)號(hào):指令的符號(hào)地址2.2.操作碼:指明指令功能。操作碼:指明指令功能。3.3.操作數(shù):指令操作對(duì)象操作數(shù):指令操作對(duì)象數(shù)據(jù)、地址、存放器名及商定符號(hào)。數(shù)據(jù)、地址、存放器名及商定符號(hào)。4.4.注釋行:闡明指令在程序中的作用。注釋行:闡明指令在程序中的作用。 操作碼和操作數(shù)是指令主體。操作碼和操作數(shù)是指令主體。MOV_move傳送傳送XCH_exchange交換交換ANL_and logic與邏輯運(yùn)算與邏輯運(yùn)算XRL_exclusive or異或運(yùn)算異或運(yùn)算MUL_Multiply乘法乘法RR_rotate right右循環(huán)右循環(huán)SJMP_short jump短跳轉(zhuǎn)短
2、跳轉(zhuǎn)RET_return 子程序前往子程序前往操作碼操作碼 操作數(shù)操作數(shù)1 1 操作數(shù)操作數(shù)22有單字節(jié)、雙字節(jié)和三字節(jié)指令。有單字節(jié)、雙字節(jié)和三字節(jié)指令。匯編言語(yǔ)指令中操作碼和操作數(shù)是指令主體,稱為匯編言語(yǔ)指令中操作碼和操作數(shù)是指令主體,稱為指令可執(zhí)行部分,指令表中可查出對(duì)應(yīng)指令代碼。指令可執(zhí)行部分,指令表中可查出對(duì)應(yīng)指令代碼。舉例:舉例:匯編言語(yǔ):匯編言語(yǔ):機(jī)器言語(yǔ):機(jī)器言語(yǔ):MOV AMOV A,R0R0E8HE8HMOV R6MOV R6,#32H#32H7E 32H7E 32HMOV 40HMOV 40H,#100H#100H75 40 64H75 40 64H11101000011
3、1111000110010011101010100000001100100例:設(shè)存儲(chǔ)器兩個(gè)單元的內(nèi)容如下圖,例:設(shè)存儲(chǔ)器兩個(gè)單元的內(nèi)容如下圖,執(zhí)行指令執(zhí)行指令 MOV A MOV A,40H40H后后 A = A = ?二二. .直接尋址方式直接尋址方式指令操作數(shù)是存儲(chǔ)器單元地址,數(shù)據(jù)在存儲(chǔ)器單元中。指令操作數(shù)是存儲(chǔ)器單元地址,數(shù)據(jù)在存儲(chǔ)器單元中。 MOV A MOV A,40H40H;A(40H)A(40H)直接尋址方式對(duì)數(shù)據(jù)操作時(shí),地址是固定直接尋址方式對(duì)數(shù)據(jù)操作時(shí),地址是固定值,而地址所指定的單元內(nèi)容為變量方式。值,而地址所指定的單元內(nèi)容為變量方式。41H 78H40H 56H56H 思
4、索題:直接尋址方式指令和立刻尋址方式指令的方思索題:直接尋址方式指令和立刻尋址方式指令的方式有什么不同?式有什么不同?三三. .存放器尋址方式存放器尋址方式指令操作數(shù)為存放器名,數(shù)據(jù)在存放器中。指令操作數(shù)為存放器名,數(shù)據(jù)在存放器中。例例: :MOV AMOV A,R0R0;AR0AR0設(shè)指令執(zhí)行前設(shè)指令執(zhí)行前 A=20H A=20H,R0=40HR0=40H,執(zhí)行指令后,執(zhí)行指令后,A= A= ?,?,R0= R0= ?四四. .存放器間接尋址方式存放器間接尋址方式 指令的操作數(shù)為存放器名,存放器中為數(shù)據(jù)地址。指令的操作數(shù)為存放器名,存放器中為數(shù)據(jù)地址。 存放地址的存放器稱為間址存放器或數(shù)據(jù)指
5、針。存放地址的存放器稱為間址存放器或數(shù)據(jù)指針。例例: :MOV AMOV A,R0R0 ;A(R0)A(R0) 設(shè)指令執(zhí)行前設(shè)指令執(zhí)行前 A=20H A=20H,R0=40HR0=40H,地址為,地址為40H40H存儲(chǔ)器存儲(chǔ)器單元內(nèi)容如下圖。執(zhí)行指令后,單元內(nèi)容如下圖。執(zhí)行指令后,A= A= ? ,R0 = ,R0 = ? , (40H)= , (40H)= ? 41H 67H 40H 34H34H40H34H40H40H0100 0000A0010 0000R00100 0000R0五五. .變址間接尋址方式變址間接尋址方式 數(shù)據(jù)在存儲(chǔ)器中,指令給出的存放器中為數(shù)據(jù)數(shù)據(jù)在存儲(chǔ)器中,指令給出的
6、存放器中為數(shù)據(jù)的基地址和偏移量。的基地址和偏移量。數(shù)據(jù)地址數(shù)據(jù)地址 = = 基地址基地址 + + 偏移量。偏移量。例:例: MOVC AMOVC A,A+DPTRA+DPTR ;A(A+DPTR)A(A+DPTR) 設(shè)指令執(zhí)行前設(shè)指令執(zhí)行前 A=09H A=09H,DPTR=2000HDPTR=2000H,存儲(chǔ)器單元內(nèi)容,存儲(chǔ)器單元內(nèi)容如下圖。執(zhí)行指令后,如下圖。執(zhí)行指令后,A= A= ? DPTR= DPTR= ? 12H2000H六六. .位尋址方式位尋址方式 指令給出位地址。一位數(shù)據(jù)在存儲(chǔ)器位尋址區(qū)。指令給出位地址。一位數(shù)據(jù)在存儲(chǔ)器位尋址區(qū)。例:例: MOV C MOV C,40H40H
7、;Cy(Cy(位地址位地址40H)40H) 設(shè)指令執(zhí)行前設(shè)指令執(zhí)行前 Cy=1 Cy=1,位地址,位地址40H40H存儲(chǔ)器單元如圖,存儲(chǔ)器單元如圖,執(zhí)行指令后,執(zhí)行指令后,Cy= Cy= ?28H 0110001029H 11010111位尋址區(qū)02019H 89H2021H 12H指令功能分類:指令功能分類:數(shù)據(jù)傳送、數(shù)據(jù)操作、布爾處置、程序控制。數(shù)據(jù)傳送、數(shù)據(jù)操作、布爾處置、程序控制。3-3-1 3-3-1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令實(shí)現(xiàn)存放器、存儲(chǔ)器之間的數(shù)據(jù)傳送。實(shí)現(xiàn)存放器、存儲(chǔ)器之間的數(shù)據(jù)傳送。一一. . 內(nèi)部傳送指令:內(nèi)部傳送指令: 片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。
8、二二. . 外部傳送指令:外部傳送指令: 片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。三三. . 交換指令:交換指令: 片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。 四四. . 堆棧操作指令:堆棧操作指令: 片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。片內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送。 五五. . 查表指令:查表指令: 程序存儲(chǔ)器數(shù)據(jù)傳送。程序存儲(chǔ)器數(shù)據(jù)傳送。一、內(nèi)部傳送指令:一、內(nèi)部傳送指令:實(shí)現(xiàn)片內(nèi)數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)傳送。實(shí)現(xiàn)片內(nèi)數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)傳送。指令格式:指令格式: MOV MOV 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) 尋址方式:立刻尋址、直接尋址、存放器尋址、尋址方式:立刻尋址、直接尋址、存放器尋址、
9、存放器間址。存放器間址。MOV AMOV A,Rn Rn ;ARnARn,Rn=R0Rn=R0R7 R7 MOV AMOV A,direct direct ;A(direct)A(direct),MOV A, Ri MOV A, Ri ;A (Ri) A (Ri) ,Ri=R0Ri=R0、R1R1MOV A, #data MOV A, #data ; A d A d,第一條指令中,Rn代表的是R0-R7。第二條指令中,direct就是指的直接地址,而第三條指令中,就是我們剛剛講過(guò)的。第四條指令是將立刻數(shù)data送到A中 下面我們經(jīng)過(guò)一些例子加以闡明:MOV A,R1 ;將任務(wù)存放器R1中的值送
10、入A,R1中的值堅(jiān)持不變。MOV A,30H ;將內(nèi)存30H單元中的值送入A,30H單元中的值堅(jiān)持不變。MOV A,R1 ;先看R1中是什么值,把這個(gè)值作為地址,并將這個(gè)地址單元中的值送入 A中。如執(zhí)行命令前R1中的值為20H,那么是將20H單元中的值送入A中。MOV A,#34H ;將立刻數(shù)34H送入A中,執(zhí)行完本條指令后,A中的值是34H。1 1 以累加器為目的操作數(shù)的指令以累加器為目的操作數(shù)的指令 MOV RnMOV Rn, direct direct ;Rn (n)Rn (n)MOV RnMOV Rn, #data #data ; Rn data Rn data MOV RnMOV R
11、n, A A ; Rn Rn A A 2 2以存放器以存放器RnRn為目的操作的指令為目的操作的指令 這組指令功能是把源地址單元中的內(nèi)容送入任務(wù)存放器,源操作數(shù)不變。 MOV direct,Rn ;directRnMOV direct,Rn ;directRnMOV directMOV direct, A ; A ; MOV directMOV direct, Ri ; Ri ;MOV directMOV direct, #data ; #data ;MOV directMOV direct, direct2 ; direct2 ;例:例:MOV 20H,R1 MOV 20H,R1 MOV 2
12、0H,AMOV 20H,AMOV 20H,30HMOV 20H,30HMOV 20H,R1MOV 20H,R1MOV 20H,#34HMOV 20H,#34H3 3以直接地址為目的操作數(shù)的指令以直接地址為目的操作數(shù)的指令 MOV RiMOV Ri, A A; (RiRi)(A A),), 將將A A值送入值送入RiRi指示的地址單元中。指示的地址單元中。MOV RiMOV Ri,directdirect; (RiRi)(directdirect) , 將將directdirect值送入值送入RiRi指示的地址單元中。指示的地址單元中。MOV RiMOV Ri, #data#data; (RiR
13、i)data data , 將常數(shù)將常數(shù)#data#data直接送入直接送入RiRi指示的地址單元中。指示的地址單元中。例:例: MOV R0,AMOV R0,AMOV R1,20HMOV R1,20HMOV R0,#34HMOV R0,#34H4 4以間接地址為目的操作數(shù)的指令以間接地址為目的操作數(shù)的指令 8051是一種8位機(jī),這是獨(dú)一的一條16位立刻數(shù)傳送指令,其功能是將一個(gè)16位的立刻數(shù)送入DPTR中去。其中高8位送入DPH,低8位送入DPL。例:MOV DPTR,#1234H,那么執(zhí)行完了之后DPH中的值為12H,DPL中的值為34H。反之,假設(shè)我們分別向DPH,DPL送數(shù),那么結(jié)果也
14、一樣。如有下面兩條指令:MOV DPH,#35H,MOV DPL,#12H。那么就相當(dāng)于執(zhí)行了MOV DPTR,#3512H。5 5十六位數(shù)的傳送指令十六位數(shù)的傳送指令 MOV DPTR,#data16 例例3-2-13-2-1:順序執(zhí)行以下指令序列,求每一步執(zhí)行結(jié)果。:順序執(zhí)行以下指令序列,求每一步執(zhí)行結(jié)果。MOV AMOV A,#30H#30HMOV 4FHMOV 4FH,A AMOV R0MOV R0,#20H#20HMOV R0MOV R0,4FH4FHMOV 21HMOV 21H,20H20H地址內(nèi)容60H32H32H58H習(xí)題習(xí)題1 1:用兩種尋址方式實(shí)現(xiàn),將片內(nèi):用兩種尋址方式實(shí)
15、現(xiàn),將片內(nèi)RAM 60HRAM 60H單元的數(shù)單元的數(shù)據(jù)傳送給累加器據(jù)傳送給累加器A A。解:解: MOV A,#60H MOV A,#60HMOV R0MOV R0,#60H #60H MOV AMOV A,R0R0;A= 30HA= 30H;(4FH)= 30H(4FH)= 30H;R0= 20HR0= 20H;(20H)= 30H(20H)= 30H;(21H)= 30H(21H)= 30HMOV R0MOV R0,60H 60H MOV AMOV A,R0R0解:解: MOV A,60H MOV A,60HA=60HA=60HA=32HA=32HA=58HA=58HA=32HA=32H
16、習(xí)題習(xí)題2 2:綜合練習(xí):綜合練習(xí): 給出每條指令執(zhí)行后的結(jié)果 闡明:用括號(hào)括起來(lái)代表內(nèi)容,如23H那么代表內(nèi)部RAM23H單元中的值,A那么代表累加器A單元中的值。 MOV 23H,#30HMOV 12H,#34HMOV R0,#23HMOV R7,#22HMOV R1,12HMOV A,R0MOV 34H,R1MOV 45H,34HMOV DPTR,#6712HMOV 12H,DPHMOV R0,DPLMOV A,R0(23h)=30h(12h)=34h(R0)=23H(R7)=22H(R1)=12H(A)=30H(34H)=34H(45H)=34H(DPTR)=6712H(12H)=67
17、H(R0)=12H(A)=67H闡明:闡明: 只需指令表中的指令才有對(duì)應(yīng)指令代碼,計(jì)算機(jī)才只需指令表中的指令才有對(duì)應(yīng)指令代碼,計(jì)算機(jī)才干執(zhí)行。編程時(shí),不能隨意發(fā)明發(fā)明指令。干執(zhí)行。編程時(shí),不能隨意發(fā)明發(fā)明指令。1. 一條指令中不能同時(shí)出現(xiàn)兩個(gè)任務(wù)存放器:一條指令中不能同時(shí)出現(xiàn)兩個(gè)任務(wù)存放器:非法指令:非法指令:MOV R1,R2MOV R2,R02. 間址存放器只能運(yùn)用間址存放器只能運(yùn)用 R0、R1。 非法指令:非法指令:MOV A,R23. SFR區(qū)只能直接尋址,不能用存放器間接尋址。區(qū)只能直接尋址,不能用存放器間接尋址。非法指令:非法指令:MOV R0,#80HMOV A,R04. 指令表
18、:指令表:(指令字節(jié)數(shù),機(jī)器周期數(shù)指令字節(jié)數(shù),機(jī)器周期數(shù))思索:找出配對(duì)指令,實(shí)現(xiàn)反向傳送。思索:找出配對(duì)指令,實(shí)現(xiàn)反向傳送。二、二、 外部傳送指令外部傳送指令實(shí)現(xiàn)片外數(shù)據(jù)存儲(chǔ)器和實(shí)現(xiàn)片外數(shù)據(jù)存儲(chǔ)器和A A累加器之間的數(shù)據(jù)累加器之間的數(shù)據(jù)傳送。傳送。 指令格式:指令格式:MOVX MOVX 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)尋址方式:片外數(shù)據(jù)存儲(chǔ)器用存放器間址方式。尋址方式:片外數(shù)據(jù)存儲(chǔ)器用存放器間址方式。1. DPTR1. DPTR作作1616位數(shù)據(jù)指針,尋址位數(shù)據(jù)指針,尋址64KB64KB片外片外RAMRAM空間空間MOVX AMOVX A,DPTRDPTR;A(DPTR) A(DP
19、TR) 讀數(shù)據(jù)讀數(shù)據(jù)MOVX DPTRMOVX DPTR,A A;(DPTR)A (DPTR)A 寫(xiě)數(shù)據(jù)寫(xiě)數(shù)據(jù)2. Ri2. Ri作作8 8位數(shù)據(jù)指針,尋址位數(shù)據(jù)指針,尋址256B256B片外片外RAMRAM空間空間MOVXMOVX A A,RiRi;A(Ri) A(Ri) 讀數(shù)據(jù)讀數(shù)據(jù)MOVXMOVX RiRi,A A ;(Ri)A(Ri)A寫(xiě)數(shù)據(jù)寫(xiě)數(shù)據(jù)3 3、運(yùn)用時(shí)該當(dāng)首先將要讀或?qū)懙牡刂匪腿?、運(yùn)用時(shí)該當(dāng)首先將要讀或?qū)懙牡刂匪腿隓PTRDPTR或或RiRi中,然后再用中,然后再用讀寫(xiě)命令。讀寫(xiě)命令。小結(jié):小結(jié):1 1、在、在5151中,與外部存儲(chǔ)器中,與外部存儲(chǔ)器RAMRAM打交道的只可以
20、是打交道的只可以是A A累加器累加器。一切需求送入外部。一切需求送入外部RAMRAM的數(shù)據(jù)必需求經(jīng)過(guò)的數(shù)據(jù)必需求經(jīng)過(guò)A A送去,而一切送去,而一切要讀入的外部要讀入的外部RAMRAM中的數(shù)據(jù)也必需經(jīng)過(guò)中的數(shù)據(jù)也必需經(jīng)過(guò)A A讀入。讀入。在此我們可以看出內(nèi)外部在此我們可以看出內(nèi)外部RAMRAM的區(qū)別了,內(nèi)部的區(qū)別了,內(nèi)部RAMRAM間可以直間可以直接進(jìn)展數(shù)據(jù)的傳送,而外部那么不行,比如,要將外部接進(jìn)展數(shù)據(jù)的傳送,而外部那么不行,比如,要將外部RAMRAM中某一單元設(shè)為中某一單元設(shè)為0100H0100H單元的數(shù)據(jù)送入另一個(gè)單元單元的數(shù)據(jù)送入另一個(gè)單元設(shè)為設(shè)為0200H0200H單元,也必需先將單元
21、,也必需先將0100H0100H單元中的內(nèi)容讀入單元中的內(nèi)容讀入A A,然后再送到,然后再送到0200H0200H單元中去。單元中去。2 2、要讀或?qū)懲獠康?、要讀或?qū)懲獠康腞AMRAM,當(dāng)然也必需求知道,當(dāng)然也必需求知道RAMRAM的地址,在后兩條的地址,在后兩條指令中,地址是被直接放在指令中,地址是被直接放在DPTRDPTR中的。而前兩條指令,由于中的。而前兩條指令,由于RiRi即即R0R0或或R1R1只是一個(gè)只是一個(gè)8 8位的存放器,所以只提供低位的存放器,所以只提供低8 8位地址。由于有時(shí)位地址。由于有時(shí)擴(kuò)展的外部擴(kuò)展的外部RAMRAM的數(shù)量比較少,少于或等于的數(shù)量比較少,少于或等于25
22、6256個(gè),就只需求提供個(gè),就只需求提供8 8位地址就夠了。位地址就夠了。例例3-2-23-2-2:實(shí)現(xiàn)片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳:實(shí)現(xiàn)片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳(2000H)(2100H)(2000H)(2100H)。假設(shè)假設(shè)(2000H)=X(2000H)=XMOV DPTRMOV DPTR,#2000H#2000HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTRMOVX DPTR,A A片外RAM地址內(nèi)容2000HXDPTR2100H片外RAM地址內(nèi)容2000HXDPTR2100HX; DPTR= 2000H DPTR= 2000
23、H; A= X A= X; DPTR= 2100H DPTR= 2100H;(2100H)= X(2100H)= X片外數(shù)據(jù)存儲(chǔ)器不能直接片外數(shù)據(jù)存儲(chǔ)器不能直接尋址。以下為非法指令:尋址。以下為非法指令: MOVX A MOVX A,2000H 2000H MOVX 2100H MOVX 2100H,2000H2000H思索題:為什么對(duì)思索題:為什么對(duì)DPTRDPTR的數(shù)據(jù)傳送運(yùn)用內(nèi)部傳送指令?的數(shù)據(jù)傳送運(yùn)用內(nèi)部傳送指令?MOV DPTRMOV DPTR,#0100H#0100HMOVX AMOVX A,DPTRDPTRMOV DPTR,#0200HMOV DPTR,#0200HMOVX DP
24、TR,AMOVX DPTR,A習(xí)題習(xí)題4 4:將外部:將外部RAMRAM中中100H100H單元中的內(nèi)容送入外部單元中的內(nèi)容送入外部RAMRAM中中200H200H單元中。單元中。習(xí)題習(xí)題3 3:將片外:將片外RAM 0000HRAM 0000H單元的數(shù)據(jù)傳送到片內(nèi)單元的數(shù)據(jù)傳送到片內(nèi)RAMRAM的的 60H 60H單元。單元。MOV DPTRMOV DPTR,#0000H#0000HMOVX AMOVX A,DPTRDPTRMOV 60H,AMOV 60H,A三、三、 交換指令交換指令 實(shí)現(xiàn)片內(nèi)實(shí)現(xiàn)片內(nèi)RAMRAM區(qū)的數(shù)據(jù)雙向傳送。區(qū)的數(shù)據(jù)雙向傳送。1. 1. 字節(jié)交換指令字節(jié)交換指令XCH
25、 AXCH A,Rn Rn ;A RnA RnXCH AXCH A,RiRi; A (Ri) A (Ri) XCH AXCH A,direct direct ;A (n)A (n)片內(nèi) RAM地址內(nèi)容2BH35H2AH38H20H習(xí)題習(xí)題4 4:將片內(nèi):將片內(nèi)RAM60HRAM60H單元與單元與61H61H單元的數(shù)據(jù)交換。單元的數(shù)據(jù)交換。例:設(shè)例:設(shè)A= 29HA= 29H,執(zhí)行指令,執(zhí)行指令 XCH A XCH A,2AH2AH后,后,A= A= ?(2AH)= (2AH)= ?38H29HXCH 60HXCH 60H,61H 61H 對(duì)嗎?對(duì)嗎?29 H2. 2. 半字節(jié)交換指令半字節(jié)交換
26、指令XCHD AXCHD A,Ri Ri ;A0A03 (Ri)03 (Ri)03 3SWAP ASWAP A ;A4A47 A07 A03 3是將A中的值的高、低4位進(jìn)展交換。 例:例:A A=39H=39H,那么執(zhí)行,那么執(zhí)行SWAP ASWAP A之后,之后,A A中的值就是中的值就是93H93H。怎樣正好是這么前后交換呢?由于這是一個(gè)。怎樣正好是這么前后交換呢?由于這是一個(gè)1616進(jìn)制數(shù),進(jìn)制數(shù),每每1 1個(gè)個(gè)1616進(jìn)位數(shù)字代表進(jìn)位數(shù)字代表4 4個(gè)二進(jìn)位。個(gè)二進(jìn)位。留意,假設(shè)是這樣的:留意,假設(shè)是這樣的:A A=39=39,后面沒(méi),后面沒(méi)H H,執(zhí)行,執(zhí)行SWAP ASWAP A之后
27、,可不是之后,可不是A A=93=93。要將它化成二進(jìn)制再算:。要將它化成二進(jìn)制再算:3939化為化為二進(jìn)制是二進(jìn)制是1011110111,也就是,也就是00010001,01110111高高4 4位是位是00010001,低,低4 4位位是是01110111,交換后是,交換后是0111000101110001,也就是,也就是71H71H,即,即113 113 例例3 37 7知知A A56H56H,R0R020H20H,20H20H78H78H,10H10H18H18H,R4R48AH8AH;單獨(dú)執(zhí)行指令:?jiǎn)为?dú)執(zhí)行指令: XCH A XCH A, 10H 10H XCH A XCH A, R
28、4 R4 XCH A XCH A, R0 R0指令執(zhí)行后:指令執(zhí)行后: A A=18H=18H, 10H10H=56H=56H; A A=8AH=8AH, R4R4=56H=56H; A A=78H=78H, R0R0=20H=20H,R0R0= =20H20H=56H=56H。書(shū)上例題書(shū)上例題例例3 38 8知知(A)(A)7AH7AH,R1R148H48H,48H48H0DH0DH;執(zhí)行指令執(zhí)行指令: : XCHD XCHDA A, R1R1指令執(zhí)行后:指令執(zhí)行后:A A7DH7DH,R1R148H48H,(R1)(R1)48H48H0AH0AH。片內(nèi)RAM地址內(nèi)容2BH35H2AH38H
29、20H壓壓縮縮式式 BCD 碼碼千位 百位十位 個(gè)位單單字字節(jié)節(jié) BCD0000 千位0000 百位0000 十位0000 個(gè)位習(xí)題:交換片內(nèi)習(xí)題:交換片內(nèi)RAM 40HRAM 40H單元和單元和 41H 41H單元的低半字節(jié)。單元的低半字節(jié)。例例3-4-33-4-3:將片內(nèi):將片內(nèi)RAM 2AHRAM 2AH和和2BH2BH單元中的單元中的ASCIIASCII碼轉(zhuǎn)換成緊縮式碼轉(zhuǎn)換成緊縮式BCDBCD碼存入碼存入20H20H單元。單元。A0000000000H00001000100000001000010108H80H85HMOV A,#0MOV R0,#2AHMOV R1,#2BHXCHD
30、A,R0SWAP AXCHD A,R1XCH A,20H0000000000H0000000000H85HR1R0四、堆棧操作指令四、堆棧操作指令 入棧指令:入棧指令:PUSH n ;SPSP+1,(SP)(n) 出棧指令:出棧指令:POP n ;(n)(SP),SPSP-1堆棧操作堆棧操作PUSH directPUSH directPOP directPOP direct第一條指令稱之為推入,就是將第一條指令稱之為推入,就是將directdirect中的內(nèi)容送入堆中的內(nèi)容送入堆棧中,第二條指令稱之為彈出,就是將堆棧中的內(nèi)容送棧中,第二條指令稱之為彈出,就是將堆棧中的內(nèi)容送回到回到direct
31、direct中。中。推入指令的執(zhí)行過(guò)程是,首先將推入指令的執(zhí)行過(guò)程是,首先將SPSP中的值加中的值加1 1,然后把,然后把SPSP中的值當(dāng)作地址,將中的值當(dāng)作地址,將directdirect中的值送進(jìn)以中的值送進(jìn)以SPSP中的值為中的值為地址的地址的RAMRAM單元中。單元中。例例3 35 5知當(dāng)前知當(dāng)前SPSP38H38H,10H10H70H70H;執(zhí)行指令:執(zhí)行指令:PUSHPUSH10H10H指令執(zhí)行后;指令執(zhí)行后;SPSP39H39H,10H10H70H70H,39H39H70H70H。該指令的執(zhí)行過(guò)程如圖39所示:指令的執(zhí)行過(guò)程如圖310所示:例:例:SPSP=40H=40H,40H
32、40H=68H=68H,A A=20H=20HPOPPOPACCACC指令執(zhí)行后;指令執(zhí)行后;SPSP3FH3FH,40H40H68H68H,A A68H68H例:例:MOV SPMOV SP,#5FH#5FHMOV AMOV A,#100#100MOV BMOV B,#20#20PUSH ACCPUSH ACCPUSH BPUSH BPOP BPOP BPOP ACCPOP ACC1、執(zhí)行第一條PUSH ACC指令是這樣的:將SP中的值加1,即變?yōu)?0H,然后將A中的值送到60H單元中,因此執(zhí)行完本條指令后, 內(nèi)存60H單元的值就是100,同樣,執(zhí)行PUSH B時(shí),是將SP+1,即變?yōu)?1H
33、,然后將B中的值送入到61H單元中,即執(zhí)行完本條指令后,61H單元中的值變?yōu)?0。2、執(zhí)行過(guò)程是:將SP中的值如今是61H作為地址,取61H單元中的數(shù)值如今是20,送到B中,所以執(zhí)行完本條指令后B中的值是20,然后將SP減1,因此本條指令執(zhí)行完后,SP的值變?yōu)?0H,然后執(zhí)行POP ACC,將SP中的值60H作為地址,從該地址中取數(shù)如今是100,并送到ACC中,所以執(zhí)行完本條指令后,ACC中的值是100。這有什么意義呢?這有什么意義呢?ACCACC中的值本來(lái)就是中的值本來(lái)就是100100,B B中的值本來(lái)就是中的值本來(lái)就是2020,是的,在,是的,在本例中,確實(shí)沒(méi)有意義,但在實(shí)踐任務(wù)中,那么在
34、本例中,確實(shí)沒(méi)有意義,但在實(shí)踐任務(wù)中,那么在PUSH BPUSH B后往往要執(zhí)行其他指令,而且這些指令會(huì)把后往往要執(zhí)行其他指令,而且這些指令會(huì)把A A中的值,中的值,B B中中的值改掉,所以在程序的終了,假設(shè)我們要把的值改掉,所以在程序的終了,假設(shè)我們要把A A和和B B中的值中的值恢復(fù)原值,那么這些指令就有意義了。恢復(fù)原值,那么這些指令就有意義了。 還有一個(gè)問(wèn)題,還有一個(gè)問(wèn)題,假設(shè)不用堆棧,比如說(shuō)在假設(shè)不用堆棧,比如說(shuō)在PUSH ACCPUSH ACC指令處用指令處用MOV 60HMOV 60H,A A,在,在PUSH BPUSH B處用指令處用指令MOV 61HMOV 61H,B B,然后
35、用然后用MOV AMOV A,60H60H,MOV BMOV B,61H61H來(lái)替代兩條來(lái)替代兩條POPPOP指令,不是也一樣嗎?是的,從結(jié)果上看指令,不是也一樣嗎?是的,從結(jié)果上看是一樣的,但是從過(guò)程看是不一樣的,是一樣的,但是從過(guò)程看是不一樣的,PUSHPUSH和和POPPOP指令都是單字節(jié),單周期指令,而指令都是單字節(jié),單周期指令,而MOVMOV指令指令那么是雙字節(jié),雙周期指令。更何況,堆棧的那么是雙字節(jié),雙周期指令。更何況,堆棧的作用不止于此,所以普通的計(jì)算機(jī)上都設(shè)有堆作用不止于此,所以普通的計(jì)算機(jī)上都設(shè)有堆棧,而我們?cè)诰帉?xiě)子程序,需求保管數(shù)據(jù)時(shí),棧,而我們?cè)诰帉?xiě)子程序,需求保管數(shù)據(jù)時(shí)
36、,通常也不采用后面的方法,而是用堆棧的方法通常也不采用后面的方法,而是用堆棧的方法來(lái)實(shí)現(xiàn)。來(lái)實(shí)現(xiàn)。例:寫(xiě)出以下程序的運(yùn)轉(zhuǎn)結(jié)果例:寫(xiě)出以下程序的運(yùn)轉(zhuǎn)結(jié)果MOV 30HMOV 30H,#12#12MOV 31HMOV 31H,#23#23PUSH 30HPUSH 30HPUSH 31HPUSH 31HPOP 30HPOP 30HPOP 31HPOP 31H結(jié)果是30H中的值變?yōu)?3,而31H中的值那么變?yōu)?2。也就兩者進(jìn)展了數(shù)據(jù)交換。從這個(gè)例子可以看出:運(yùn)用堆棧時(shí),入棧的書(shū)寫(xiě)順序和出棧的書(shū)寫(xiě)順序必需相反,才干保證數(shù)據(jù)被送回原位,否那么就要出錯(cuò)了。 例:設(shè)例:設(shè) A=02 A=02,B=56HB=5
37、6H,執(zhí)行以下指令后,執(zhí)行以下指令后,SP= SP= ?,?,A= A= ? ,B= ?B= ?片內(nèi) RAM34H33H32H31H30H SP SP SP SP 0202 SP 56H 02 56H 56H 02H02HSPSP SP 56H 02 SP 56H 02 56H 56H SP SP 02 02 02HA00H02H00H02H02HSBRSBR: MOV SP MOV SP,#30H #30H ;設(shè)棧底;設(shè)棧底 PUSH A PUSH A PUSH B PUSH B MOV A MOV A,#0#0 MOV MOV B B,#01#01 POP POP B B POP A PO
38、P A五、五、 查表指令查表指令 實(shí)現(xiàn)從程序存儲(chǔ)器讀取數(shù)據(jù)到實(shí)現(xiàn)從程序存儲(chǔ)器讀取數(shù)據(jù)到A A累加器,只能累加器,只能運(yùn)用變址間接尋址方式。運(yùn)用變址間接尋址方式。 多用于查常數(shù)表程序,可直接求取常數(shù)表中的多用于查常數(shù)表程序,可直接求取常數(shù)表中的函數(shù)值。函數(shù)值。1 1DPTRDPTR為基址存放器為基址存放器MOVCMOVC A A,A+DPTR A+DPTR ;A(A+DPTR) A(A+DPTR) 查表范圍為查表范圍為 64KB 64KB 程序存儲(chǔ)器恣意空間,稱為遠(yuǎn)程程序存儲(chǔ)器恣意空間,稱為遠(yuǎn)程查表指令查表指令 。2 2PCPC為基址存放器為基址存放器MOVCMOVC A A,A+PCA+PC;
39、 PC PCPCPC+1 +1 , A(A+PC)A(A+PC)常數(shù)表只能在查表指令后常數(shù)表只能在查表指令后256B256B范圍內(nèi)。范圍內(nèi)。例:查表法求例:查表法求Y=X2Y=X2。設(shè)。設(shè)X(0X15)X(0X15)在片內(nèi)在片內(nèi)RAMRAM的的20H20H單單元中,要求將查表求元中,要求將查表求Y Y,存入片內(nèi),存入片內(nèi)RAM21HRAM21H單元。單元。1 1ORG 1000HORG 1000HSQU:SQU: MOV DPTRMOV DPTR,#TAB#TAB ;確定表首地址基地址;確定表首地址基地址MOV AMOV A,20H20H;?。蝗 X偏移量偏移量MOVC AMOVC A,A+
40、DPTRA+DPTR ;查表求;查表求Y=X2Y=X2MOV 21HMOV 21H,A A;保管;保管Y YRETRET;子程序終了;子程序終了;其它程序段;其它程序段ORG 3000HORG 3000H;常數(shù)表格首地址;常數(shù)表格首地址TAB:TAB: DB 00DB 00,0101,0404,0909,225225;平方表;平方表2 2指令地址指令地址 源程序源程序 ORG 1000H ORG 1000H ;程序起始地址程序起始地址 1000H 1000H SQU: SQU: MOV A MOV A,20H20H;?。蝗 X 1002H 1002H ADD A ADD A,#3#3 ;修正
41、偏移量;修正偏移量 1004H 1004H MOVC A MOVC A,A+PC A+PC ;查表;查表求求Y=X2Y=X2 1005H 1005H MOV 21H MOV 21H,A A;存結(jié);存結(jié)果果 1007H 1007H RET RET ;子程;子程序終了序終了 1008H 1008H TAB: TAB: DB 00 DB 00,0101,04 04 ;平方;平方表表 100BH 100BH DB 09 DB 09,225 225 思索題:當(dāng)思索題:當(dāng)0X2550X255時(shí),如何用查表法編程求時(shí),如何用查表法編程求Y=X2Y=X2。例:查表法求例:查表法求Y=X2Y=X2。設(shè)。設(shè)X(0
42、X15)X(0X15)在片內(nèi)在片內(nèi)RAMRAM的的20H20H單單元中,要求將查表求元中,要求將查表求Y Y,存入片內(nèi),存入片內(nèi)RAM21HRAM21H單元。單元。習(xí)題:找出指令錯(cuò)誤并矯正:習(xí)題:找出指令錯(cuò)誤并矯正:1 1MOV AMOV A,#1000H#1000H;A1000HA1000H2 2MOVX AMOVX A,1000H1000H;A(1000H)A(1000H)片外片外RAMRAM3 3MOVC AMOVC A,1000H1000H;A(1000H)A(1000H)片外片外ROMROM4 4MOVX 60HMOVX 60H,A A;片外;片外RAM(60H)ARAM(60H)A
43、5 5MOV R0MOV R0,60H60H;片內(nèi);片內(nèi)RAMRAM:(61H)(60H)(61H)(60H) MOV 61H MOV 61H,R0R06. XCH R16. XCH R1,R2R2;R1R2R1R27. MOVX DPTR7. MOVX DPTR,#2000H#2000H;DPTR2000HDPTR2000H8. MOVX 60H8. MOVX 60H,DPTRDPTR;片內(nèi);片內(nèi)RAMRAM片外片外RAMRAM與數(shù)據(jù)傳送指令不同,多數(shù)算術(shù)運(yùn)算指令會(huì)影響與數(shù)據(jù)傳送指令不同,多數(shù)算術(shù)運(yùn)算指令會(huì)影響標(biāo)志位的形狀,即標(biāo)志位的形狀,即CPUCPU執(zhí)行算術(shù)運(yùn)算指令后,根據(jù)執(zhí)行算術(shù)運(yùn)算指
44、令后,根據(jù)數(shù)據(jù)操作情況自動(dòng)設(shè)置標(biāo)志位的形狀。數(shù)據(jù)操作情況自動(dòng)設(shè)置標(biāo)志位的形狀。CyACF0RS1RS0OVP1 1CyCy:進(jìn)位標(biāo)志位:進(jìn)位標(biāo)志位保管運(yùn)算后最高位的進(jìn)位保管運(yùn)算后最高位的進(jìn)位/ /借位形狀,當(dāng)有進(jìn)位借位形狀,當(dāng)有進(jìn)位/ /借位,借位,Cy=1Cy=1,否那么,否那么Cy=0Cy=0。2 2ACAC:輔助進(jìn)位標(biāo)志位:輔助進(jìn)位標(biāo)志位保管低半字節(jié)的進(jìn)位保管低半字節(jié)的進(jìn)位/ /借位形狀,當(dāng)借位形狀,當(dāng)D3D3產(chǎn)生進(jìn)位產(chǎn)生進(jìn)位/ /借位,借位,AC=1AC=1,否那么,否那么AC=0AC=0。用于十進(jìn)制調(diào)整。用于十進(jìn)制調(diào)整。3 3OVOV:溢出標(biāo)志位:溢出標(biāo)志位OV=Cy7Cy6OV=C
45、y7Cy6,補(bǔ)碼運(yùn)算產(chǎn)生溢出,補(bǔ)碼運(yùn)算產(chǎn)生溢出OV=1OV=1,否那么,否那么OV=0OV=0。4 4P P:奇偶標(biāo)志位:奇偶標(biāo)志位反映累加器反映累加器A A中數(shù)據(jù)的奇偶性。當(dāng)中數(shù)據(jù)的奇偶性。當(dāng)1 1的個(gè)數(shù)為奇數(shù),的個(gè)數(shù)為奇數(shù),P=1P=1,否那么,否那么P=0P=0。2 2用戶選擇位用戶選擇位( (編程設(shè)置形狀編程設(shè)置形狀) )1 1F0F0:用戶自定義標(biāo)志位。:用戶自定義標(biāo)志位。2 2RS1RS1、RS0RS0: 任務(wù)存放器區(qū)選擇位。任務(wù)存放器區(qū)選擇位。復(fù)位時(shí),復(fù)位時(shí),PSW=00HPSW=00HRS1 RS0 RS1 RS0 任務(wù)存放器任務(wù)存放器 0 0 0 0 0 0區(qū)區(qū) 0 1 1
46、0 1 1區(qū)區(qū) 1 0 2 1 0 2區(qū)區(qū) 1 1 3 1 1 3區(qū)區(qū)例:復(fù)位后,設(shè)置運(yùn)用任務(wù)存放器例:復(fù)位后,設(shè)置運(yùn)用任務(wù)存放器2 2區(qū),其他標(biāo)志位不變。區(qū),其他標(biāo)志位不變。解:解: MOV PSW MOV PSW,# #CyACF0RS1RS0OVP 18H 18H1 1不帶進(jìn)位加法:不帶進(jìn)位加法:ADD AADD A,源操作數(shù),源操作數(shù)ADD A,#DATA ;ADD A,#DATA ;例:例:ADD AADD A,#10H#10HADD A,direct ;ADD A,direct ;例:例:ADD AADD A,10H10HADD A,Rn ;ADD A,Rn ;例:例:ADD AA
47、DD A,R7R7ADD A,Ri ;ADD A,Ri ;例:例:ADD AADD A,R0R03-3-2 3-3-2 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令完成片內(nèi)完成片內(nèi) RAM RAM 和和 A A 中數(shù)據(jù)的加減乘中數(shù)據(jù)的加減乘除運(yùn)算。除運(yùn)算。一加減指令一加減指令1.1.加法指令加法指令用途:將用途:將A A中的值與其后面的值相加,最終結(jié)果否是回到中的值與其后面的值相加,最終結(jié)果否是回到A A中。中。 例:例:MOV AMOV A,#30H#30H ADD A ADD A,#10H#10H那么執(zhí)行完本條指令后,那么執(zhí)行完本條指令后,A A中的值為中的值為40H40H。 ADDADD影響影響CyCy、O
48、VOV、ACAC、P P 例例1 1:A=3BHA=3BH,PSW=0PSW=0,執(zhí)行指令,執(zhí)行指令 ADD A ADD A,#3BH#3BH求:求:A= A= ,Cy= Cy= ,OV= OV= ,AC= AC= ,P= P= ,PSW= PSW= ? 0011 1011 0011 1011 + 0011 1011 + 0011 1011 0111 0110 0111 011076H 0 0 1 176H 0 0 1 101000001= 41HCyACF0RS1RS0OVP加法指令影響加法指令影響PSWPSW中的標(biāo)志位。中的標(biāo)志位。兩個(gè)字節(jié)數(shù)相加時(shí):兩個(gè)字節(jié)數(shù)相加時(shí): 假設(shè)第假設(shè)第7 7位
49、有進(jìn)位,那么位有進(jìn)位,那么CyCy1 1,否那么,否那么CyCy0 0; 假設(shè)第假設(shè)第3 3位有進(jìn)位,那么位有進(jìn)位,那么ACAC1 1,否那么,否那么ACAC0 0; 假設(shè)第假設(shè)第6 6位有進(jìn)位,而第位有進(jìn)位,而第7 7位無(wú)進(jìn)位或第位無(wú)進(jìn)位或第6 6位有無(wú)進(jìn)位而第位有無(wú)進(jìn)位而第7 7位有進(jìn)位表示有符號(hào)數(shù)相位有進(jìn)位表示有符號(hào)數(shù)相加結(jié)果超出表示范圍,那么加結(jié)果超出表示范圍,那么OVOV0 0,否那么,否那么OVOV0 0。假設(shè)以。假設(shè)以J7J7,J6J6表示第表示第7 7,6 6位的進(jìn)位,位的進(jìn)位,那么那么OVOVJ7J6J7J6。相加的和存放在相加的和存放在A A中,假設(shè)結(jié)果中中,假設(shè)結(jié)果中“1
50、“1的的個(gè)數(shù)為奇數(shù)那么個(gè)數(shù)為奇數(shù)那么P P1 1,否那么,否那么P P0 0。 A A= 0 0 0 0 0 1 0 0 = 0 0 0 0 0 1 0 0 + + R1R1= 0 0 0 0 1 0 1 1 = 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 解:執(zhí)行結(jié)果如下:解:執(zhí)行結(jié)果如下:00001111=000001111=0,結(jié)果為偶數(shù)個(gè),結(jié)果為偶數(shù)個(gè)1 1,P P0 0;第三位無(wú)進(jìn)位,第三位無(wú)進(jìn)位,ACAC0 0;J7J6J7J60 0, OV OV0 0;第第7 7位無(wú)進(jìn)位,位無(wú)進(jìn)位,Cy=0Cy=0。 所
51、以指令執(zhí)行后,所以指令執(zhí)行后,A A0FH0FH,R1R10BH0BH,ACAC0 0,P P0 0,OVOV0 0,CyCy0 0。分析:由分析:由CyCy,OVOV可知兩個(gè)加數(shù)看作無(wú)符號(hào)數(shù)時(shí)和沒(méi)有超出范圍,看可知兩個(gè)加數(shù)看作無(wú)符號(hào)數(shù)時(shí)和沒(méi)有超出范圍,看作有符號(hào)數(shù)時(shí)和未溢出。作有符號(hào)數(shù)時(shí)和未溢出。 知知A A=07H=07H, R1R1=0FBH=0FBH;ADD AADD A, R1 R1 ;AAA A+ +R1R1解:執(zhí)行結(jié)果如下:解:執(zhí)行結(jié)果如下: A A =0 0 0 0 0 1 1 1 =0 0 0 0 0 1 1 1 + +R1R1=1 1 1 1 1 0 1 1=1 1 1 1
52、 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 1 100000010=100000010=1,結(jié)果為奇數(shù)個(gè),結(jié)果為奇數(shù)個(gè)1 1,P P1 1;第第3 3位有進(jìn)位,位有進(jìn)位,ACAC1 1;J7J6J7J60 0,OVOV0 0; 第第7 7位有進(jìn)位,位有進(jìn)位, Cy=1 Cy=1。所以指令執(zhí)行后,所以指令執(zhí)行后,A A02H02H,R1R10FBH0FBH,ACAC1 1,P P0 0,OVOV0,C0,C1 1。分析:由分析:由CyCy,OVOV可知兩個(gè)數(shù)看作無(wú)符號(hào)數(shù)時(shí),和超出可知兩個(gè)數(shù)看作無(wú)符號(hào)數(shù)時(shí),和超出八位進(jìn)制數(shù)表示范圍,看作有符號(hào)數(shù)
53、時(shí),和未溢出。八位進(jìn)制數(shù)表示范圍,看作有符號(hào)數(shù)時(shí),和未溢出。 知知 A A=09H=09H,R1R1=7CH=7CH; ADD A ADD A, R1 R1 ;AAA A+ +R1R1解:執(zhí)行結(jié)果如下;解:執(zhí)行結(jié)果如下; A A=0 0 0 0 1 0 0 1 =0 0 0 0 1 0 0 1 + +R1R1=0 1 1 1 1 1 0 0 =0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 110000101=110000101=1, 結(jié)果為奇數(shù)個(gè)結(jié)果為奇數(shù)個(gè)1 1,P P1 1;第第3 3位有進(jìn)位,位有進(jìn)位, AC=1 AC
54、=1;J7J6J7J61 1, OV=1 OV=1;第第7 7位無(wú)進(jìn)位,位無(wú)進(jìn)位, Cy=0 Cy=0。所以指令執(zhí)行結(jié)果為:所以指令執(zhí)行結(jié)果為:A A=85H=85H,R1R1=7CH=7CH,AC=1AC=1,OV=1OV=1,Cy=0Cy=0,P=1P=1。分析:由分析:由CyCy,OVOV可知兩個(gè)加數(shù)看作無(wú)符號(hào)數(shù)時(shí),和未可知兩個(gè)加數(shù)看作無(wú)符號(hào)數(shù)時(shí),和未超出表示范圍;看作有符號(hào)數(shù)時(shí),和溢出。超出表示范圍;看作有符號(hào)數(shù)時(shí),和溢出。 知知A A=87H=87H,R1R1=0F5H=0F5H;ADD AADD A, R1 R1 ; A AA A+ +R1R1解:執(zhí)行結(jié)果如下:解:執(zhí)行結(jié)果如下:
55、A A=1 0 0 0 0 1 1 1 =1 0 0 0 0 1 1 1 + +R1R1=1 1 1 1 0 1 0 1 =1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0 0 01111100=101111100=1,結(jié)果為奇數(shù)個(gè),結(jié)果為奇數(shù)個(gè)1 1,P P1 1;第第3 3位無(wú)進(jìn)位,位無(wú)進(jìn)位,ACAC0 0;J7J6J7J61 1,OVOV1 1;第第7 7位有進(jìn)位,位有進(jìn)位,Cy=1Cy=1。所以指令執(zhí)行結(jié)果為:所以指令執(zhí)行結(jié)果為:A A=7CH=7CH,R1R1=0F5H=0F5H,AC=0AC=0,CyCy1 1,OV
56、OV1 1,P P1 1。分析:由分析:由CyCy,OVOV可知兩個(gè)加數(shù)看作為無(wú)符號(hào)數(shù)時(shí),和超可知兩個(gè)加數(shù)看作為無(wú)符號(hào)數(shù)時(shí),和超出范圍,看作為有符號(hào)數(shù)時(shí),和溢出。出范圍,看作為有符號(hào)數(shù)時(shí),和溢出。下面的標(biāo)題自行練習(xí)下面的標(biāo)題自行練習(xí)MOV 34HMOV 34H,#10H#10HMOV R0MOV R0,#13H#13HMOV AMOV A,34H34HADD AADD A,R0R0MOV R1MOV R1,#34H#34HADD AADD A,R1R1A=16+19=35=23HA=16+19=35=23HA=35+16=51=33HA=35+16=51=33H 練習(xí)練習(xí)設(shè)設(shè)(A)=0C3H,
57、(R0)=0AAH,(A)=0C3H,(R0)=0AAH,執(zhí)行指令執(zhí)行指令A(yù)DD A,R0ADD A,R0 (A) 1100 0011 (A) 1100 0011 +(R0) 1010 1010 +(R0) 1010 1010 0110 1101 0110 1101 1 1 和為和為6DH6DHCY=CY=OV=OV=AC=AC=P=P=1 11 10 01 12 2帶進(jìn)位加法:帶進(jìn)位加法: ADDC A ADDC A,源操作數(shù),源操作數(shù)ADDC AADDC A,RnRnADDC A,directADDC A,directADDC A,RiADDC A,RiADDC A,#dataADDC A
58、,#data用途:將用途:將A A中的值和其后面的值相中的值和其后面的值相加,并且加上進(jìn)位位加,并且加上進(jìn)位位C C中的值。中的值。 例例2 2:A= 9AHA= 9AH,R2= E3HR2= E3H,PSW= 0PSW= 0,執(zhí)行指令,執(zhí)行指令A(yù)DDC AADDC A,R2 R2 后求:后求:A= A= ,Cy= Cy= ,OV= OV= ,AC= AC= ,P= P= ,PSW= PSW= ? 1001 1010 1001 1010 1110 0011 1110 0011 + 0 + 0 1 0111 1101 1 0111 1101ADDC ADDC 影響影響CyCy、OVOV、ACAC
59、、P P7DH 1 1 0 07DH 1 1 0 010000100 = 84HCyACF0RS1RS0OVP例例3 31212設(shè)設(shè)A A=78H=78H,30H30H=0A4H=0A4H,Cy=1Cy=1;試分析指令:試分析指令:ADDC AADDC A, 30H 30H ;AAA A+ +30H30H+Cy+Cy執(zhí)行情況。執(zhí)行情況。 解:解: 執(zhí)行結(jié)果如下:執(zhí)行結(jié)果如下: A A =0 1 1 1 1 0 0 0 =0 1 1 1 1 0 0 0 30H30H=1 0 1 0 0 1 0 0 =1 0 1 0 0 1 0 0 + (Cy)= 1 + (Cy)= 1 0 0 0 1 1 1
60、0 1 0 0 0 1 1 1 0 1 1 1 0 1 1 0 00011101=000011101=0,結(jié)果為奇數(shù)個(gè),結(jié)果為奇數(shù)個(gè)1 1,P P1 1;第第3 3位無(wú)進(jìn)位,位無(wú)進(jìn)位,ACAC0 0;J7J6J7J60 0,OVOV0 0;第第7 7位有進(jìn)位,位有進(jìn)位,CyCy1 1。所以指令執(zhí)行后:所以指令執(zhí)行后:A A=1DH=1DH,30H30H=0A4H=0A4H,AC=0AC=0,OV=0OV=0,Cy=1Cy=1,P=1P=1。闡明:闡明:由于由于5151單片機(jī)是一種單片機(jī)是一種8 8位機(jī),所以只能做位機(jī),所以只能做8 8位的數(shù)學(xué)運(yùn)算,但位的數(shù)學(xué)運(yùn)算,但8 8位運(yùn)位運(yùn)算的范圍只需算
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯節(jié)能改造施工方案
- 手術(shù)室風(fēng)險(xiǎn)評(píng)估與管理制度
- 信息技術(shù)項(xiàng)目勞務(wù)施工方案
- 2024至2030年中國(guó)聚晶拉絲模行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國(guó)真空封裝保鮮機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 駕駛員考核激勵(lì)方案
- 聚苯乙烯泡沫塑料板外墻保溫系統(tǒng)施工方案
- 2024至2030年造牙水項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年中國(guó)PVC磨砂鼠標(biāo)墊行業(yè)投資前景及策略咨詢研究報(bào)告
- 三至六年級(jí)數(shù)學(xué)作業(yè)設(shè)計(jì)實(shí)施方案
- 中國(guó)近代史綱要試題及答案(全套)
- 期中測(cè)試卷(1-3單元)(試題)-2024-2025學(xué)年蘇教版數(shù)學(xué)六年級(jí)上冊(cè)
- 部編版二年級(jí)上冊(cè)-課文一-快樂(lè)讀書(shū)吧:讀讀童話故事-孤獨(dú)的小螃蟹(課件)(共26張課件)
- 大數(shù)據(jù)與人工智能營(yíng)銷智慧樹(shù)知到期末考試答案章節(jié)答案2024年南昌大學(xué)
- 鐵路學(xué)生職業(yè)規(guī)劃書(shū)
- GB/T 31326-2014植物飲料
- 高層次引進(jìn)人才考核表
- 北師大版一年級(jí)上冊(cè)看圖寫(xiě)話范文
- 電氣安裝工程施工進(jìn)度計(jì)劃網(wǎng)絡(luò)圖【完整版】
- 江西省地礦局發(fā)展規(guī)劃(1-28)
- JJF1069-2012全部附錄表格
評(píng)論
0/150
提交評(píng)論