版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第3 3章章 89C5189C51的指令系統(tǒng)的指令系統(tǒng) 本章介紹本章介紹89C5189C51的的匯編語言匯編語言指令系統(tǒng)。指令系統(tǒng)。3.1 3.1 指令系統(tǒng)概述指令系統(tǒng)概述 MCS-51MCS-51的基本指令共的基本指令共111111條條: : 每條指令在程序存儲(chǔ)器每條指令在程序存儲(chǔ)器ROMROM中占據(jù)一定的中占據(jù)一定的空間空間,以字,以字節(jié)為單位。節(jié)為單位。按指令所占的字節(jié)來分:按指令所占的字節(jié)來分: (1) (1) 單字節(jié)單字節(jié)指令指令4949條;條; (2) (2) 雙字節(jié)雙字節(jié)指令指令4545條;條; (3) (3) 三字節(jié)三字節(jié)指令指令1717條。條。每條指令在執(zhí)行時(shí)要花去一定的每
2、條指令在執(zhí)行時(shí)要花去一定的時(shí)間時(shí)間,以機(jī)器周期,以機(jī)器周期為單位。為單位。按指令的執(zhí)行時(shí)間來分按指令的執(zhí)行時(shí)間來分: (1) (1) 1 1個(gè)機(jī)器周期個(gè)機(jī)器周期(1212個(gè)時(shí)鐘振蕩周期)指令個(gè)時(shí)鐘振蕩周期)指令6464條條 (2) (2) 2 2個(gè)機(jī)器周期個(gè)機(jī)器周期(2424個(gè)時(shí)鐘振蕩周期)指令個(gè)時(shí)鐘振蕩周期)指令4545條條 (3) (3) 4 4個(gè)機(jī)器周期個(gè)機(jī)器周期(4848個(gè)時(shí)鐘振蕩周期)個(gè)時(shí)鐘振蕩周期)只有乘、只有乘、 除兩條指令的執(zhí)行時(shí)間。除兩條指令的執(zhí)行時(shí)間。 12MHz12MHz晶振晶振: :機(jī)器周期為機(jī)器周期為1 1 s s。按指令的按指令的功能功能分類,可分為分類,可分為5
3、5大類:大類: 數(shù)據(jù)傳送類(數(shù)據(jù)傳送類(2929條);算術(shù)運(yùn)算類(條);算術(shù)運(yùn)算類(2424條)條) 邏輯運(yùn)算及移位類(邏輯運(yùn)算及移位類(2424);控制轉(zhuǎn)移類();控制轉(zhuǎn)移類(1717條)條) 位操作類(位操作類(1717條)條)標(biāo)號(hào):操作碼標(biāo)號(hào):操作碼 操作數(shù);注釋操作數(shù);注釋 3.2 3.2 指令格式指令格式 兩部分組成,即兩部分組成,即操作碼操作碼和和操作數(shù)操作數(shù)。 操作碼操作碼: :規(guī)定指令進(jìn)行什么操作規(guī)定指令進(jìn)行什么操作 操作數(shù)操作數(shù): :指令操作的對(duì)象指令操作的對(duì)象方括符方括符 表示可選項(xiàng)表示可選項(xiàng)標(biāo)號(hào)代表指令所在地址,標(biāo)號(hào)代表指令所在地址,1-81-8個(gè)字母個(gè)字母/ /數(shù)字,數(shù)
4、字,“: :”結(jié)尾結(jié)尾 標(biāo)號(hào)標(biāo)號(hào):操作碼操作碼 目的操作數(shù)目的操作數(shù),源操作數(shù)源操作數(shù);注釋注釋 START:MOV A,#30H START:MOV A,#30H ; ;將立即數(shù)將立即數(shù)30H30H傳送至傳送至A A中中 MOV DPTR,#5678H MOV DPTR,#5678H ; ;將立即數(shù)將立即數(shù)5678H5678H傳送至傳送至DPTRDPTR 標(biāo)號(hào):指令的符號(hào)地址。標(biāo)號(hào):指令的符號(hào)地址。 用于一段功能程序的識(shí)別標(biāo)記或控制用于一段功能程序的識(shí)別標(biāo)記或控制轉(zhuǎn)移地址。轉(zhuǎn)移地址。指令前的標(biāo)號(hào)代表該指令的地址,指令前的標(biāo)號(hào)代表該指令的地址, 是是用符號(hào)表示的地址用符號(hào)表示的地址。 一般用英
5、文字母和數(shù)字組成。一般用英文字母和數(shù)字組成。 標(biāo)號(hào)必須用冒號(hào)標(biāo)號(hào)必須用冒號(hào)“ :”與操作碼分隔。與操作碼分隔。 操作碼:表示指令的操作功能。操作碼:表示指令的操作功能。 操作碼用助記符表示,操作碼用助記符表示, 它它代表了指令代表了指令的操作功能的操作功能。 操作碼是指令的必需部分,操作碼是指令的必需部分, 是指令的核心,不可缺少。是指令的核心,不可缺少。 操作數(shù):參加操作的數(shù)據(jù)或數(shù)據(jù)地址。操作數(shù):參加操作的數(shù)據(jù)或數(shù)據(jù)地址。 操作數(shù)與操作碼之間用空格分隔,操作數(shù)與操作數(shù)與操作碼之間用空格分隔,操作數(shù)與操作數(shù)之間用逗號(hào)操作數(shù)之間用逗號(hào)“,”分隔。分隔。 操作數(shù)可以是操作數(shù)可以是數(shù)據(jù)數(shù)據(jù),也可以是
6、,也可以是數(shù)據(jù)的地址數(shù)據(jù)的地址、數(shù)據(jù)地址的地址數(shù)據(jù)地址的地址或或操作數(shù)的其他信息操作數(shù)的其他信息。 操作數(shù)可分為目的操作數(shù)和源操作數(shù)。操作數(shù)可分為目的操作數(shù)和源操作數(shù)。 操作數(shù)可用二進(jìn)制數(shù)、十進(jìn)制數(shù)或十六進(jìn)制操作數(shù)可用二進(jìn)制數(shù)、十進(jìn)制數(shù)或十六進(jìn)制數(shù)表示。數(shù)表示。 操作數(shù)的個(gè)數(shù)可以是操作數(shù)的個(gè)數(shù)可以是0 03 3個(gè)。個(gè)。 注釋:指令功能說明。注釋:指令功能說明。 注釋屬于非必需項(xiàng),是為便于閱讀,注釋屬于非必需項(xiàng),是為便于閱讀,對(duì)指令功能作的說明和注解。對(duì)指令功能作的說明和注解。 注釋必須以注釋必須以“;”開始。開始。指令有單字節(jié)指令、雙字節(jié)指令、三字節(jié)不同長指令有單字節(jié)指令、雙字節(jié)指令、三字節(jié)不
7、同長度的指令,格式不同:度的指令,格式不同: (1 1)單字節(jié)指令:)單字節(jié)指令:操作碼、操作數(shù)操作碼、操作數(shù) 同在同在一個(gè)字一個(gè)字節(jié)中節(jié)中。 (2 2)雙字節(jié)指令:)雙字節(jié)指令:操作碼操作碼+ +操作數(shù)。操作數(shù)。 (3 3)三字節(jié)指令:)三字節(jié)指令:操作碼操作碼+ +操作數(shù)操作數(shù)+ +操作數(shù)。操作數(shù)。 3.3 3.3 指令系統(tǒng)的尋址方式指令系統(tǒng)的尋址方式尋址方式尋址方式就是在指令中就是在指令中說明操作數(shù)所在地址說明操作數(shù)所在地址的方法。的方法。共共7 7種種尋址方式。尋址方式。寄存器尋址寄存器尋址直接尋址直接尋址寄存器間接尋址寄存器間接尋址立即尋址立即尋址變址尋址變址尋址( (基址寄存器基址
8、寄存器+ +變址寄存器間接尋址變址寄存器間接尋址) )位尋址位尋址相對(duì)尋址相對(duì)尋址1 1寄存器尋址方式寄存器尋址方式 操作數(shù)在寄存器中操作數(shù)在寄存器中 MOV AMOV A,Rn Rn ;(;(RnRn)A A,n=0n=07 7 表示把寄存器表示把寄存器RnRn的內(nèi)容傳送給累加器的內(nèi)容傳送給累加器A A 尋址范圍:尋址范圍:(1 1)4 4組通用工作寄存區(qū)共組通用工作寄存區(qū)共3232個(gè)工作寄存器。個(gè)工作寄存器。(2 2)部分特殊功能寄存器,例如)部分特殊功能寄存器,例如A A、B B 以及數(shù)據(jù)指以及數(shù)據(jù)指針寄存器針寄存器DPTRDPTR等。等。MOV A,R0 MOV A,R0 ; ;將將R
9、0R0中的數(shù)據(jù)傳送至中的數(shù)據(jù)傳送至A A中中INC AINC AMUL ABMUL AB【例例】這些被尋址寄存器中的內(nèi)容就是操作數(shù)這些被尋址寄存器中的內(nèi)容就是操作數(shù)2 2直接尋址方式直接尋址方式 操作數(shù)直接以單元地址的形式給出:操作數(shù)直接以單元地址的形式給出: MOV AMOV A,40H40H 尋址范圍:尋址范圍: (1) (1) 內(nèi)部內(nèi)部RAMRAM的的128128個(gè)單元個(gè)單元(2) (2) 特殊功能寄存器。除了以單元地址的形式外特殊功能寄存器。除了以單元地址的形式外, ,還還可可用寄存器符號(hào)用寄存器符號(hào)的形式給出。例如:的形式給出。例如: MOV AMOV A,80H80H 與與 MOV
10、 AMOV A,P0P0是等價(jià)的是等價(jià)的。直接尋址是給出操作數(shù)的直接地址。直接尋址是給出操作數(shù)的直接地址。MOV A,3AH MOV A,3AH ;將內(nèi)將內(nèi)RAM 3AHRAM 3AH單元中的數(shù)據(jù)傳送至單元中的數(shù)據(jù)傳送至A A中中MOV A,P0 MOV A,P0 ;將特殊功能寄存器將特殊功能寄存器P0P0口中的數(shù)據(jù)傳送至口中的數(shù)據(jù)傳送至A A中中說明:說明:3AH3AH和和P0P0是以是以directdirect形式出現(xiàn)的直接地址形式出現(xiàn)的直接地址 訪問特殊功能寄存器訪問特殊功能寄存器SFRSFR只能采用直接尋址方式。只能采用直接尋址方式。3. 3. 寄存器間接尋址方式寄存器間接尋址方式 寄
11、存器中存放的是操作數(shù)的地址,寄存器中存放的是操作數(shù)的地址,在寄存器前加在寄存器前加前綴標(biāo)志前綴標(biāo)志“ ” 。訪問訪問內(nèi)部內(nèi)部RAMRAM或或外部外部RAMRAM的低的低256256個(gè)字節(jié)個(gè)字節(jié)時(shí),時(shí),只能采用只能采用R0R0或或R1R1作為作為間址寄存器間址寄存器。例如:。例如: MOV AMOV A,RiRi ;i=0i=0或或1 1 其中其中RiRi中的內(nèi)容為中的內(nèi)容為40H40H,把內(nèi)部,把內(nèi)部RAM40HRAM40H單元內(nèi)容送單元內(nèi)容送A A。尋址范圍:尋址范圍:(1 1)訪問)訪問內(nèi)部內(nèi)部RAMRAM低低128128個(gè)個(gè)單元,其通用形式為單元,其通用形式為RiRi(2 2)對(duì))對(duì)外部
12、外部RAMRAM的的64K64K字節(jié)字節(jié)的間接尋址,例如:的間接尋址,例如: MOVX AMOVX A,DPTRDPTR(3 3)片外數(shù)據(jù)存儲(chǔ)器的低)片外數(shù)據(jù)存儲(chǔ)器的低256256字節(jié)字節(jié) 例如:例如:MOVX AMOVX A,RiRi(4 4)堆棧區(qū))堆棧區(qū) 堆棧操作指令堆棧操作指令PUSHPUSH(壓棧)和(壓棧)和POPPOP(出棧)使用堆棧指針(出棧)使用堆棧指針(SPSP)作間址寄存器)作間址寄存器4 4立即尋址方式立即尋址方式 立即尋址是立即尋址是直接給出操作數(shù)直接給出操作數(shù),操作數(shù)前有立即數(shù)符,操作數(shù)前有立即數(shù)符“ # # ”?!纠緼DD AADD A,#05H #05H ;
13、(A)(A)+(A)(A)+立即數(shù)立即數(shù) 05H05H注意:符號(hào)注意:符號(hào)“# #”表明其后跟的是立即數(shù)表明其后跟的是立即數(shù), , 立即數(shù)立即數(shù)就是數(shù)字量本身。就是數(shù)字量本身。5 5變址尋址變址尋址 ( (基址寄存器加變址寄存器間址尋址方式基址寄存器加變址寄存器間址尋址方式) ) 本尋址方式是以本尋址方式是以DPTRDPTR或或PCPC作基址寄存器,以累加器作基址寄存器,以累加器A A作作為為變址寄存器變址寄存器。例如:例如:指令指令 MOVC AMOVC A,A+DPTRA+DPTR 其中其中A A的原有內(nèi)容為的原有內(nèi)容為05H05H,DPTRDPTR的內(nèi)容為的內(nèi)容為0400H0400H,該
14、指令執(zhí)行的結(jié)果是把程序存儲(chǔ),該指令執(zhí)行的結(jié)果是把程序存儲(chǔ)器器0405H0405H單元的內(nèi)容傳送給單元的內(nèi)容傳送給A A。說明:說明: (1 1)本尋址方式是)本尋址方式是專門針對(duì)程序存儲(chǔ)器專門針對(duì)程序存儲(chǔ)器的尋址方式,尋的尋址方式,尋址范圍可達(dá)到址范圍可達(dá)到64KB64KB。(2 2)本尋址方式的指令只有本尋址方式的指令只有3 3條條:MOVC AMOVC A,A+DPTRA+DPTRMOVC AMOVC A,A+PCA+PCJMP A+DPTRJMP A+DPTR;將位地址;將位地址07H(07H(字節(jié)字節(jié)地址地址20H20H中最高位中最高位) )中的數(shù)據(jù)傳送至進(jìn)中的數(shù)據(jù)傳送至進(jìn)位位位位Cy
15、Cy。6. 6. 位尋址方式位尋址方式 位尋址是對(duì)內(nèi)位尋址是對(duì)內(nèi)RAMRAM和特殊功能寄存器中的可和特殊功能寄存器中的可尋址位進(jìn)行操作的尋址方式。尋址位進(jìn)行操作的尋址方式。MOV C,07HMOV C,07H 指令中直接給出了操作數(shù)所在的位地址。指令中直接給出了操作數(shù)所在的位地址。例:例: CLR P1.0 CLR P1.0 ;(P1.0) 0(P1.0) 0 SETB ACC.7 SETB ACC.7 ;(ACC.7) 1(ACC.7) 1 CPL C CPL C ;( C ) NOT( C )( C ) NOT( C )注意:注意: 1 1)位地址里的數(shù)據(jù)只可能是一個(gè))位地址里的數(shù)據(jù)只可能
16、是一個(gè) 0 0 或或 1 1 2 2)有的位地址十分明確)有的位地址十分明確, ,如如 P1.0, ACC.7P1.0, ACC.7等等, ,有的位有的位地址則地址則“不太明確不太明確”,如:,如: MOV AMOV A,17H ; (A)(17H),17H17H ; (A)(17H),17H是是字節(jié)地址字節(jié)地址 MOV ACC.0MOV ACC.0,17H ;(ACC.0)(17H),17H ;(ACC.0)(17H),這里這里ACC.0 ACC.0 是是位地址位地址所以該指令中的所以該指令中的17H17H是是2222H H單元的第單元的第7 7位位7 7相對(duì)尋址方式相對(duì)尋址方式 在相對(duì)尋址
17、的轉(zhuǎn)移指令中,給出了地址偏移量,以在相對(duì)尋址的轉(zhuǎn)移指令中,給出了地址偏移量,以“relrel”表示,表示,即把即把PCPC的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的地址:的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的地址: 目的地址目的地址= =轉(zhuǎn)移指令所在的地址轉(zhuǎn)移指令所在的地址 + + 轉(zhuǎn)移指令的字節(jié)數(shù)轉(zhuǎn)移指令的字節(jié)數(shù) + + relrel 偏移量偏移量relrel是一帶符號(hào)的是一帶符號(hào)的8 8位二進(jìn)制數(shù)補(bǔ)碼數(shù)位二進(jìn)制數(shù)補(bǔ)碼數(shù)。范圍是:范圍是:128 - +127128 - +127向向地址增加方向地址增加方向最大可轉(zhuǎn)移(最大可轉(zhuǎn)移(127+127+轉(zhuǎn)移指令字節(jié))個(gè)單元地址,轉(zhuǎn)移指令字節(jié))個(gè)單元地
18、址,向向地址減少方向地址減少方向最大可轉(zhuǎn)移(最大可轉(zhuǎn)移(128-128-轉(zhuǎn)移指令字節(jié))個(gè)單元地址。轉(zhuǎn)移指令字節(jié))個(gè)單元地址。 注意:注意:1 1)“當(dāng)前當(dāng)前PCPC值值”指程序中下一條指令所在的首地址,是一指程序中下一條指令所在的首地址,是一個(gè)個(gè)1616位數(shù);位數(shù);2 2)符號(hào))符號(hào)“relrel”表示表示“偏移量偏移量”, ,是一個(gè)帶符號(hào)的單字節(jié)數(shù)是一個(gè)帶符號(hào)的單字節(jié)數(shù), ,范圍是范圍是:-128:-128+127(80H+127(80H7FH)7FH)在實(shí)際編程中,在實(shí)際編程中,“relrel” 通常用標(biāo)號(hào)代替通常用標(biāo)號(hào)代替在實(shí)際編程中,在實(shí)際編程中,“relrel” 通常用標(biāo)號(hào)代替通常用
19、標(biāo)號(hào)代替例:例:SJMP LOOP1SJMP LOOP1例:例:2000H2000H:SJMP 08HSJMP 08H ; 原原PCPC值為值為2000H2000H;執(zhí)行這條指令后的當(dāng)前;執(zhí)行這條指令后的當(dāng)前PCPC值值為為2002H2002H,relrel為為08H08H。2002H+08H=200AH2002H+08H=200AH,轉(zhuǎn)移目的地,轉(zhuǎn)移目的地址為址為200AH200AH,程序就跳轉(zhuǎn)至,程序就跳轉(zhuǎn)至200AH200AH去執(zhí)行了。去執(zhí)行了。右圖為右圖為SJMP 08HSJMP 08H相對(duì)尋址相對(duì)尋址示意圖。示意圖。7 7種尋址方式及尋址空間,見種尋址方式及尋址空間,見表表3-13-
20、1。3.4 89C513.4 89C51指令系統(tǒng)分類介紹指令系統(tǒng)分類介紹111111條指令條指令,按功能分類,可分為下面,按功能分類,可分為下面5 5大類大類: (1 1)數(shù)據(jù)傳送類)數(shù)據(jù)傳送類(28(28條條) ) (2 2)算術(shù)操作類)算術(shù)操作類(24(24條)條) (3 3)邏輯運(yùn)算類)邏輯運(yùn)算類(25(25條條) ) (4 4)控制轉(zhuǎn)移類)控制轉(zhuǎn)移類(17(17條條) ) (5 5)位操作類)位操作類(17(17條條) )指令中符號(hào)的意義指令中符號(hào)的意義: :Rn Rn 當(dāng)前寄存器區(qū)的當(dāng)前寄存器區(qū)的8 8個(gè)工作寄存器個(gè)工作寄存器R0R0R7(n=0R7(n=0 7)7)。Ri Ri 當(dāng)
21、前寄存器區(qū)中可作間接尋址寄存器的當(dāng)前寄存器區(qū)中可作間接尋址寄存器的2 2個(gè)寄存?zhèn)€寄存 器器R0R0、R1(i=0,1)R1(i=0,1)。DirectDirect 直接地址,即直接地址,即8 8位的內(nèi)部位的內(nèi)部RAMRAM或特殊功能寄存或特殊功能寄存 器的器的字節(jié)字節(jié)地址。地址。#data#data 包含在包含在指令中的指令中的8 8位立即數(shù)位立即數(shù)。#data16#data16 包含在包含在指令中的指令中的1616位立即數(shù)位立即數(shù)。relrel 相對(duì)轉(zhuǎn)移指令中的偏移量,為相對(duì)轉(zhuǎn)移指令中的偏移量,為8 8位的帶符號(hào)補(bǔ)位的帶符號(hào)補(bǔ) 碼數(shù)。碼數(shù)。DPTRDPTR 數(shù)據(jù)指針數(shù)據(jù)指針,可用作,可用作1
22、616位的數(shù)據(jù)地址寄存器。位的數(shù)據(jù)地址寄存器。bitbit 內(nèi)部內(nèi)部RAMRAM或特殊功能寄存器中的或特殊功能寄存器中的直接尋址位直接尋址位。C C(或(或CyCy) 進(jìn)位標(biāo)志位或位處理機(jī)中的累加器。進(jìn)位標(biāo)志位或位處理機(jī)中的累加器。addr11addr11 1111位目的地址位目的地址addr16addr16 1616位目的地址位目的地址 間接尋址寄存器前綴,如間接尋址寄存器前綴,如RiRi,A+DPTRA+DPTR(X)(X) X X中的內(nèi)容中的內(nèi)容。(X)(X) 由由X X尋址的單元中的內(nèi)容尋址的單元中的內(nèi)容。 箭頭右邊的內(nèi)容被箭頭左邊的內(nèi)容所取代。箭頭右邊的內(nèi)容被箭頭左邊的內(nèi)容所取代。3
23、.4.1 3.4.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 使用最頻繁使用最頻繁的一類指令的一類指令, ,通用格式:通用格式: MOV MOV , 屬屬“復(fù)制復(fù)制” ,而,而不是不是“搬家搬家”數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令不影響標(biāo)志位不影響標(biāo)志位:CyCy、AcAc和和OVOV,影響奇偶標(biāo)志位影響奇偶標(biāo)志位P P。 1 1以累加器為目的操作數(shù)的指令以累加器為目的操作數(shù)的指令 MOV A,Rn ; (Rn)AMOV A,Rn ; (Rn)A,n=0n=07 7 MOV A,Ri ; (Ri)A,i=0,1MOV A,Ri ; (Ri)A,i=0,1 MOV A,direct ;MOV A,direct
24、;(directdirect)A A MOV A,#data ; #dataAMOV A,#data ; #dataA 例如:例如: MOV A,R6 ;(R6)AMOV A,R6 ;(R6)A,寄存器尋址,寄存器尋址 MOV A,70H ;(70H)AMOV A,70H ;(70H)A,直接尋址,直接尋址 MOV A,R0 ;(R0)AMOV A,R0 ;(R0)A,間接尋址,間接尋址 MOV A,#78H ;78HAMOV A,#78H ;78HA,立即尋址,立即尋址2. 2. 以以RnRn為目的操作數(shù)的指令為目的操作數(shù)的指令 MOV Rn,A ; (A)Rn,n=0MOV Rn,A ;
25、(A)Rn,n=07 7 MOV Rn,direct ; MOV Rn,direct ;(directdirect)Rn,n=0Rn,n=07 7 MOV Rn,#data ; #dataRn,n=0 MOV Rn,#data ; #dataRn,n=07 7 功能:是把源操作數(shù)的內(nèi)容送入當(dāng)前一組工作寄存器區(qū)的功能:是把源操作數(shù)的內(nèi)容送入當(dāng)前一組工作寄存器區(qū)的R0R0R7R7中的某一個(gè)寄存器。中的某一個(gè)寄存器。3.3.以直接地址以直接地址directdirect為目的操作數(shù)的指令為目的操作數(shù)的指令 MOV direct,A ; (A)directMOV direct,A ; (A)direct
26、 MOV direct,Rn;(Rn)direct, n=0 MOV direct,Rn;(Rn)direct, n=07 7 MOV direct1,direct2; MOV direct1,direct2; MOV direct,Ri ; (Ri)direct MOV direct,Ri ; (Ri)direct MOV direct,#data; #datadirect MOV direct,#data; #datadirect 功能:功能:把源操作數(shù)送入直接地址指出的存儲(chǔ)單元。把源操作數(shù)送入直接地址指出的存儲(chǔ)單元。directdirect指指的是內(nèi)部的是內(nèi)部RAMRAM或或SFRSFR
27、的地址。的地址。4.4.以寄存器間接地址為目的操作數(shù)的指令以寄存器間接地址為目的操作數(shù)的指令 MOV Ri,A ;(A)(Ri),i=0,1MOV Ri,A ;(A)(Ri),i=0,1 MOV Ri,direct ; MOV Ri,direct ; (directdirect)(Ri)(Ri) MOV Ri,#data ; #data(Ri) MOV Ri,#data ; #data(Ri)5.165.16位數(shù)傳送指令位數(shù)傳送指令 MOV DPTR,#data16 ; #data16DPTRMOV DPTR,#data16 ; #data16DPTR 唯一的唯一的1616位數(shù)據(jù)的傳送指令位數(shù)
28、據(jù)的傳送指令 , ,立即數(shù)的立即數(shù)的高高8 8位位送入送入DPHDPH,立即數(shù)的,立即數(shù)的低低8 8位位送入送入DPLDPL。6 6堆棧操作指令堆棧操作指令MCS-51MCS-51內(nèi)部內(nèi)部RAMRAM中可以設(shè)定一個(gè)中可以設(shè)定一個(gè)后進(jìn)先出后進(jìn)先出(LIFO-Last In LIFO-Last In First OutFirst Out)的區(qū)域稱作)的區(qū)域稱作堆棧堆棧. .堆棧指針堆棧指針SPSP指出指出堆棧的棧頂位置堆棧的棧頂位置。(1)(1)進(jìn)棧指令進(jìn)棧指令 PUSH directPUSH direct 先將棧指針先將棧指針SPSP加加1 1,然后把,然后把directdirect中的內(nèi)容送到
29、棧指針中的內(nèi)容送到棧指針SPSP指示的內(nèi)部指示的內(nèi)部RAMRAM單元中。單元中。例如:例如: 當(dāng)(當(dāng)(SPSP)=60H,=60H,(A A)=30H,=30H,(B B)=70H=70H時(shí),時(shí),執(zhí)行:執(zhí)行: PUSH ACCPUSH ACC (SP)+1=61HSP,(A)61H (SP)+1=61HSP,(A)61H PUSH BPUSH B; ; (SP)+1=62HSP,(B)62H (SP)+1=62HSP,(B)62H結(jié)果:結(jié)果:(61H)=30H,(62H)=70H,(SP)=62H(61H)=30H,(62H)=70H,(SP)=62H(2)(2)出棧指令出棧指令 POP di
30、rectPOP direct SP SP指示的棧頂(內(nèi)部指示的棧頂(內(nèi)部RAMRAM單元)內(nèi)容送入單元)內(nèi)容送入directdirect字字節(jié)單元中,棧指針節(jié)單元中,棧指針SPSP減減1 1。例如例如: : 當(dāng)當(dāng) (SP)=62H(SP)=62H,(62H)=70H(62H)=70H,(61H)=30H,(61H)=30H, 執(zhí)行:執(zhí)行: POP DPH POP DPH ;(SP)DPH,(SP)-1SP ;(SP)DPH,(SP)-1SP POP DPL POP DPL ;(SP)DPL,(SP)-1SP;(SP)DPL,(SP)-1SP 結(jié)果:結(jié)果:(DPTR)=7030H(DPTR)=7
31、030H,(SP)=60H(SP)=60H7.7.累加器累加器A A與外部數(shù)據(jù)存儲(chǔ)器傳送指令與外部數(shù)據(jù)存儲(chǔ)器傳送指令 MOVX A,DPTR MOVX A,DPTR ;(DPTR)A,;(DPTR)A,讀外部讀外部RAM/IORAM/IO MOVX A,Ri MOVX A,Ri ;(Ri)A,;(Ri)A,讀外部讀外部RAM/IORAM/IO MOVX DPTR,A MOVX DPTR,A;(A)(DPTR),;(A)(DPTR),寫外部寫外部RAM/IORAM/IO MOVX Ri,A MOVX Ri,A ;(A)(Ri),;(A)(Ri),寫外部寫外部RAM/IORAM/IO功能:讀外部功
32、能:讀外部RAMRAM存儲(chǔ)器或存儲(chǔ)器或I/OI/O中的一個(gè)字節(jié),或把中的一個(gè)字節(jié),或把A A中一個(gè)字節(jié)中一個(gè)字節(jié)的數(shù)據(jù)寫到外部的數(shù)據(jù)寫到外部RAMRAM存儲(chǔ)器或存儲(chǔ)器或I/OI/O中。中。 注意:伴隨著注意:伴隨著RDRD* *或或WRWR* *信號(hào)有效。信號(hào)有效。采用采用DPTRDPTR間接尋址,間接尋址,高高8 8位地址(位地址(DPHDPH)由)由P2P2口輸出,低口輸出,低8 8位地址位地址(DPLDPL)由)由P0P0口輸出??谳敵?。采用采用RiRi(i=0,1i=0,1)間接尋址)間接尋址,可尋址片外,可尋址片外RAMRAM的的256256個(gè)單元。個(gè)單元。RiRi內(nèi)內(nèi)容由容由P0P
33、0口輸出??谳敵?。MOVMOV后后 “X X”表示單片機(jī)訪問的是片外表示單片機(jī)訪問的是片外RAMRAM存儲(chǔ)器或存儲(chǔ)器或I/OI/O。8.8.查表指令查表指令 共兩條,用于讀程序存儲(chǔ)器中的數(shù)據(jù)表格的指令,均采用基址寄存器共兩條,用于讀程序存儲(chǔ)器中的數(shù)據(jù)表格的指令,均采用基址寄存器加變址寄存器間接尋址方式。加變址寄存器間接尋址方式。 (1) MOVC A,A+PC(1) MOVC A,A+PC ; ; ;PC+1PC,(A+PC)A;PC+1PC,(A+PC)A以以PCPC作基址寄存器作基址寄存器,A A的內(nèi)容的內(nèi)容作為無符號(hào)整數(shù)和作為無符號(hào)整數(shù)和PCPC中的內(nèi)容(下一條中的內(nèi)容(下一條指令的起始
34、地址)指令的起始地址)相加后得到一個(gè)相加后得到一個(gè)1616位的地址,位的地址,該地址指出的程序該地址指出的程序存儲(chǔ)單元的內(nèi)容送到累加器存儲(chǔ)單元的內(nèi)容送到累加器A A。注意:注意:PSENPSEN* *信號(hào)有效信號(hào)有效。例如例如: : (A)=30H, (A)=30H,執(zhí)行地址執(zhí)行地址1000H1000H處的指令處的指令 1000H1000H: MOVC A,A+PCMOVC A,A+PC 本指令占用一個(gè)字節(jié),執(zhí)行結(jié)果將程序存儲(chǔ)器中本指令占用一個(gè)字節(jié),執(zhí)行結(jié)果將程序存儲(chǔ)器中1031H1031H的內(nèi)容送入的內(nèi)容送入A A。優(yōu)點(diǎn):優(yōu)點(diǎn):不改變特殊功能寄存器及不改變特殊功能寄存器及PCPC的狀態(tài),根據(jù)
35、的狀態(tài),根據(jù)A A的內(nèi)容就可以取出的內(nèi)容就可以取出表格中的常數(shù)。表格中的常數(shù)。缺點(diǎn):缺點(diǎn):表格只能存放表格只能存放在該條查表指令后面在該條查表指令后面的的256256個(gè)個(gè)單元之內(nèi)單元之內(nèi),表格的,表格的大小受到限制,且表格只能被一段程序所利用。大小受到限制,且表格只能被一段程序所利用。(2) MOVC A,A+DPTR ; (2) MOVC A,A+DPTR ; ;(A+DPTR)A;(A+DPTR)A以以DPTRDPTR作為基址寄存器,作為基址寄存器,A A的內(nèi)容作為無符號(hào)數(shù)和的內(nèi)容作為無符號(hào)數(shù)和DPTRDPTR的內(nèi)容的內(nèi)容相加得到一個(gè)相加得到一個(gè)1616位的地址,把由該地址指出的程序存儲(chǔ)器
36、單位的地址,把由該地址指出的程序存儲(chǔ)器單元的內(nèi)容送到累加器元的內(nèi)容送到累加器A. A. 例如例如:(DPTR)=8100H (A)=40H (DPTR)=8100H (A)=40H 執(zhí)行指令執(zhí)行指令 MOVC A,A+DPTRMOVC A,A+DPTR 本指令的本指令的執(zhí)行結(jié)果執(zhí)行結(jié)果只和指針只和指針DPTRDPTR及累加器及累加器A A的內(nèi)容有關(guān),與該的內(nèi)容有關(guān),與該指令存放的地址及常數(shù)表格存放的地址無關(guān),指令存放的地址及常數(shù)表格存放的地址無關(guān),因此表格的大因此表格的大小和位置可以在小和位置可以在64K64K程序存儲(chǔ)器中任意安排程序存儲(chǔ)器中任意安排,一個(gè)表格,一個(gè)表格可為可為各個(gè)程序塊公用。
37、各個(gè)程序塊公用。兩條指令是在兩條指令是在MOVMOV的后面加的后面加C C,“C C”是是CODECODE的第一個(gè)字母,即代的第一個(gè)字母,即代碼的意思。碼的意思。內(nèi)內(nèi)RAMRAM( (包括特殊功能寄存器包括特殊功能寄存器): ): 用用MOVMOV指令傳送;指令傳送;外外RAM: RAM: 用用MOVXMOVX指令傳送;指令傳送;ROM: ROM: 用用MOVCMOVC指令傳送。指令傳送。 三個(gè)不同的存儲(chǔ)空間用三種不同的指令傳送:三個(gè)不同的存儲(chǔ)空間用三種不同的指令傳送:【例例】 按下列要求傳送數(shù)據(jù):設(shè)按下列要求傳送數(shù)據(jù):設(shè)ROM(2000H)=ABHROM(2000H)=ABH (1)ROM
38、2000H (1)ROM 2000H單元數(shù)據(jù)送內(nèi)單元數(shù)據(jù)送內(nèi)RAM 10HRAM 10H單元;單元; 解解(1)(1):MOV DPTR,#2000H ;置基址2000H,DPTR=2000H MOV A,#00H ;置變址0,A=00H MOVC A,A+DPTR ;讀ROM 2000H,A=ABH MOV 10H,A ;存內(nèi)RAM 10H單元, (10H)=ABH(2)R0M 2000H(2)R0M 2000H單元數(shù)據(jù)送外單元數(shù)據(jù)送外RAM 80HRAM 80H單元;單元;解解(2)(2):MOV DPTR,#1FFFH ;置基址1FFFH,DPTR=1FFFH MOV A,#01H ;置
39、變址01H,A=01H MOVC A,A+DPTR ;讀ROM 2000H,A=ABH NOV R0,#80H ;置外RAN間址,R0=80H MOVX R0,A ;寫外RAM 80H,外RAM(80H)=ABH(3)ROM 2000H(3)ROM 2000H單元數(shù)據(jù)送外單元數(shù)據(jù)送外RAM 1000HRAM 1000H單元;單元;解解(3)(3):MOV DPTR,#2000H ;置基址2000H,DPTR=2000H MOV A,#00H ;置變址0,A=00H MOVC A,A+DPTR ;讀ROM 2000H,A=ABH MOV DPH,1OH ;修改外RAN地址,DPTR=1000H
40、MOVX DPTR,A ;寫外RAM 1000H,外 RAM(1000H)=ABH【例例】 已知已知ROMROM中存有中存有0909的平方表,首地址為的平方表,首地址為2000H2000H,試根,試根據(jù)累加器據(jù)累加器A A中的數(shù)值查找對(duì)應(yīng)的平方值,存入內(nèi)中的數(shù)值查找對(duì)應(yīng)的平方值,存入內(nèi)RAM 30HRAM 30H。( (設(shè)設(shè)A=3)A=3) 解:解:若用若用DPTRDPTR作為基址寄存器,可編程如下:作為基址寄存器,可編程如下:1000H1000H:MOV DPTRMOV DPTR,#2000H #2000H ;置;置ROMROM平方表首地址平方表首地址 MOVC AMOVC A,A+DPTR
41、 A+DPTR ;A+2000H=2003H(A+2000H=2003H(設(shè)設(shè)A=3)A=3), ;A=(2003H)=09HA=(2003H)=09H MOV 30H MOV 30H,A A ;平方值存入內(nèi);平方值存入內(nèi)RAM 30HRAM 30H中中 2000H2000H:00H 00H ;平方表:;平方表:0 02 2=0=02001H2001H:01H 01H ; 1 12 2=1 =1 2002H2002H:04H 04H ; 2 22 2=4=42003H2003H:09H 09H ; 3 32 2=9=92004H2004H:10H 10H ; 4 42 2=16=16,16=1
42、0H16=10H 2009H2009H:51H 51H ; 9 92 2=81=81,81=51H81=51H9 9字節(jié)交換指令字節(jié)交換指令 XCH A,RnXCH A,Rn XCH A,directXCH A,direct XCH A,RiXCH A,Ri例如:例如: (A)=80H(A)=80H,(R7)=08H(R7)=08H,(40H)=F0H(40H)=F0H (R0)=30H (R0)=30H,(30H)=OFH(30H)=OFH執(zhí)行下列指令:執(zhí)行下列指令: XCH A,R7 ;(A)XCH A,R7 ;(A)與與(R7)(R7)互換互換 XCH A,40H ;(A)XCH A,4
43、0H ;(A)與與(40H)(40H)互換互換 XCH A,R0 ;(A)XCH A,R0 ;(A)與與(R0)(R0)互換互換 結(jié)果:結(jié)果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H1010半字節(jié)交換指令半字節(jié)交換指令 XCHD A,RiXCHD A,Ri 累加器的低累加器的低4 4位與內(nèi)部位與內(nèi)部RAMRAM低低4 4位交換。例如:位交換。例如: (R0)=60H,(60H)=3EH,(A)=59H(R0)=60H,(60H)=3EH,(A)=59H執(zhí)行完執(zhí)行完 XCHD A,ROXCHD
44、 A,RO 指令指令, ,則則(A)=5EH,(60H)=39H(A)=5EH,(60H)=39H。3.4.2 3.4.2 算術(shù)操作類指令算術(shù)操作類指令 單字節(jié)的加、減、乘、除法指令,都是針對(duì)單字節(jié)的加、減、乘、除法指令,都是針對(duì)8 8位二進(jìn)制無符號(hào)位二進(jìn)制無符號(hào)數(shù)。數(shù)。執(zhí)行的結(jié)果對(duì)執(zhí)行的結(jié)果對(duì)CyCy、AcAc、OVOV 三種標(biāo)志位有影響。三種標(biāo)志位有影響。但增但增1 1和減和減1 1指令不影響上述標(biāo)志。指令不影響上述標(biāo)志。1 1加法指令加法指令,(,(不帶不帶CyCy加法指令加法指令) )(4 4條)條) ADD A,Rn ;(A)+(Rn)AADD A,Rn ;(A)+(Rn)A,n=0
45、n=07 7 ADD A,direct ;(A)+(direct)A ADD A,direct ;(A)+(direct)A ADD A,Ri ;(A)+(Ri)A,i=0,1 ADD A,Ri ;(A)+(Ri)A,i=0,1 ADD A,#data ; (A)+#dataAADD A,#data ; (A)+#dataA 一個(gè)加數(shù)總是來自累加器一個(gè)加數(shù)總是來自累加器A A,而另一個(gè)加數(shù)可由不同的,而另一個(gè)加數(shù)可由不同的尋址方式得到。結(jié)果總是放在尋址方式得到。結(jié)果總是放在A A中。中。使用加法指令時(shí),使用加法指令時(shí),要注意累加器要注意累加器A A中的運(yùn)算結(jié)果對(duì)各個(gè)標(biāo)志中的運(yùn)算結(jié)果對(duì)各個(gè)標(biāo)志位
46、的影響:位的影響:(1 1)如果)如果位位7 7有進(jìn)位有進(jìn)位,則置,則置“1 1”進(jìn)位標(biāo)志進(jìn)位標(biāo)志CyCy,否則清,否則清“0 0”CyCy(2 2)如果)如果位位3 3有進(jìn)位有進(jìn)位,置,置“1 1”輔助進(jìn)位標(biāo)志輔助進(jìn)位標(biāo)志AcAc,否則清,否則清“0 0”AcAc(AcAc為為PSWPSW寄存器中的一位)寄存器中的一位)(3 3)如果位如果位6 6有進(jìn)位,而位有進(jìn)位,而位7 7沒有進(jìn)位,或者位沒有進(jìn)位,或者位7 7有進(jìn)位,而有進(jìn)位,而位位6 6沒有,則溢出標(biāo)志位沒有,則溢出標(biāo)志位OVOV置置“1 1”,否則清,否則清“0 0”O(jiān)VOV。溢出標(biāo)志位溢出標(biāo)志位OVOV的狀態(tài),只有在的狀態(tài),只有在
47、帶符號(hào)數(shù)加法運(yùn)算帶符號(hào)數(shù)加法運(yùn)算時(shí)才有意義時(shí)才有意義。當(dāng)兩個(gè)帶符號(hào)數(shù)相加時(shí),當(dāng)兩個(gè)帶符號(hào)數(shù)相加時(shí),OV=1OV=1,表示加法運(yùn)算表示加法運(yùn)算超出了超出了累加累加器器A A所能表示的帶符號(hào)數(shù)的有效范圍。所能表示的帶符號(hào)數(shù)的有效范圍。MOV A,#74H MOV A,#74H ADD A,#9DH ADD A,#9DH 7 4 0111 0100 7 4 0111 0100 9 D 1001 1101 9 D 1001 1101 1 1 0001 0001 0001 0001結(jié)果結(jié)果:( A )= 11H:( A )= 11H (CY)= 1 (AC)=1 (CY)= 1 (AC)=1 (P)=0
48、 (OV)=0 (P)=0 (OV)=0 + + 例例3-23-2(A)=53H(A)=53H,(R0)=FCH(R0)=FCH,執(zhí)行指令,執(zhí)行指令 ADD A,R0ADD A,R0結(jié)果結(jié)果: (A)=4FH: (A)=4FH,Cy=1Cy=1,Ac=0Ac=0,OV=0OV=0,P=1P=1注意:注意:上面的運(yùn)算中,由于上面的運(yùn)算中,由于位位6 6和和位位7 7同時(shí)有進(jìn)位,所以標(biāo)同時(shí)有進(jìn)位,所以標(biāo)志位志位OV=0OV=0。 例例3-33-3 (A)= 85H,(R0)=20H, (A)= 85H,(R0)=20H,(20H20H)=AFH=AFH,執(zhí)行指令:,執(zhí)行指令: ADD A,R0AD
49、D A,R0 結(jié)果結(jié)果: :(A A)=34H=34H,Cy=1Cy=1,Ac=1Ac=1,OV=1OV=1,P=1P=1注意:注意:由于由于位位7 7有進(jìn)位有進(jìn)位,而,而位位6 6無進(jìn)位無進(jìn)位,所以標(biāo)志位,所以標(biāo)志位OV=1OV=12 2帶進(jìn)位加法指令帶進(jìn)位加法指令標(biāo)志位標(biāo)志位CyCy參加運(yùn)算,因此是三個(gè)數(shù)相加。共參加運(yùn)算,因此是三個(gè)數(shù)相加。共4 4條:條:ADDCADDCA,RnA,Rn;(A)+(Rn)+CA;(A)+(Rn)+CA,n=0n=07 7 ADDCADDCA,directA,direct;(A)+(direct)+CA ;(A)+(direct)+CA ADDCADDCA,
50、Ri A,Ri ;(A)+(Ri)+CA;(A)+(Ri)+CA,i=0,1i=0,1ADDCADDCA,#data A,#data ;(A)+#data+CA;(A)+#data+CA 例例3-3 3-3 (A A)=85H,=85H,(20H20H)=FFH,Cy=1=FFH,Cy=1,執(zhí)行指令:,執(zhí)行指令: ADDC A,20HADDC A,20H結(jié)果為結(jié)果為: :(A A)=85H=85H,Cy=1Cy=1,Ac=1Ac=1,OV=0OV=0,P=1 P=1 (A A中中1 1 的的位數(shù)為奇數(shù))位數(shù)為奇數(shù)) 3 3增增1 1指令指令 5 5條增條增1 1指令:指令: INC AINC
51、A INC Rn ;n=0INC Rn ;n=07 7INC direct INC direct INC Ri ;i=0,1 INC Ri ;i=0,1 INC DPTRINC DPTR 不影響不影響PSWPSW中的任何標(biāo)志中的任何標(biāo)志。 第第5 5條指令條指令I(lǐng)NC DPTRINC DPTR,是,是1616位數(shù)增位數(shù)增1 1指令。指令首先對(duì)低指令。指令首先對(duì)低8 8位指針位指針DPLDPL的內(nèi)容執(zhí)行加的內(nèi)容執(zhí)行加1 1的操作,當(dāng)產(chǎn)生溢出時(shí),就的操作,當(dāng)產(chǎn)生溢出時(shí),就對(duì)對(duì)DPHDPH的內(nèi)容進(jìn)行加的內(nèi)容進(jìn)行加1 1操作,并不影響標(biāo)志操作,并不影響標(biāo)志CyCy的狀態(tài)。的狀態(tài)。4 4十進(jìn)制調(diào)整指令十
52、進(jìn)制調(diào)整指令用于對(duì)用于對(duì)BCDBCD碼十進(jìn)制數(shù)加法運(yùn)算結(jié)果的內(nèi)容修正。碼十進(jìn)制數(shù)加法運(yùn)算結(jié)果的內(nèi)容修正。 指令格式:指令格式: DA ADA A兩個(gè)兩個(gè)BCDBCD碼碼按二進(jìn)制相加按二進(jìn)制相加之后,必須經(jīng)本指令的調(diào)整才能得到之后,必須經(jīng)本指令的調(diào)整才能得到正確的壓縮正確的壓縮BCDBCD碼的和數(shù)。碼的和數(shù)。(1 1)十進(jìn)制調(diào)整問題)十進(jìn)制調(diào)整問題二進(jìn)制數(shù)的加法運(yùn)算原則并不能適用于十進(jìn)制數(shù)的加法運(yùn)算二進(jìn)制數(shù)的加法運(yùn)算原則并不能適用于十進(jìn)制數(shù)的加法運(yùn)算,有時(shí)會(huì)產(chǎn)生錯(cuò)誤結(jié)果。例如:有時(shí)會(huì)產(chǎn)生錯(cuò)誤結(jié)果。例如:(a a)3+6=9 0011+0110=1001 3+6=9 0011+0110=1001
53、運(yùn)算結(jié)果正確運(yùn)算結(jié)果正確(b b)7+8=15 0111+1000=1111 7+8=15 0111+1000=1111 運(yùn)算結(jié)果不正確運(yùn)算結(jié)果不正確(c c)9+8=17 1001+1000=00001 C=1 9+8=17 1001+1000=00001 C=1 結(jié)果不正確結(jié)果不正確二進(jìn)制數(shù)加法指令不能完全適用于二進(jìn)制數(shù)加法指令不能完全適用于BCDBCD碼十進(jìn)制數(shù)的加法運(yùn)算,碼十進(jìn)制數(shù)的加法運(yùn)算,對(duì)結(jié)果作對(duì)結(jié)果作有條件的修正有條件的修正 十進(jìn)制調(diào)整十進(jìn)制調(diào)整(2 2)出錯(cuò)原因和調(diào)整方法)出錯(cuò)原因和調(diào)整方法BCDBCD碼只用了了其中的碼只用了了其中的1010個(gè)個(gè),6 6個(gè)沒用到的編碼個(gè)沒用到
54、的編碼。(10101010,10111011,11001100,11011101,11101110,11111111)為為無效碼無效碼 凡結(jié)果凡結(jié)果進(jìn)入進(jìn)入或者或者跳過跳過無效碼編碼區(qū)無效碼編碼區(qū)時(shí),其結(jié)果就是錯(cuò)誤的。時(shí),其結(jié)果就是錯(cuò)誤的。調(diào)整的方法是把結(jié)果加調(diào)整的方法是把結(jié)果加6 6調(diào)整調(diào)整,即所謂十進(jìn)制調(diào)整修正。,即所謂十進(jìn)制調(diào)整修正。修正方法應(yīng)是:修正方法應(yīng)是:(a a)累加器低累加器低4 4位位大于大于9 9或輔助進(jìn)位位或輔助進(jìn)位位Ac=1Ac=1,則進(jìn)行低,則進(jìn)行低4 4位加位加6 6修正。修正。(b b)累加器高累加器高4 4位位大于大于9 9或進(jìn)位位或進(jìn)位位Cy=1Cy=1,則進(jìn)
55、行高,則進(jìn)行高4 4位加位加6 6修修正。正。(c c)累加器高累加器高4 4位位為為9 9,低低4 4位位大于大于9 9,則高,則高4 4位和低位和低4 4位分別位分別加加6 6修正。修正。是否加是否加6 6是是通過執(zhí)行指令:通過執(zhí)行指令:DA ADA A 來自動(dòng)實(shí)現(xiàn)的來自動(dòng)實(shí)現(xiàn)的 。例例3-43-4 (A A)=56H,=56H,(R5R5)=67H=67H,把它們看作為兩個(gè)壓縮的,把它們看作為兩個(gè)壓縮的BCDBCD數(shù),進(jìn)行數(shù),進(jìn)行BCDBCD數(shù)的加法。執(zhí)行指令:數(shù)的加法。執(zhí)行指令: ADD A,R5ADD A,R5 DA A DA A由于高、低由于高、低4 4位分別大于位分別大于9 9,
56、所以要分別加,所以要分別加6 6進(jìn)行十進(jìn)制調(diào)進(jìn)行十進(jìn)制調(diào)整對(duì)結(jié)果進(jìn)行修正。整對(duì)結(jié)果進(jìn)行修正。結(jié)果為:結(jié)果為: (A A)=23H=23H,Cy=1Cy=1 可見,可見,56+67=12356+67=123,結(jié)果是正確的。,結(jié)果是正確的。若若(A)(A)3 30 0 9 9或或(AC)=1(AC)=1則則(A)(A)3 30 0(A)(A)3 30 06 6; 若若(A)(A)7 74 4 9 9或或(CY)=1(CY)=1則則(A)(A)7 74 4(A)(A)7 74 46 6;例:兩個(gè)十進(jìn)制數(shù)例:兩個(gè)十進(jìn)制數(shù)“6565”與與“5858”相加,根據(jù)常識(shí),相加,根據(jù)常識(shí),顯然其和應(yīng)當(dāng)為顯然其和
57、應(yīng)當(dāng)為“123123”。MOV A,#65H MOV A,#65H ADD A,#58H ADD A,#58H DA ADA A結(jié)果結(jié)果:(A)= 23H:(A)= 23H (CY)= 1 (CY)= 1指令指令 “DA ADA A” 完成的操作完成的操作: 6 5 0110 01016 5 0110 0101 5 8 0101 1000 5 8 0101 1000 + +1 13 31818 19192 26 6 0110 01106 6 0110 0110若若(A)(A)3 30 0 9 9或或(AC)=1(AC)=1則則(A)(A)3 30 0(A)(A)3 30 06 6; 若若(A)
58、(A)7 74 4 9 9或或(CY)=1(CY)=1則則(A)(A)7 74 4(A)(A)7 74 46 6;又如:兩個(gè)十進(jìn)制數(shù)又如:兩個(gè)十進(jìn)制數(shù)“3939”與與“5858”相加,根據(jù)常相加,根據(jù)常識(shí),顯然其和應(yīng)當(dāng)為識(shí),顯然其和應(yīng)當(dāng)為“9797”。MOV A,#39H MOV A,#39H ADD A,#58H ADD A,#58H DA ADA A結(jié)果結(jié)果:(A)= 97H:(A)= 97H (CY)= 0 (CY)= 0 3 9 0011 10013 9 0011 1001 5 8 0101 1000 5 8 0101 1000 + +0 07 723239 9 6 0110 6 01
59、10指令指令 “DA ADA A” 完成的操作:完成的操作:5 5帶借位的減法指令帶借位的減法指令 4 4條指令條指令: SUBB A,Rn ; SUBB A,Rn ; (A A)- -(RnRn)- CyA- CyA,n=0n=07 7 SUBB A,direct ; SUBB A,direct ; (A A)- -(directdirect)- CyA- CyA SUBB A,Ri; SUBB A,Ri;(A A)- -((Ri)(Ri))- CyA, i=0,1- CyA, i=0,1 SUBB A,#data ; SUBB A,#data ;(A A)-#data - CyA-#dat
60、a - CyA從累加器從累加器A A中的內(nèi)容減去指定的變量和進(jìn)位標(biāo)志中的內(nèi)容減去指定的變量和進(jìn)位標(biāo)志CyCy的值,結(jié)的值,結(jié)果存在累加器果存在累加器A A中。中。如果如果位位7 7需借位需借位則置則置“1 1” Cy Cy,否則清,否則清“0 0”CyCy; 如果如果位位3 3需借位需借位則置則置“1 1”AcAc,否則清,否則清“0 0”AcAc;如果如果位位6 6需借位需借位而而位位7 7不需要借位不需要借位,或者或者位位7 7需借位,需借位,位位6 6不不需借位需借位,則置,則置“1 1”溢出標(biāo)志位溢出標(biāo)志位OVOV,否則清,否則清“0 0”O(jiān)VOV。例例3-53-5 (A A)=C9H
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024小額抵押借款合同
- 特種作業(yè)人員 低壓電工作業(yè) 理論考試練習(xí)卷附答案
- 2024建筑工程機(jī)械設(shè)備租賃合同范本
- 2024業(yè)務(wù)合伙合同范文
- 小學(xué)跨學(xué)科教學(xué)的挑戰(zhàn)與未來的解決方案
- 2024小說改編合同協(xié)議書
- 農(nóng)田灌溉設(shè)施建設(shè)合同
- 人事代理協(xié)議簽訂程序
- 血透室2020第二季度院感考核醫(yī)務(wù)人員手衛(wèi)生規(guī)范(2019版)培訓(xùn)考試
- 工程質(zhì)量檢驗(yàn)監(jiān)測服務(wù)協(xié)議(2024年版)
- 高三英語一輪復(fù)習(xí)七選五深度剖析課件
- 二次結(jié)構(gòu)施工培訓(xùn)
- 中華民族的形成與發(fā)展(原版)
- 樂器租賃市場需求與增長潛力
- 視覺傳達(dá)專業(yè)大學(xué)生職業(yè)規(guī)劃
- 鐵塔基礎(chǔ)施工方案施工方案
- 有機(jī)水稻培訓(xùn)課件
- Zippo-2022原版年冊(cè)(哈雷戴森系列)
- 大學(xué)生職業(yè)生涯規(guī)劃專業(yè)選擇與個(gè)人發(fā)展
- 數(shù)據(jù)分析與挖掘系統(tǒng)服務(wù)合作協(xié)議
- 《血細(xì)胞及其功能》課件
評(píng)論
0/150
提交評(píng)論