版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1西北農林科技大學水利與建筑工程學院第4章
MCS-51指令系統(tǒng)2西北農林科技大學水利與建筑工程學院4.1概述指令:供用戶使用的單片機軟件資源指令系統(tǒng):計算機能執(zhí)行的指令集合,是由硬件廠商定義的單片機使用:機器語言匯編語言
C語言14.1概述4.1.1計算機語言(1)機器語言:是用二進制代碼表示的,能被計算機直接識別和執(zhí)行的一種機器指令的集合。優(yōu)點:靈活、能被計算機直接執(zhí)行、速度快等。
缺點:直觀性差,很容易出錯,通用性很差。(2)匯編語言:是一種用助記符表示的仍然面向機器的計算機語言,又將其稱為符號語言。
優(yōu)點:用符號代替了機器指令代碼,簡化了編程過程,而且助記符與指令代碼一一對應,基本保留了機器語言的靈活性。占用的內存空間少,運行速度快。
14缺點:必須對編寫的程序進行加工和翻譯,才能變成能夠被計算機識別和處理的二進制代碼程序。仍然是面向機器的語言,使用起來還是比較繁瑣費時,通用性差。用匯編語言等非機器語言書寫好的符號程序稱匯編語言源程序。(3)高級語言:與自然語言相近并為計算機所接受和執(zhí)行的計算機語言稱為高級語言,它是面向用戶的語言。優(yōu)點:編程容易,不需要編程者對機器硬件有較好的了解。缺點:執(zhí)行速度比機器語言和匯編語言慢。5西北農林科技大學水利與建筑工程學院指令基本格式
[標號:]操作碼
[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中
MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR方括符[]表示可選項
標號:(1)1-8個字母/數(shù)字組成(以字母開頭),不能用匯編語言中定義的符號,不能重復定義。(2)指令前的標號代表該指令的地址,是用符號表示的地址,用于一段功能程序的識別標記或控制轉移地址。(3)標號必須用冒號“:”與;操作碼分隔。6西北農林科技大學水利與建筑工程學院指令基本格式
[標號:]操作碼
[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中
MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR方括符[]表示可選項
操作碼:表示指令的操作功能。①操作碼用助記符表示,它代表了指令的操作功能。②操作碼是指令的必需部分,是指令的核心,不可缺少。7西北農林科技大學水利與建筑工程學院指令基本格式
[標號:]操作碼
[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中
MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR方括符[]表示可選項
操作數(shù):參加操作的數(shù)據(jù)或數(shù)據(jù)地址。①操作數(shù)可以是數(shù)據(jù),也可以是數(shù)據(jù)的地址、數(shù)據(jù)地址的地址或操作數(shù)的其他信息。②操作數(shù)可分為目的操作數(shù)和源操作數(shù)。③操作數(shù)可用二進制數(shù)、十進制數(shù)或十六進制數(shù)表示。④操作數(shù)的個數(shù)可以是0~3個。⑤操作數(shù)與操作碼之間用空格分隔,操作數(shù)與操作數(shù)之間用逗號“,”分隔。8西北農林科技大學水利與建筑工程學院注釋:指令功能說明。①注釋屬于非必需項,是為便于閱讀而對指令功能作的說明和注解。②注釋必須以“;”開始。分界符:194.1.3操作數(shù)的類型MOVA,#30MOVB,AMOVR0,#40H1)立即數(shù)2)寄存器操作數(shù)3)存儲器操作數(shù)(單元地址)MOVA,20H10西北農林科技大學水利與建筑工程學院4.1.4單片機指令格式
單片機指令長度:變長指令(長度是不定的)
一字節(jié)指令(49條)(1)操作碼和操作數(shù)占一個單元,如:INCDPTR
指令碼:10100011(2)指令的操作數(shù)在寄存器中,而寄存器編碼只需3位2進制,故可擠在一個字節(jié)如:MOVA,Rn
指令碼:11101rrr
(rrr通用寄存器二進制編碼)11西北農林科技大學水利與建筑工程學院
二字節(jié)指令(45條)一個字節(jié)為操作碼,一個字節(jié)為操作數(shù),如MOV20H,R0
三字節(jié)指令(17條)操作碼一個字節(jié),操作數(shù)兩個字節(jié):MOV60H,#2FH
12西北農林科技大學水利與建筑工程學院※每條指令在執(zhí)行時要花去一定的時間,以機器周期為單位。按指令執(zhí)行時間分類:單周期(64條);雙周期(45條);4周期(2條)※
按指令的功能分類,可分為5大類:數(shù)據(jù)傳送類(29條);算術運算類(24條);邏輯運算及移位類(24);控制轉移類(17條);位操作類(17條)13西北農林科技大學水利與建筑工程學院4.1.5常用偽指令單片機匯編語言程序設計中,除了使用指令系統(tǒng)規(guī)定的指令外,還要用到一些偽指令。偽指令又稱指示性指令,具有和指令類似的形式,但匯編時偽指令并不產生可執(zhí)行的目標代碼,只是對匯編過程進行某種控制或提供某些匯編信息。也稱匯編命令或匯編程序控制指令。下面對常用的偽指令作一簡單介紹(P48)。1.匯編起始地址偽指令ORG格式:[標號:]ORG地址表達式
功能:規(guī)定程序塊或數(shù)據(jù)塊存放的起始位置 例如:ORG1000H;表示下面指令MOVA,#20H存放于1000H開始的單元。
MOVA,#20H114一個源程序中,可多次使用ORG指令以規(guī)定不同程序段的起始位置。地址應從小到大順序排列,不允許重疊。例如:
ORG1000H LJMP MAIN
ORG 1200HMAIN: MOV A,30H
1152)END(ENDofassembly)匯編終止命令
功能:用于終止源程序的匯編工作。格式:
[標號:]END一個源程序只能有一個END命令。后面的不予執(zhí)行。1163)DB(DefineByte)定義數(shù)據(jù)字節(jié)命令功能:用于從指定的地址單元開始,在程序存儲器中定義字節(jié)數(shù)據(jù)。例4-1分別從ROM的1000H和1020H單元開始,按順序存放0~9中每個整數(shù)的平方值和字符串“Anapple!”。C語句charsquare[]={0,1,4,9,16,25,36,49,64,81};charstring[]=“Anapple!”;117ORG0000HSTART: NOP ;空操作語句
ORG1000HDATA1: DB 0,1,4,9,16,25,36,49,64,81 ORG1020HDATA2: DB“Anapple!” END118單元地址ROM中的內容單元地址ROM中的內容0FFFH…101FH…1000H00H1020H41H(A)1001H01H1021H6EH(n)1002H04H1022H20H(空格)1003H09H1023H61H(a)1004H10H1024H70H(p)1005H19H1025H70H(p)1006H24H1026H6CH(l)1007H31H1027H65H(e)1008H40H1028H21H(!)1009H51H1029H…19西北農林科技大學水利與建筑工程學院4.定義字數(shù)據(jù)偽指令DW格式:[標號:]DW
字數(shù)據(jù)表 功能:與DB類似,但DW定義的數(shù)據(jù)項為字,包括兩個字節(jié),存放時高位在低單元,低位在高單元。 例如: ORG1000H DATA:DW324AH,3CH
;表示從1000H單元開始的地方存放數(shù)據(jù)32H,4AH,00H,3CH(3CH以字的形式表示為003CH)。單元地址ROM中的內容10FFH…1100H34H1101H78H1102H00H1103H10H1104H0FFH1105H0FFH1109H…ORG1100HDATA2:DW 3478H,10H,-1120
注意:
DB和DW定義的數(shù)表,數(shù)的個數(shù)不得超過80個。如果數(shù)據(jù)的數(shù)目較多時,可使用多個定義命令。在MCS-51程序設計應用中,常以DB定義數(shù)據(jù),以DW定義地址。121(5)DS(DefineStorage)定義存儲區(qū)命令功能:用于從指定地址開始,保留指定數(shù)目的字節(jié)單元為存儲區(qū),供程序運行使用。匯編時對這些單元不賦值。格式:[標號:]DS16位數(shù)表
例: ADDRTABL:DS20
例: ORG8100H DS 08H注意:對MSC-51單片機來說,DB、DW、DS命令只能對程序存儲器使用,不能對數(shù)據(jù)存儲器使用。122例如: X EQU20 Y EQU30 Z EQUX+Y AA EQUR1(6)EQU(Equate)賦值命令功能:用于給字符名稱賦予一個特定值。賦值以后,其值在整個過程中有效。格式:
字符名稱EQU賦值項“賦值項”:可以是常數(shù)、地址、標號或表達式。MOVA,#XMOVA,X123(7)DATA數(shù)據(jù)地址賦值命令格式:字符名稱DATA項功能:與EQU基本類似,但有以下差別。*EQU定義的字符名稱必須先定義后使用,而DATA定義的字符名可以先使用后定義。*用EQU可以把一個匯編符號賦給字符名稱,如上例中的R1,而DATA只能把數(shù)據(jù)賦給字符名。AA EQUR1124(8).BIT位定義命令功能:用于給字符名稱賦以位地址。格式:字符名稱BIT位地址例如:
AAABIT40H BBBBIT 50H
其中“位地址”可以是絕對地址,也可以是符號地址。例如:MOVCy,AAA3.1.3尋址方式指令執(zhí)行是對操作數(shù)而言,只有找到操作數(shù)才能處理,操作數(shù)在指令中可以是其本身,也可是其所在地址,故須確定如何找到操作數(shù),這就是尋址。25西北農林科技大學水利與建筑工程學院我的信在他那!找信②①注:找信是尋找信的“地址”!26西北農林科技大學水利與建筑工程學院退貨(買西裝):到開元找王經(jīng)理退貨到開元找售后服務部門經(jīng)理退貨到賣衣服的店找售后服務經(jīng)理辦公室退貨到買衣服的店找售后服務辦公室聯(lián)系經(jīng)理退貨找12315
找買衣服店長+(下屬分管售后的人)
立即尋址直接尋址寄存器尋址寄存器間接尋址變址尋址相對尋址27西北農林科技大學水利與建筑工程學院1.寄存器尋址方式:操作數(shù)在寄存器時,指定寄存器名稱用來得到操作數(shù)MOVA,Rn
尋址范圍:
*通用寄存器,R0~R7(共32個但每次只能是8個。用PSW中的RS1、RS0控制)
*部分專用寄存器:A、B、DPTP28西北農林科技大學水利與建筑工程學院2.直接尋址(直接給出地址)
操作數(shù)以單元地址形式給出MOVA,3AH
尋址范圍:只有8位,所以只限內部RAM。
(1)低128位單元。
(2)專用寄存器(單元地址、寄存器符號)
(3)位地址空間。
例:MOVA,3AH
29西北農林科技大學水利與建筑工程學院3.立即尋址(標志符號#)操作數(shù)在指令中直接給出。
MOVA,#dataMOVA,#3AH◎都為8位數(shù),但有唯一的16位立即數(shù)。MOVDPTR,#data16◎為了與直接尋址區(qū)別,在立即數(shù)前需加“#”標志。30西北農林科技大學水利與建筑工程學院4.寄存器間接尋址
寄存器尋址方式,但寄存器中不是操作數(shù),而是操作數(shù)的地址。為了區(qū)別寄存器尋址方式,在寄存器前要有@標志。
MOVA,@R0尋址范圍:◎內部RAM低128位,且只能使用R0和R1寄存器。(@Ri.i=0、1)◎外部64K,只能使用DPTR寄存器(16位)。(@DPTR)◎外部RAM的低256單元,也可使用R0和R1寄存器以及DPTR寄存器(MOVX)?!蚨褩2僮饕惨暈榇朔N尋址,SP為寄存器的間接尋址。31西北農林科技大學水利與建筑工程學院5.變址尋址
為了訪問程序寄存器中的數(shù)據(jù)表格,以DPTR和PC為基址,以A為變址寄存器,以基址和變址的和為操作數(shù)地址達到訪問的目的。
MOVCA,@A+DPTR尋址范圍:·只針對程序寄存器進行尋址,尋址范圍可達64K?!ぶ挥?條
MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR·都是1字節(jié)指令32西北農林科技大學水利與建筑工程學院7.相對尋址
為了解決程序轉移而設置的。跳轉指令地址+跳轉指令字節(jié)數(shù)+rel=PC+relrel是帶符號的8位補碼數(shù),尋址范圍-128~+127。目的地址的計算方法:PC+rel轉移指令字節(jié)數(shù)一般為2字節(jié),也有3字節(jié)的。33西北農林科技大學水利與建筑工程學院6.位尋址
以數(shù)據(jù)位進行操作。
MOVC,3AH
尋址范圍:*內部RAM的位尋址區(qū)。單元地址20H~2FH,共16個單元128位。兩種表示方式:位地址,單元地址加位。*專用寄存器可尋址位,共11個寄存器83個位,表示方式:·直接位地址(PSW位5地址為0D5H)·位名稱(F0)、·單元地址加位(0D0H.5)、·專用寄存器符號加位(PSW.5)34西北農林科技大學水利與建筑工程學院3.1.4尋址方式小結
1、變址尋址方式只適用于程序存儲器。
2、內部數(shù)據(jù)存儲器尋址方式較多。
3、外部數(shù)據(jù)存儲器只能使用寄存器間接尋址方式。
MOVXA,@RiMOVXA,@DPTR 4、相對尋址只解決程序轉移問題。
5、兩個操作數(shù),左邊的為目的操作數(shù),右邊為源操作數(shù)。以上都對源操作數(shù)而言,但目的操作數(shù)也存在尋址問題。目的操作數(shù)只有:寄存器尋址、直接尋址、寄存器間接尋址和位尋址4種情況。35西北農林科技大學水利與建筑工程學院3.2指令分類 數(shù)據(jù)傳送29條 算術運算24條 邏輯運算及移位類24條 控制轉移17條 位操作17條36西北農林科技大學水利與建筑工程學院符號含義Rn表示當前選定寄存器組的工作寄存器R0~R7Ri表示作為間接尋址的地址指針R0~R1direct表示8位直接地址#data表示8位立即數(shù),即00H~FFH#data16表示16位立即數(shù),即0000H~FFFFHaddr16表示16位地址,用于64K范圍內尋址addr11表示11位地址,用于2K范圍內尋址direct8位直接地址,可以是內部RAM區(qū)的某一單元或某一專用功能寄存器的地址rel帶符號的8位偏移量(補碼數(shù))(-128~+127)DPTR數(shù)據(jù)指針bit內部RAM位尋址區(qū)的直接尋址位A累加器ACC直接尋址方式的累加器B寄存器BC進位標志位,布爾處理器的累加器或累加位@間接尋址前綴標志(X)X地址單元中的內容/對該位取反((X))將X地址單元中的內容作為地址,該地址單元中的內容←將←后面的內容傳送到前面去37西北農林科技大學水利與建筑工程學院3.2.2數(shù)據(jù)傳送指令數(shù)據(jù)傳送不是搬家,是復制。 目的地址源地址數(shù)據(jù)
源操作數(shù)有:A、Rn、direct、間接寄存器、#data。 目的操作數(shù):A、Rn、direct、間接寄存器。1.內部8位數(shù)據(jù)傳送指令內部8位數(shù)據(jù)傳送指令共15條,主要用于MCS-51單片機內部RAM與寄存器之間的數(shù)據(jù)傳送。指令基本格式:
MOV<目的操作數(shù)>,<源操作數(shù)>
38西北農林科技大學水利與建筑工程學院1)以累加器A為目的地址的傳送指令(4條)注意:以上傳送指令的結果影響程序狀態(tài)字寄存器PSW的P標志。
助記符格式機器碼相應操作指令說明機器周期MOVA,Rn11101rrrARnn=0~7rrr=000~1111MOVA,direct11100101directAdirect1MOVA,@Ri1110011iA(Ri)i=0,11MOVA,#data01110100#dataA#data139西北農林科技大學水利與建筑工程學院例3.1
已知相應單元的內容,請指出每條指令執(zhí)行后相應單元內容的變化。①MOVA,#20H②MOVA,40H③MOVA,R0④MOVA,@R0解:①MOVA,#20H執(zhí)行后A=20H②MOVA,40H執(zhí)行后A=30H③MOVA,R0執(zhí)行后A=50H④MOVA,@R0執(zhí)行后A=10H40西北農林科技大學水利與建筑工程學院助記符格式機器碼(B)相應操作指令說明機器周期MOVRn,A11111rrrRnAN=0~7rrr=000~1111MOVRn,direct10101rrrdirectRndirectN=0~7rrr=000~1112MOVRn,#data01111rrr#dataRn#dataN=0~7rrr=000~11112)以Rn為目的地址的傳送指令(3條)注意:以上傳送指令的結果不影響程序狀態(tài)字寄存器PSW標志。41西北農林科技大學水利與建筑工程學院3)以直接地址為目的地址的傳送指令(5條)注意:以上傳送指令的結果不影響程序狀態(tài)字寄存器PSW標志。助記符格式機器碼(B)相應操作指令說明機器周期MOVdirect,A11111010directdirectA1MOVdirect,Rn10001rrrdirectdirectRnN=0~7rrr=000~1112MOVdirect2,direct110000101direct1direct2direct2direct12MOVdirect,@Ri1000011idirectdirect(Ri)i=0,12MOVdirect,#data01110101direct#datadirect#data242西北農林科技大學水利與建筑工程學院4)以寄存器間接地址為目的地址的傳送指令(3條)注意:以上傳送指令的結果不影響程序狀態(tài)字寄存器PSW標志。助記符格式機器碼(B)相應操作指令說明機器周期MOV@Ri,A1111011i(Ri)Ai=0,11MOV@Ri,direct1110011idirect(Ri)(direct)2MOV@Ri,#data0111010i#data(Ri)#data143西北農林科技大學水利與建筑工程學院例3.2
已知相應單元的內容,請指出下列指令執(zhí)行后各單元內容相應的變化。① MOVA,R6② MOVR7,70H③MOV70H,50H④MOV40H,@R0⑤MOV@R1,#88H解: ①MOVA,R6執(zhí)行后A=30H ②MOVR7,70H執(zhí)行后R7=40H③MOV70H,50H執(zhí)行后(70H)=60H④MOV40H,@R0執(zhí)行后(40H)=60H⑤MOV@R1,#88H執(zhí)行后(66H)=88H44西北農林科技大學水利與建筑工程學院,ARndirect1@RiARndirect2@Ri#dataARndirect2@Ri#dataMOVRnA#datadirect2direct1ARndirect2@Ri#data@RiAdirect2#data源操作數(shù)和目的操作數(shù)不能同時為Rn45西北農林科技大學水利與建筑工程學院
2.16位數(shù)據(jù)傳送指令(1條)注意:以上指令結果不影響程序狀態(tài)字寄存器PSW標志。3.外部數(shù)據(jù)傳送指令(4條)
助記符格式機器碼(B)相應操作指令說明機器周期MOVDPTR,#data1610010000data15~8data7~0(DPTR)#data16把16位常數(shù)裝入數(shù)據(jù)指針246西北農林科技大學水利與建筑工程學院
注意:(1)外部RAM只能通過累加器A進行數(shù)據(jù)傳送。(2)累加器A與外部RAM之間傳送數(shù)據(jù)時只能用間接尋址方式,間接尋址寄存器為DPTR,R0,R1。(3)以上傳送指令結果通常影響程序狀態(tài)字寄存器PSW的P標志。例3.3
把外部數(shù)據(jù)存儲器2040H單元中的數(shù)據(jù)傳送到外部數(shù)據(jù)存儲器2560H單元中去。解:
MOVDPTR,#2040H MOVXA,@DPTR;先將2040H單元的內容傳送到累加器A中
MOVDPTR,#2560H MOVX@DPTR,A;再將累加器A中的內容傳送到2560H單元中47西北農林科技大學水利與建筑工程學院,A@DPTR@RiMOVXA@DPTR@Ri@DPTRA@Ri@DPTRA@RiA48西北農林科技大學水利與建筑工程學院4.程序存儲器數(shù)據(jù)傳送指令(查表專用程序)(2條)
MOVC
注意:(1)用于內部、外部程序存儲器。只能讀、不能寫。(2)以上指令結果影響程序狀態(tài)字寄存器PSW的P標志。(3)一般用于查表操作。查表指令用于查找存放在程序存儲器中的表格,范圍為64k。
(4)一般用符號賦值給DPTR以表明數(shù)據(jù)表的起始地址。【P63,例題3-2】近程查表遠程查表49西北農林科技大學水利與建筑工程學院例3.1用查表法把累加器中的十六進制轉換為ASCII碼,并送回累加器中。查表程序如下:
2000HBA:INCA 2001 MOVCA,@A+PC 2002 RET
2003 DB30H 2004 DB31H 2005 DB32H
…
… 2012 DB46H
如果以上,A中十六進制為00H,加1后為01H,取出MOVC指令后(PC)=2002H,RET一單元,則(A)+(PC)=2003H,將30H送入A中。50西北農林科技大學水利與建筑工程學院5.數(shù)據(jù)交換指令1)字節(jié)交換指令(3條)-Exchange
注意:以上指令結果影響程序狀態(tài)字寄存器PSW的P標志。主要用于內部RAM和A之間。,AXCHdirectRn@RidirectARn@Ri51西北農林科技大學水利與建筑工程學院2)半字節(jié)交換指令(1條)
-exchangelow-orderdigital注意:上面指令結果影響程序狀態(tài)字寄存器PSW的P標志。3)累加器A中高4位和低4位交換(1條)注意:上面指令結果不影響程序狀態(tài)字寄存器PSW標志。
52西北農林科技大學水利與建筑工程學院例題:(R0)=35H,(35H)=0D7H,(A)=82H例3.4
設內部數(shù)據(jù)存儲區(qū)2AH、2BH單元中連續(xù)存放有4個BCD碼,試編寫一程序把這4個BCD碼倒序排序,即:
XCHA,R0XCHA,@R0XCHDA,@R0SWAPA(A)=35H,(R0)=82H(A)=0D7H,(R0)=35H,(35H)=82H(A)=87H,(R0)=35H,(35H)=0D2H(A)=28H53西北農林科技大學水利與建筑工程學院解:
MOVR0,#2AH ;將立即數(shù)2AH傳送到寄存器R0中
MOVA,@R0 ;將2AH單元的內容傳送到累加器A中
SWAPA ;將累加器A中的高4位與低4位交換
MOV@R0,A ;將累加器A的內容傳送到2AH單元中
MOVR1,#2BH MOVA,@R1 ;將2BH單元的內容傳送到累加器A中
SWAPA;將累加器A中的高4位與低4位交換
XCHA,@R0 ;將累加器A中的內容與2AH單元的內容交換
MOV@R1,A ;累加器A的內容傳送到2BH單元54西北農林科技大學水利與建筑工程學院6.堆棧操作指令(2條)注意:(1)堆棧是用戶自己設定的內部RAM中的一塊專用存儲區(qū),使用時一定先設堆棧指針;堆棧指針缺省為SP=07H。(2)堆棧遵循后進先出的原則安排數(shù)據(jù)。(3)堆棧操作必須是字節(jié)操作,且只能直接尋址。將累加器A入棧、出棧指令應寫成:
PUSH/POPACC
或PUSH/POP0E0H(4)堆棧通常用于臨時保護數(shù)據(jù)及子程序調用時保護現(xiàn)場/恢復現(xiàn)場。(5)以上指令結果不影響程序狀態(tài)字寄存器PSW標志。(6)堆棧操作是通過堆棧指示器SP進行的讀寫操作,是以SP為間接寄存器的尋址方式。55西北農林科技大學水利與建筑工程學院例
設堆棧指針為30H,把累加器A和DPTR中的內容壓入,然后根據(jù)需要再把它們彈出,編寫實現(xiàn)該功能的程序段。解:
MOVSP,#30H;設置堆棧指針,SP=30H,為棧底地址
PUSHACC;SP+1→SP,SP=31H,ACC→(SP) PUSHDPH;SP+1→SP,SP=32H,DPH→(SP) PUSHDPL;SP+1→SP,SP=33H,DPL→(SP)
…… POPDPL;(SP)→DPL,SP-1→SP,SP=32H POPDPH;(SP)→DPH,SP-1→SP,SP=31H POPACC ;(SP)→ACC,SP-1→SP,SP=30H56西北農林科技大學水利與建筑工程學院與上面程序區(qū)別解:
MOVSP,#30H;設置堆棧指針,SP=30H,為棧底地址
PUSHDPL;SP+1→SP,SP=31H,DPL→(SP) PUSHDPH;SP+1→SP,SP=32H,DPH→(SP) PUSHACC;SP+1→SP,SP=33H,ACC→(SP)
…… POPDPL;(SP)→DPL,SP-1→SP,SP=32H POPDPH;(SP)→DPH,SP-1→SP,SP=31H POPACC ;(SP)→ACC,SP-1→SP,SP=30H57西北農林科技大學水利與建筑工程學院3.2.3算術運算類指令算術運算都是針對8位無符號數(shù)的。1)加法指令(8條)-Add/Addwithcarry注意:(1)ADD與ADDC的區(qū)別為是否加進位位Cy。(2)指令執(zhí)行結果均在累加器A中。(3)以上指令結果均影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標志。direct58西北農林科技大學水利與建筑工程學院例,將RAM中40H和41H單元分別存放的兩個數(shù)相加,和存放在42H中。
MOV R0,#40H ;RO=40H MOV A,@R0 ;A=(40H) INC RO ;RO=41H ADD A,@RO ;(40H)+(41H) INC RO ;RO=42H MOV @RO,A ;(42H)←(40H)+(41H)準備被加數(shù)準備加數(shù)求和準備和空間59西北農林科技大學水利與建筑工程學院例3.3:被加數(shù)放在內部RAM:20H~22H單元(低位在前),加數(shù)放在內部RAM:2AH~2CH單元(低位在前),和存于:20H~22H單元。
MOVR0,#20H MOVR1,#2AH MOVR7,#03H CLRCLOOP:MOVA,@RO ADDCA,@R1 MOV@R0,A INCR0 INCR1 DJNZR7,LOOP CLRA ADDCA,#OOH;處理進位
MOV@RO,A 處理可能的進位60西北農林科技大學水利與建筑工程學院編寫指令:完成9878H+8934H的運算。分析:32H、31H存9878H,34H、33H存8934H,和放入35H、36H,進位放37H。ORG2000HMOV 31H,#78HMOV 32H,#98HMOV 33H,#34HMOV 34H,#89HMOV A,33HADD A,31HMOV 35H,AMOV A,34HADDC A,32HMOV 36H,AMOV A,#0ADDC A,#0MOV 37H,A61西北農林科技大學水利與建筑工程學院2)減法指令(4條)-subtractwithborrow注意:(1)減法指令中沒有不帶借位的減法指令,在需要無借位操作時,可先將Cy清0(CLRC)。(2)指令執(zhí)行結果均在累加器A中。(3)減法指令結果影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標志。
62西北農林科技大學水利與建筑工程學院3)加1指令(5條)
注意:以上指令結果除了第一個外,其它不影響程序狀態(tài)字寄存器PSW。即使在加1過程中低8位有進位,也是直接進上高8位而不置進位標志CY。例分別指出指令INCR0和INC@R0的執(zhí)行結果。設R0=30H,(30H)=00H。解:INCR0 ;R0+1=30H+1=31H→R0,R0=31H
INC@R0 ;(R0)+1=(30H)+1→(R0),
(30H)=01H,R0中內容不變63西北農林科技大學水利與建筑工程學院4)減1指令(4條)-Decrement/Decrease
注意:以上指令結果除第一項外不影響程序狀態(tài)字寄存器PSW。沒有DPTR減1指令。例題:(A)=0FH;(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH DECA;(A)=0EH DECR7;(R7)=18H DEC30H;(30H)=0FFH DEC@R1;(40H)=0FEH64西北農林科技大學水利與建筑工程學院5)乘法指令(1條)-Mulitply
注意:乘法結果影響程序狀態(tài)字寄存器PSW的OV(積超過0FFH,則置1,否則為0)和Cy(總是清0)以及P標志。例:(A)=50H,(B)=0A0H,MULAB,(A)=00H,(B)=32H,CY=0,OV=1例題:3-10兩乘數(shù)放入40H、41H,乘積放入43H、42H中。
ORG1000HMOVR0,#40HMOVA,@R0INCR0MOVB,@R0MULABINCR0MOV@R0,AINCR0MOV@R0,BEND65西北農林科技大學水利與建筑工程學院6)除法指令(1條)-Divide/Division除法注意:(1)除法結果影響程序狀態(tài)字寄存器PSW的OV(除數(shù)為0,則置1,否則為0)和Cy(總是清0)以及P標志。(2)當除數(shù)為0時結果不能確定。66西北農林科技大學水利與建筑工程學院例題:累加器A中數(shù)0FEH,轉化為3位BCD碼。百位-40H,十位-41H,個位-42H。ORG 2000HMOV A,#0FEHMOV B,#100DIV ABMOV 40H,AMOV A,BMOV B,#10DIV ABMOV 41H,AMOV 42H,BEND此程序廣泛應用于十六進制對十進制轉化中。67西北農林科技大學水利與建筑工程學院7)BCD碼調整指令(1條)-decimalAdjustment
BCD(BinaryCodedDecimal)碼用4位二進制碼表示一位十進制數(shù)的編碼方式。
BCD調整的三種情況:
·A中低4位大于9或輔助進位位AC=1,則進行低4位加6。AA+06H
·A中高4位大于9或CY=1,則進行高4位加6。AA+60H
·A中高4位=9,低4位大于9,則高低4位都加6。AA+66H
注意:(1)BCD碼是用二進制形式表示十進制數(shù),例如十進制數(shù)45,其BCD碼形式為45H。BCD碼只是一種表示形式,與其數(shù)值沒有關系。(2)結果影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標志。68西北農林科技大學水利與建筑工程學院(3)DAA指令將A中的二進制碼自動調整為BCD碼。(4)DAA指令只能跟在ADD或ADDC加法指令后,不適用于減法。(5)該指令結果影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標志。例3.7說明下列指令的執(zhí)行結果。解:MOVA,#05H ;05H→A ADDA,#08H ;05H+08H→A,A=0DH
DAA ;自動調整為BCD碼,A=13H
69西北農林科技大學水利與建筑工程學院編寫指令:完成9878+8934的運算。分析:32H、31H存9878,34H、33H存8934,和放入35H、36H,進位放37H。ORG2000HMOV 31H,#78HMOV 32H,#98HMOV 33H,#34HMOV 34H,#89HMOV A,33HADD A,31HDA AMOV 35H,AMOV A,34HADDC A,32HDA AMOV 36H,AMOV A,#0ADDC A,#0MOV 37H,A70西北農林科技大學水利與建筑工程學院3.2.4邏輯運算及移位類指令(24條)1)邏輯與指令(6條)Andlogic
A*B,注意:(1)以上指令結果通常影響程序狀態(tài)字寄存器PSW的P標志。(2)邏輯與指令通常用于將一個字節(jié)中的指定位清0,其它位不變。71西北農林科技大學水利與建筑工程學院例題:內部ROM的40H單元中有一壓縮BCD碼,編程將其變?yōu)榉菈嚎sBCD碼。且高位42H,低位41H。ORG 2000HMOV 40H,#37HMOV A,40HANL A,#0FHMOV 41H,AMOV A,40HSWAP AANL A,#0FHMOV 42H,ANOPEND72西北農林科技大學水利與建筑工程學院2)邏輯或指令(6條)注意:(1)以上指令結果通常影響程序狀態(tài)字寄存器PSW的P標志。(2)邏輯或指令通常用于將一個字節(jié)中的指定位置1,其余位不變。73西北農林科技大學水利與建筑工程學院3)邏輯異或指令(6條)注意:(1)以上指令結果通常影響程序狀態(tài)字寄存器PSW的P標志。(2)“異或”原則是相同為0,不同為1。可對某些位取反(求反的與1異或,保留的與0相異或)。74西北農林科技大學水利與建筑工程學院例題:當需要只改變數(shù)據(jù)的某幾位,而其他位不變時,不能使用直接傳送方法,只能通過邏輯運算完成,如:將A的低4位傳送到P1口,而P1口高4位保持不變。
MOVRO,A;先暫存A中數(shù)據(jù)以便恢復
ANLA,#0FH;屏蔽高4位(0000++++) ANLP1,#OFOH;屏蔽低4位(****0000) ORLP1,A;P1←(****++++) MOVA,RO4)累加器A清0和取反指令(2條)75西北農林科技大學水利與建筑工程學院5)循環(huán)移位指令(4條)注意:執(zhí)行帶進位的循環(huán)移位指令之前,必須給Cy置位或清0。
移位操作也可看作乘除運算。
76西北農林科技大學水利與建筑工程學院3.2.5控制轉移類指令控制轉移類指令的本質是改變程序計數(shù)器PC的內容,從而改變程序的執(zhí)行方向??刂妻D移指令分為:無條件轉移指令、條件轉移指令和調用/返回指令。1.無條件轉移指令(4條)1)長轉移指令
注意:(1)該指令結果不影響程序狀態(tài)字寄存器PSW。(2)該指令可以轉移到64K中程序存儲器中的任意位置。77西北農林科技大學水利與建筑工程學院2)絕對轉移指令(1條)注意:(1)該指令結果不影響程序狀態(tài)字寄存器PSW。(2)該指令轉移范圍是2K字節(jié)。例3.9
指令KWR:AJMPKWR1的執(zhí)行結果。解:設KWR標號地址=1030H,KWR1標號地址=1100H,該指令執(zhí)行后PC首先加2變?yōu)?032H,然后由1032H的高5位(0001
000000110010)和1100H(00010001
00000000)的低11位拼裝成新的PC值=00010001
00000000B,即程序從1100H開始執(zhí)行。78西北農林科技大學水利與建筑工程學院3)短轉移指令(1條)注意:(1)該指令結果不影響程序狀態(tài)字寄存器PSW。(2)該指令的轉移范圍是以本指令的下一條指令為中心的
-128~+127字節(jié)以內。(3)在實際應用中,LJMP、AJMP和SJMP后面的addr16、addr11或rel都是用標號來代替的,不一定寫出它們的具體地址。如何計算偏移量:向前:Rel=目的地址-(源地址+2)=地址差-2向后:Rel=FFH-(地址差)-2+1=FEH-地址差79西北農林科技大學水利與建筑工程學院4)變址尋址的無條件轉移指令(1條)注意:(1)該指令結果不影響程序狀態(tài)字寄存器PSW。(2)本指令不影響標志位,不改變@A及DPTR中的內容。常用于多分支程序結構中,可在程序運行過程中動態(tài)地決定程序分支走向。80西北農林科技大學水利與建筑工程學院2.條件轉移指令(8條)1)累加器A判0指令(2條)注意:(1)以上指令結果不影響程序狀態(tài)字寄存器PSW。(2)轉移范圍與指令SJMP相同。81西北農林科技大學水利與建筑工程學院2)比較轉移指令(4條)注意:(1)以上指令結果影響程序狀態(tài)字寄存器PSW的Cy標志。(2)轉移范圍與SJMP指令相同。82西北農林科技大學水利與建筑工程學院3)減1非零轉移指令(2條)注意:(1)DJNZ指令通常用于循環(huán)程序中控制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省泰州市姜堰區(qū)2024-2025學年七年級上學期期中地理試題(含答案)
- 數(shù)據(jù)中心項目投資計劃書
- 贛南師范大學《審計學》2021-2022學年第一學期期末試卷
- 2024年電動開顱設備項目投資申請報告代可行性研究報告
- 阜陽師范大學《幼兒歌曲彈唱》2022-2023學年第一學期期末試卷
- 福建師范大學協(xié)和學院《跨國公司經(jīng)營與管理》2021-2022學年第一學期期末試卷
- 《股權轉讓合同》-企業(yè)管理
- 福建師范大學《漆畫人物創(chuàng)作大創(chuàng)作》2023-2024學年第一學期期末試卷
- 醫(yī)美行業(yè)研究框架關注上游高景氣賽道
- 福建師范大學《廣告史》2021-2022學年第一學期期末試卷
- 五年級上冊英語冀教版課件The Story of Nian
- 大學生職業(yè)生涯規(guī)劃完整全套教學課件
- 溝槽支護專項方案
- 丁香醫(yī)生:2022科學飲奶趨勢洞察報告
- 有機肥供貨及售后服務方案(投標專用)
- 扣件式鋼管腳手架風荷載標準值計算
- 八年級語文上冊期中考試卷(附帶答案)
- 輥道窯窯爐設計說明書
- 軍事訓練課程教學設計
- 烽火悠悠亂世悲歌-春望、雁門太守行比較閱讀
- 工程竣工移交單移交甲方物業(yè)
評論
0/150
提交評論