第三章 (匯編)指令系統(tǒng)2014_第1頁
第三章 (匯編)指令系統(tǒng)2014_第2頁
第三章 (匯編)指令系統(tǒng)2014_第3頁
第三章 (匯編)指令系統(tǒng)2014_第4頁
第三章 (匯編)指令系統(tǒng)2014_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章第三章 指令系統(tǒng)指令系統(tǒng)chapter 3 (instruction system)2.2.1 MSC51指令系統(tǒng)的分類指令系統(tǒng)的分類classification of instruction system數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令(片內(nèi)片內(nèi)RAM和和SFR之間之間15,片內(nèi)和片片內(nèi)和片外存儲單元之間外存儲單元之間)28條條(data transfer instruction)2.2 MSC51指令系統(tǒng)指令系統(tǒng)instruction system算術操作指令(算術操作指令(24)arithmetic operation instruction邏輯操作指令和環(huán)移指令(邏輯操作指令和環(huán)移指令(

2、25)logic operation控制轉移指令控制轉移指令(條件,無條件,調(diào)用和返回等指條件,無條件,調(diào)用和返回等指令令)。(17) control transfer instruction布爾操作指令布爾操作指令(17)boolean operation instruction指令中所用符號的說明:指令中所用符號的說明:Rn:當前選中的寄存器區(qū)中的工作寄存器:當前選中的寄存器區(qū)中的工作寄存器R0R7之一之一Ri:當前選中的寄存器區(qū)中可作地址寄存器的:當前選中的寄存器區(qū)中可作地址寄存器的R0、R1之一之一direct:8位的片內(nèi)數(shù)據(jù)存儲單元地址,可以是片內(nèi)的位的片內(nèi)數(shù)據(jù)存儲單元地址,可以是片

3、內(nèi)的RAM地址(地址(0127)專用寄存器的地址,)專用寄存器的地址,I/O端口。端口。#data:8位立即數(shù)位立即數(shù)#data16:16位立即數(shù)位立即數(shù)C:進位標志位(進位標志位(PSW中)中)carry flag bit:寄存器間接尋址符寄存器間接尋址符 如如Ri, DPTR ( register indirect addressing)/:位操作取反,如位操作取反,如/bit尋址方式尋址方式寄存器尋址寄存器尋址 R0R7 ACC、B、CY(位)、(位)、DPTR、AB被尋址寄存器的內(nèi)容就是操作數(shù),如:被尋址寄存器的內(nèi)容就是操作數(shù),如:MOV A,Rn(n=07)表示把表示把Rn的內(nèi)容送的

4、內(nèi)容送A。直接尋址直接尋址 片內(nèi)片內(nèi)RAM及專用寄存器及專用寄存器 片內(nèi)片內(nèi)RAM中可尋址的位中可尋址的位訪問訪問SFR的唯一方法,可用符號地址代替地址,如:的唯一方法,可用符號地址代替地址,如:MOV A,P0與與MOV A,80H等效。等效。微機控制數(shù)據(jù)傳送指令匯總數(shù)據(jù)傳送指令匯總MOV A,RnMOV Rn,AMOV A, RiMOV Ri,AMOV A, dataMOV A, directMOV direct, AMOV Rn, data MOV Ri, data MOV direct, data MOV direct, RnMOV Rn, directMOV direct, RiMO

5、V Ri, directMOV direct, directMOV DPTR, #data16MOVX A, RiMOVX Ri , AMOVX DPTR, AMOVX A , DPTRMOVC A, ADPTRMOVC A, APCXCH A,RnXCH A,RiXCH A,directXCHD A, RiSWAP APOP direct ; ( sp) direct, spsp-1PUSH direct ; (sp )(sp+1), (sp )(direct)5間接尋址間接尋址 片內(nèi)片內(nèi)RAM(R0,R1) 片外片外RAM(R0,R1,DPTR)訪問片內(nèi)訪問片內(nèi)RAM時用時用R0,R1做間

6、址寄存器,訪問片外低做間址寄存器,訪問片外低256B時用時用MOVX指令,當用指令,當用DPTR做間址寄存器時可訪問整做間址寄存器時可訪問整個片外個片外RAM空間。空間。MOV A,R1立即尋址立即尋址(常數(shù)尋址常數(shù)尋址) 程序存儲器程序存儲器操作數(shù)存放在指令中。操作數(shù)存放在指令中。MOV A,#20H基址寄存器加變址寄存器間接尋址基址寄存器加變址寄存器間接尋址 程序存儲器(程序存儲器(A+DPTR、 A +PC)主要用于查表:主要用于查表:MOVC A,A+DPTR寄存器與累加器之間寄存器與累加器之間MOV A,RnMOV Rn,A片內(nèi)片內(nèi)RAM與累加器之間與累加器之間MOV A, RiMO

7、V Ri,A8位立即數(shù)送位立即數(shù)送A MOV A, data2.2.2 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令片內(nèi)片內(nèi)RAM或?qū)S眉拇嫫鲀?nèi)容送累加器:或?qū)S眉拇嫫鲀?nèi)容送累加器: MOV A, direct(當direct為P0P3端口地址時即為讀該端口引腳,相當于8086CPU中的IN指令)累加器內(nèi)容送片內(nèi)累加器內(nèi)容送片內(nèi)RAM或?qū)S眉拇嫫鳎夯驅(qū)S眉拇嫫鳎?MOV direct, A(當direct為P0P3端口地址時即為寫該端口寄存器,相當于8086CPU中的OUT指令)立即數(shù)傳送立即數(shù)傳送MOV Rn, data 送到送到R0R7MOV Ri, data 送到片內(nèi)送到片內(nèi)RAM MOV direct,

8、data 送到片內(nèi)送到片內(nèi)RAM或?qū)S眉拇嫫骰驅(qū)S眉拇嫫?MOV A, 58HMOV 20H, 68HMOV P1, 99HMOV SP, 0EFH MOV B, 18H寄存器內(nèi)容送片內(nèi)寄存器內(nèi)容送片內(nèi)RAM或?qū)S眉拇嫫骰驅(qū)S眉拇嫫?MOV direct, Rn片內(nèi)片內(nèi)RAM或?qū)S眉拇嫫魉图拇嫫骰驅(qū)S眉拇嫫魉图拇嫫鱉OV Rn, direct片內(nèi)片內(nèi)RAM內(nèi)容送片內(nèi)內(nèi)容送片內(nèi)RAM或?qū)S眉拇嫫骰驅(qū)S眉拇嫫?MOV direct, Ri片內(nèi)片內(nèi)RAM或?qū)S眉拇嫫鲀?nèi)容送片內(nèi)或?qū)S眉拇嫫鲀?nèi)容送片內(nèi)RAM MOV Ri, direct片內(nèi)片內(nèi)RAM和專用寄存器之間的傳送和專用寄存器之間的傳送MOV d

9、irect, direct實現(xiàn)片內(nèi)實現(xiàn)片內(nèi)RAM之間,專用寄存器之間,專用寄存器之間,專用寄存器之間,專用寄存器 與片內(nèi)與片內(nèi)RAM之間的傳送。之間的傳送。MOV A, BMOV A, 20HMOV 20H, BMOV 50H, 30H16位立即數(shù)傳送位立即數(shù)傳送MOV DPTR, #data16例例1:將片外:將片外RAM的的30H開始開始16個單元的數(shù)據(jù)塊傳送到片內(nèi)個單元的數(shù)據(jù)塊傳送到片內(nèi)40H開始的位置。開始的位置。 ORG 0100H MOV R0,#30H MOV R1, #40H MOV R3, #10H LOOP:MOV A,R0 MOV R1,A INC R0 INC R1 D

10、JNZ R3,LOOP SJMP $ END微機控制例例2:已知兩個:已知兩個8位無符號乘數(shù)分別放在位無符號乘數(shù)分別放在30H和和31H單元中單元中,編程編程,兩數(shù)之積低兩數(shù)之積低8位放在位放在32H單元單元,高高8位放在位放在33H單元中單元中. ORG 0100H MOV R0,#30H MOV A, R0 INC R0 MOV B, R0 MUL AB INC R0 MOV R0,A INC R0 MOV R0,B SJMP $ END例例3:試編寫程序:試編寫程序: 片內(nèi)片內(nèi)RAM中中DATA為始址的數(shù)據(jù)塊中連續(xù)為始址的數(shù)據(jù)塊中連續(xù)10個無符號數(shù)相加個無符號數(shù)相加,并把和送到并把和送到

11、SUM單元單元. 片外數(shù)據(jù)存儲器(片外數(shù)據(jù)存儲器(I/O)送累加器送累加器MOVX A, Ri累加器內(nèi)容送片外數(shù)據(jù)存儲器(累加器內(nèi)容送片外數(shù)據(jù)存儲器(I/O)MOVX Ri , A累加器的內(nèi)容送片外數(shù)據(jù)存儲器(累加器的內(nèi)容送片外數(shù)據(jù)存儲器(I/O)MOVX DPTR, A片外數(shù)據(jù)存儲器(片外數(shù)據(jù)存儲器(I/O)送累加器送累加器MOVX A , DPTR例例4:外部外部RAM88H單元中有一數(shù)單元中有一數(shù)x,編寫程序把編寫程序把x送到送到外部外部RAM2000H 單元中。(有幾種方法?)單元中。(有幾種方法?)程序存儲器送累加器程序存儲器送累加器MOVC A, ADPTR程序存儲器送累加器程序存

12、儲器送累加器MOVC A, APC用于查存在程序用于查存在程序存儲器的表格存儲器的表格例:例:A A中有一個中有一個0-90-9范圍的數(shù),查表獲得其平范圍的數(shù),查表獲得其平方值方值(P94)(P94)MOV DPTR,#TABMOV DPTR,#TABMOVC A,A+DPTRMOVC A,A+DPTRTAB:DB 0,1,4,9,16,25,36,49,64,81TAB:DB 0,1,4,9,16,25,36,49,64,81 例例5: A中有一個中有一個0-9范圍的數(shù),查表獲得其范圍的數(shù),查表獲得其ASCII值值BCDASC1:MOV DPTR,#TAB MOVC A, A+DPTR RE

13、T TAB: DB 30H 31H 32H 33H 34H 35H 36H 37H 38H 39H 注:表可以存放在程序存儲器注:表可以存放在程序存儲器64KB64KB空間的任何地方空間的任何地方片內(nèi)片內(nèi)8位數(shù)據(jù)交換位數(shù)據(jù)交換XCH A,RnXCH A,RiXCH A,directA中高中高4位與低位與低4位交換位交換(移位指令)移位指令)SWAP A片內(nèi)片內(nèi)RAM低低4位內(nèi)容與位內(nèi)容與A低低4位交換位交換XCHD A, Ri例題例題3.9,3.10片內(nèi)片內(nèi)RAM或?qū)S眉拇嫫鞯膬?nèi)容進?;?qū)S眉拇嫫鞯膬?nèi)容進棧PUSH direct ; (sp )(sp+1), (sp )(direct)棧頂內(nèi)容

14、送片內(nèi)棧頂內(nèi)容送片內(nèi)RAM或?qū)S眉拇嫫骰驅(qū)S眉拇嫫鱌OP direct ; ( sp) direct, spsp-1 設(設(30)=X, (40)=YMOV SP, #70H ;棧低地址為棧低地址為70PUSH 30H ; SP SP+1,71H XPUSH 40H ; SP SP+1,72H YPOP 30H ; 30H Y,SP SP-1=71HPOP 40H ; 40H X,SP SP-1=70H微機控制算術操作指令匯總算術操作指令匯總 ADD A,Rn ADDC A,Rn ADD A,Ri ADDC A,Ri ADD A,direct ADDC A,direct ADD A,#dat

15、a ADDC A,#data INC A INC Rn INC direct INC Ri INC DPTR DA A SUBB A , Rn SUBB A , Ri SUBB A , #data SUBB A , direct DEC A DEC Rn DEC Ri DEC direct MUL AB DIV AB 211. ADD A,Rn ADDC A,Rn ADD A,Ri ADDC A,Ri ADD A,direct ADDC A,direct ADD A,#data ADDC A,#data2. INC A INC Rn INC direct INC Ri INC DPTR十進制調(diào)

16、整十進制調(diào)整DA A2.2.3 算術操作指令算術操作指令例例6 6:M1,M2M1,M2單元中存放兩個單元中存放兩個1616位無符號數(shù)位無符號數(shù)x1,x2(x1,x2(低低8 8位在位在前,高前,高8 8位在后)寫出位在后)寫出x1+x2x1+x2并把結果放在并把結果放在M1M1(低(低8 8位)和位)和M1+1M1+1(高(高8 8位)單元。兩數(shù)之和不會超過位)單元。兩數(shù)之和不會超過1616位。位。微機控制例7 :多字節(jié)無符號數(shù)相加片內(nèi)片內(nèi)RAM30H和和40H有兩個有兩個16字節(jié)數(shù),把它們相加,將字節(jié)數(shù),把它們相加,將結果放于結果放于30H單元開始的位置處。單元開始的位置處。 ORG 01

17、00HMOV R0,#30HMOV R1,#40HMOV R2,#10HCLR CLOOP: MOV A,R0ADDC A,R1MOV R0,AINC R0INC R1DJNZ R2,LOOPEND24累加器的內(nèi)容累加器的內(nèi)容 減寄存器的內(nèi)容和進位標志減寄存器的內(nèi)容和進位標志SUBB A , Rn累加器的內(nèi)容減片內(nèi)累加器的內(nèi)容減片內(nèi)RAM和進位標志和進位標志SUBB A , Ri累加器的內(nèi)容減立即數(shù)和進位標志累加器的內(nèi)容減立即數(shù)和進位標志SUBB A , #data累加器的內(nèi)容減專用寄存器的內(nèi)容或片內(nèi)累加器的內(nèi)容減專用寄存器的內(nèi)容或片內(nèi)RAM的內(nèi)容及的內(nèi)容及進位標志進位標志SUBB A , d

18、irect帶帶 Cy減法指令,與加減法指令,與加1指令指令一樣,第一條指令只對奇偶一樣,第一條指令只對奇偶標志位標志位 P有影響。有影響。減減1指令指令DEC A DEC RnDEC Ri DEC direct乘法指令乘法指令MUL AB :高8位在B,低8位在A 除法指令除法指令DIV AB :無符號A/B,商在A余數(shù)在B微機控制邏輯操作邏輯操作指令匯總指令匯總 ANL A,Rn ANL A,Rn ANL A,data ANL A,direct ANL direct,A ANL direct,data ORL A,Rn ORL A,Rn ORL A,data ORL A,direct ORL

19、 direct,A ORL direct,data XRL A,Rn XRL A,Rn XRL A,data XRL A,direct XRL direct,A XRL direct,data RL A RLC A RR A RRC A CPL A CLR A 272.2.4 邏輯操作指令邏輯與邏輯與 ANL A,Rn ANL A,Rn ANL A,data ANL A,direct ANL direct,A ANL direct,data如:如:ANL P0,A 讀鎖存器讀鎖存器,這種操作是以這種操作是以I/O端口為目的操作數(shù),進行讀修改端口為目的操作數(shù),進行讀修改 寫的操作。寫的操作。邏輯

20、或邏輯或 ORL A,Rn ORL A,Rn ORL A,data ORL A,direct ORL direct,A ORL direct,data異或異或 XRL A,Rn XRL A,Rn XRL A,data XRL A,direct XRL direct,A XRL direct,data移位移位 RL A 循環(huán)左移循環(huán)左移 RLC A 帶進位位的循環(huán)帶進位位的循環(huán)左移左移 RR A 循環(huán)右移循環(huán)右移 RRC A 帶進位位的循環(huán)帶進位位的循環(huán)右移右移累加器求反累加器求反 CPL A 累加器清零累加器清零 CLR A 例:設例:設A=0AAH,P1=0FFH,A=0AAH,P1=0FF

21、H,編程使編程使A A中低中低4 4位,位,送入送入P1P1口低口低4 4位。位。P1P1口高口高4 4位不變位不變ORG 0100HMOV R0, AANL A, #0FHANL P1, #F0HORL P1, AMOV A, R0SJMP $END 用下列語句可否?用下列語句可否?XCHD A , R1例:已知外部例:已知外部RAM的的30H中有一數(shù)中有一數(shù)AAH,使它高使它高4位不變,低位不變,低4位取反,試編出程序位取反,試編出程序ORG 0100HMOV R0, #30HMOVX A, R0XRL A, #0FHMOVX R0, ASJMP $END XYZ+F例:根據(jù)上例:根據(jù)上述

22、邏輯關系述邏輯關系寫出匯編程寫出匯編程序序常用的幾條偽指令常用的幾條偽指令 ORG END EQU DATA(數(shù)據(jù)地址賦值)數(shù)據(jù)地址賦值) DB DW DS(預留幾個單元)預留幾個單元) BIT(位地址賦值)位地址賦值) (JNB TF0, $)微機控制轉移指令匯總轉移指令匯總 ACALL addr 11 AJMP addr 11 LCALL addr 16 LJMP addr16 SJMP rel (相對相對轉移轉移128127) JMP A+DPTR RET RETI JZ rel JNZ rel CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#da

23、ta,rel CJNE Ri,data,rel DJNZ Rn,rel DJNZ direct,rel NOP34絕對調(diào)用:絕對調(diào)用: ACALL addr 112.2.5 轉移指令(含子程序調(diào)用)絕對轉移:絕對轉移: AJMP addr 11長轉移:長轉移: LJMP addr16長調(diào)用:長調(diào)用: LCALL addr 16短轉移:短轉移: SJMP rel (相對轉移128127)間接長轉移:間接長轉移: JMP A+DPTR 子程序返回:子程序返回: RET中斷返回:中斷返回: RETI累加器為零轉移:累加器為零轉移: JZ rel累加器不為零轉移:累加器不為零轉移: JNZ rel累加

24、器內(nèi)容與立即數(shù)不等轉移:累加器內(nèi)容與立即數(shù)不等轉移: CJNE A,#data,rel空操作:空操作: NOP累加器內(nèi)容與片內(nèi)累加器內(nèi)容與片內(nèi)RAM或?qū)S眉拇嫫鲀?nèi)容不等轉移:或?qū)S眉拇嫫鲀?nèi)容不等轉移: CJNE A,direct,rel寄存器內(nèi)容與立即數(shù)不等轉移:寄存器內(nèi)容與立即數(shù)不等轉移: CJNE Rn,#data,rel寄存器內(nèi)容與片內(nèi)寄存器內(nèi)容與片內(nèi)RAM或?qū)S眉拇嫫鲀?nèi)容不等轉移:或?qū)S眉拇嫫鲀?nèi)容不等轉移: CJNE Ri,data,rel寄存器內(nèi)容減寄存器內(nèi)容減1不為零轉移:不為零轉移: DJNZ Rn,rel片內(nèi)片內(nèi)RAM或?qū)S眉拇嫫鲀?nèi)容減或?qū)S眉拇嫫鲀?nèi)容減1不為零轉移:不為零轉移: DJNZ direct,rel微機控制布爾操作匯總布爾操作匯總 MOV C,bit MOV bit,C CLR C SETB C CLR bit SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit JB bit ,rel JNB bit ,rel JC rel JNC rel JBC bit,rel 382.2.6 布爾操作指令位尋址的內(nèi)容送進位位:位尋址的內(nèi)容送進位位: MOV C,bit 清進位標志:清進位標志: CLR C清直接尋址位:清直接尋址位: CLR bit置進位標志:置進

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論