導航:首頁 > 操作系統 > 單片機減號指令

單片機減號指令

發布時間:2022-07-16 11:57:50

單片機指令

一、
1、單片機全稱單片微型計算機,就是將CPU、存儲器、I/O口等集成在一個晶元內
2、設置工作模式,設置是否開中斷,置入計數初值
3、P3.0,RXD(串列輸入)
P3.1,TXD(串列輸出)
P3.2,/INT0(外部中斷0)
P3.3,/INT1(外部中斷1)
P3.4,T0(定時器0外部輸入)
P3.5,T1(定時器1外部輸入)
P3.6,/WR(外部數據存儲器寫選)
P3.7,/RD(外部數據存儲器讀選)
4、SMOD(模式控制寄存器),TCON(定時器控制寄存器),IE(中斷控制寄存器)
5、定址方式就是尋找操作數或操作數地址的方式,MCS-51單片機有七種定址方式:立即數定址,直接定址,間接定址,寄存器定址,寄存器間接定址,變址定址,相對定址
6、8051有五個中斷源:外部中斷0、T0溢出中斷、外部中斷1、T1溢出中斷、串口中斷;其對應的入口地址分別為:0003H,000BH,0013H,001BH,0023H
7、書上講的應該是有21個特殊功能寄存器,PSW的狀態標志位從第7位到第0位分別為:Cy(借位或者進位標志位)、Ac(輔助進位標志位也叫半進位標志位)、F0(由用戶來定義)、RS1、RS0(這兩位合起來定義單片機選用四組通用寄存器中的哪一組)、OV(溢出標志位)、未用、P(奇偶校驗位)
8、定時器/計數器有2種工作方式:定時方式和計數方式,定時方式時一個時鍾周期定時器加1,計數方式時時鍾脈沖為外部信號(引腳P3.4或者P3.5),如果你問的是工作『模式』的話自己網上查一下,很容易找
二、
5、9、10是對的,其它是錯的
三、
1、SP)=41H,(DPTR)=3412
2、(SP)=40H,(DPTR)=3412
3、(SP)=41H,(DPTR)=3413
4、(A)=0FAH,(B)=03H
5、(30H)=0EH
6、這個題目有錯誤,250後面不應該有H吧
沒有的話應該是:約2.5ms 自己再算算
四、
1.將片外RAM 8000H單元的內容傳送到片內RAM 20H單元。
MOV DPTR,#8000H
MOVX A,@DPTR
MOV 20H,A
2.將片外RAM 4000H單元的內容傳送到片內RAM 20H單元。
MOV DPTR,#4000H
MOVX A,@DPTR
MOV 20H,A
3.將片內RAM 50H單元與51H單元的內容交換
MOV A,50H
MOV B,51H
XCH A,B
MOV 50H,A
MOV 51H,B
4.將片內RAM 20H單元的內容傳送到A中
MOV A,20H
5.將片內RAM 60H單元的內容傳送到A中
MOV A,60H
6. 使累加器A的內容高四位取反,低四位清零
CPL A
ANL A,#F0H
7. 使累加器A的內容最四位置1,低四位清零,其餘位保持不變。
是最高位置1嗎??是的話
ORL A,#80H
ANL A,#F0H
8.分別用指令實現下列各小題的要求:
1) T0開中斷(允許中斷),其餘禁止中斷
MOV IE,#82H
2) T1、串列口開中斷(允許中斷),其餘禁止中斷
MOV IE,#92H
3) 全部開中斷
MOV IE #FFH
4) 全部禁止中斷
CLR IE
五、計數初值=65536-(50ms/1us)=15535=3CAFH

② 單片機程序里 帶進位減法怎樣進行十進制調整

51單片機的DA A指令,放在SUBB指令後面,是不起作用的;
必須把SUBB指令變換成ADD指令,才能用DA A指令進行調整。

這里提到了「減法」變換成「加法」,就要借用時鍾「倒撥」變成「正撥」的方法,倒撥15分鍾,和正撥45分鍾,效果相同。15和45就是以60為模的互補的數。
兩位十進制數,是以100為模的,減去60,和加上40,效果是相同的。
100,可以分解,寫成99+1,按照十六進制,可以寫成9AH。

那麼,將A和60相減,程序如下:
MOV R0, A ;保存被減數.
MOV A, #9AH ;100
CLR C
SUBB A, #60H ;減去減數,得到100的補數.
ADD A, R0 ;使用加法即可.
DA A ;調整為BCD數.
;完

③ 關於單片機SUBB帶借位減法指令!

是這樣的。SUBB的每條指令的執行周期為一個周期數。它會對PSW中的標志位Cy、AC、OV產生影響。當減法有借位時,則Cy=1;否則,Cy=0.若低4位向高四位有借位時,AC=1;否則,AC=0;進行減法運算時,最高位與次高位不同時發生借位,則0V=1,否則,0V=0。不知能否幫到你。

④ 單片機SUBB指令有什麼用,減去CY有什麼意義

SUBB指令是減法指令。
在進行多位元組相減的時候,前一位元組相減出現的借位,要減到後一位元組裡面,
Cy就是上次相減時的借位。

⑤ 關於單片機帶借位減法指令

51單片機中帶借位減法指令為:SUBB,使用該指令時一定要首先處理借位Cy,不然容易出錯,得出與理想不一樣的結果。比如:
MOV A,R2
SUBB A,R3
以上指令運行後,將的出不確定的結果,正確的處理方法為:
CLR C
MOV A,R2
SUBB A,R3

⑥ 單片機中能判斷正負數的指令有哪些

一般的單片機中會有狀態標志位,以表徵每次運算得到結果的特徵。一般的,其中會有N標志位,表徵計算結果為負數。以430單片機為例,事實上,當執行CMP R4,#0時,如果R4中儲存的值是正數,那麼N標志位為0,反之N標志位為1。然後我們對N標志位的不同狀態進行相應的跳轉,可以用JN語句。
這是用匯編語言所舉的例子,如果是C語言編程則可直接判斷。例如if(n>0)...即可。
歡迎追問~

⑦ 單片機的基本指令有哪些

不知道你是問的哪種單片機下面給你的是MCS-51的,希望對你有幫助,如有,麻煩採納,謝謝 數據傳送指令共有29條,數據傳送指令一般的操作是把源操作數傳送到目的操作數,指令執行完成後,源操作數不變,目的操作數等於源操作數。如果要求在進行數據傳送時,目的操作數不丟失,則不能用直接傳送指令,而採用交換型的數據傳送指令,數據傳送指令不影響標志C,AC和OV,但可能會對奇偶標志P有影響。

[1]. 以累加器A為目的操作數類指令(4條)
這4條指令的作用是把源操作數指向的內容送到累加器A。有直接、立即數、寄存器和寄存器間接定址方式:

MOV A,data ;(data)→(A) 直接單元地址中的內容送到累加器A
MOV A,#data ;#data→(A) 立即數送到累加器A中
MOV A,Rn ;(Rn)→(A) Rn中的內容送到累加器A中
MOV A,@Ri ;((Ri))→(A) Ri內容指向的地址單元中的內容送到累加器A

[2]. 以寄存器Rn為目的操作數的指令(3條)
這3條指令的功能是把源操作數指定的內容送到所選定的工作寄存器Rn中。有直接、立即和寄存器定址方式:

MOV Rn,data ;(data)→(Rn) 直接定址單元中的內容送到寄存器Rn中
MOV Rn,#data ;#data→(Rn) 立即數直接送到寄存器Rn中
MOV Rn,A ;(A)→(Rn) 累加器A中的內容送到寄存器Rn中

[3]. 以直接地址為目的操作數的指令(5條)
這組指令的功能是把源操作數指定的內容送到由直接地址data所選定的片內RAM中。有直接、立即、寄存器和寄存器間接4種定址方式:

MOV data,data ;(data)→(data) 直接地址單元中的內容送到直接地址單元
MOV data,#data ;#data→(data) 立即數送到直接地址單元
MOV data,A ;(A)→(data) 累加器A中的內容送到直接地址單元
MOV data,Rn ;(Rn)→(data) 寄存器Rn中的內容送到直接地址單元
MOV data,@Ri ;((Ri))→(data) 寄存器Ri中的內容指定的地址單元中數據送到直接地址單元

[4]. 以間接地址為目的操作數的指令(3條)
這組指令的功能是把源操作數指定的內容送到以Ri中的內容為地址的片內RAM中。有直接、立即和寄存器3種定址方式:

MOV @Ri,data ;(data)→((Ri)) 直接地址單元中的內容送到以Ri中的內容為地址的RAM單元
MOV @Ri,#data ;#data→((Ri)) 立即數送到以Ri中的內容為地址的RAM單元
MOV @Ri,A ;(A)→((Ri)) 累加器A中的內容送到以Ri中的內容為地址的RAM單元

[5]. 查表指令(2條)
這組指令的功能是對存放於程序存儲器中的數據表格進行查找傳送,使用變址定址方式:

MOVC A,@A+DPTR ;((A))+(DPTR)→(A) 表格地址單元中的內容送到累加器A中
MOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A) 表格地址單元中的內容送到累加器A中

[6]. 累加器A與片外數據存儲器RAM傳送指令(4條)
這4條指令的作用是累加器A與片外RAM間的數據傳送。使用寄存器定址方式:

MOVX @DPTR,A ;(A)→((DPTR)) 累加器中的內容送到數據指針指向片外RAM地址中
MOVX A, @DPTR ;((DPTR))→(A) 數據指針指向片外RAM地址中的內容送到累加器A中
MOVX A, @Ri ;((Ri))→(A) 寄存器Ri指向片外RAM地址中的內容送到累加器A中
MOVX @Ri,A ;(A)→((Ri)) 累加器中的內容送到寄存器Ri指向片外RAM地址中

[7]. 堆棧操作類指令(2條)
這4類指令的作用是把直接定址單元的內容傳送到堆棧指針SP所指的單元中,以及把SP所指單元的內容送到直接定址單元中。這類指令只有兩條,下述的第一條常稱為入棧操作指令,第二條稱為出棧操作指令。需要指出的是,單片機開機復位後,(SP)默認為07H,但一般都需要重新賦值,設置新的SP首址。入棧的第一個數據必須存放於SP+1所指存儲單元,故實際的堆棧底為SP+1所指的存儲單元。

PUSH data ;(SP)+1→(SP),(data)→(SP) 堆棧指針首先加1,直接定址單元中的數據送到堆棧指針SP所指的單元中
POP data ;(SP)→(data)(SP)-1→(SP), 堆棧指針SP所指的單元數據送到直接定址單元中,堆棧指針SP再進行減1操作

[8]. 交換指令(5條)
這5條指令的功能是把累加器A中的內容與源操作數所指的數據相互交換。

XCH A,Rn ;(A)←→(Rn)累加器與工作寄存器Rn中的內容互換
XCH A,@Ri ;(A)←→((Ri))累加器與工作寄存器Ri所指的存儲單元中的內容互換
XCH A,data ;(A)←→(data)累加器與直接地址單元中的內容互換
XCHD A,@Ri ;(A 3-0 )←→((Ri) 3-0 )累加器與工作寄存器Ri所指的存儲單元中的內容低半位元組互換
SWAP A ;(A 3-0 )←→(A 7-4 )累加器中的內容高低半位元組互換

[9]. 16位數據傳送指令(1條)
這條指令的功能是把16位常數送入數據指針寄存器。

MOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常數的高8位送到DPH,低8位送到DPL

MCS-51算術運算指令

算術運算指令共有24條,算術運算主要是執行加、減、乘、除法四則運算。另外MCS-51指令系統中有相當一部分是進行加、減1操作,BCD碼的運算和調整,我們都歸類為運算指令。雖然MCS-51單片機的算術邏輯單元ALU僅能對8位無符號整數進行運算,但利用進位標志C,則可進行多位元組無符號整數的運算。同時利用溢出標志,還可以對帶符號數進行補碼運算。需要指出的是,除加、減1指令外,這類指令大多數都會對PSW(程序狀態字)有影響。這在使用中應特別注意。

[1]. 加法指令(4條)
這4條指令的作用是把立即數,直接地址、工作寄存器及間接地址內容與累加器A的內容相加,運算結果存在A中。

ADD A,#data ;(A)+#data→(A) 累加器A中的內容與立即數#data相加,結果存在A中
ADD A,data ;(A)+(data)→(A) 累加器A中的內容與直接地址單元中的內容相加,結果存在A中
ADD A,Rn ;(A)+(Rn)→(A) 累加器A中的內容與工作寄存器Rn中的內容相加,結果存在A中
ADD A,@Ri ;(A)+((Ri))→(A) 累加器A中的內容與工作寄存器Ri所指向地址單元中的內容相加,結果存在A中

[2]. 帶進位加法指令(4條)
這4條指令除與[1]功能相同外,在進行加法運算時還需考慮進位問題。

ADDC A,data ;(A)+(data)+(C)→(A) 累加器A中的內容與直接地址單元的內容連同進位位相加,結果存在A中
ADDC A,#data ;(A)+#data +(C)→(A) 累加器A中的內容與立即數連同進位位相加,結果存在A中
ADDC A,Rn ;(A)+Rn+(C)→(A) 累加器A中的內容與工作寄存器Rn中的內容、連同進位位相加,結果存在A中
ADDC A,@Ri ;(A)+((Ri))+(C)→(A) 累加器A中的內容與工作寄存器Ri指向地址單元中的內容、連同進位位相加,結果存在A中

[3]. 帶借位減法指令(4條)
這組指令包含立即數、直接地址、間接地址及工作寄存器與累加器A連同借位位C內容相減,結果送回累加器A中。
這里我們對借位位C的狀態作出說明,在進行減法運算中,CY=1表示有借位,CY=0則無借位。OV=1聲明帶符號數相減時,從一個正數減去一個負數結果為負數,或者從一個負數中減去一個正數結果為正數的錯誤情況。在進行減法運算前,如果不知道借位標志位C的狀態,則應先對CY進行清零操作。

SUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的內容與直接地址單元中的內容、連同借位位相減,結果存在A中
SUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的內容與立即數、連同借位位相減,結果存在A中
SUBB A,Rn ;(A)-(Rn) -(C)→(A) 累加器A中的內容與工作寄存器中的內容、連同借位位相減,結果存在A中
SUBB A,@Ri ;(A)-((Ri)) -(C)→(A) 累加器A中的內容與工作寄存器Ri指向的地址單元中的內容、連同借位位相減,結果存在A中

[4]. 乘法指令(1條)
這個指令的作用是把累加器A和寄存器B中的8位無符號數相乘,所得到的是16位乘積,這個結果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,說明乘積大於FFH,否則OV=0,但進位標志位CY總是等於0。

MUL AB ;(A)×(B)→(A)和(B) 累加器A中的內容與寄存器B中的內容相乘,結果存在A、B中

[5]. 除法指令(1條)
這個指令的作用是把累加器A的8位無符號整數除以寄存器B中的8位無符號整數,所得到的商存在累加器A,而余數存在寄存器B中。除法運算總是使OV和進位標志位CY等於0。如果OV=1,表明寄存器B中的內容為00H,那麼執行結果為不確定值,表示除法有溢出。

DIV AB ;(A)÷(B)→(A)和(B) 累加器A中的內容除以寄存器B中的內容,所得到的商存在累加器A,而余數存在寄存器B中。

[6]. 加1指令(5條)
這5條指令的的功能均為原寄存器的內容加1,結果送回原寄存器。上述提到,加1指令不會對任何標志有影響,如果原寄存器的內容為FFH,執行加1後,結果就會是00H。這組指令共有直接、寄存器、寄存器減間址等定址方式:

INC A ;(A)+1→(A) 累加器A中的內容加1,結果存在A中
INC data ;(data)+1→(data) 直接地址單元中的內容加1,結果送回原地址單元中
INC @Ri ;((Ri))+1→((Ri)) 寄存器的內容指向的地址單元中的內容加1,結果送回原地址單元中
INC Rn ;(Rn)+1→(Rn)寄存器Rn的內容加1,結果送回原地址單元中
INC DPTR ;(DPTR)+1→(DPTR)數據指針的內容加1,結果送回數據指針中

在INC data這條指令中,如果直接地址是I/O,其功能是先讀入I/O鎖存器的內容,然後在CPU進行加1操作,再輸出到I/O上,這就是「讀—修改—寫」操作。

[7]. 減1指令(4條)
這組指令的作用是把所指的寄存器內容減1,結果送回原寄存器,若原寄存器的內容為00H,減1後即為FFH,運算結果不影響任何標志位,這組指令共有直接、寄存器、寄存器間址等定址方式,當直接地址是I/O口鎖存器時,「讀—修改—寫」操作與加1指令類似。

DEC A ;(A)-1→(A)累加器A中的內容減1,結果送回累加器A中
DEC data ;(data)-1→(data)直接地址單元中的內容減1,結果送回直接地址單元中
DEC @Ri ;((Ri))-1→((Ri))寄存器Ri指向的地址單元中的內容減1,結果送回原地址單元中

DEC Rn ;(Rn)-1→(Rn)寄存器Rn中的內容減1,結果送回寄存器Rn中

[8]. 十進制調整指令(1條)
在進行BCD碼運算時,這條指令總是跟在ADD或ADDC指令之後,其功能是將執行加法運算後存於累加器A中的結果進行調整和修正。

DA A

MCS-51邏輯運算及移位指令

邏輯運算和移位指令共有25條,有與、或、異或、求反、左右移位、清0等邏輯操作,有直接、寄存器和寄存器間址等定址方式。這類指令一般不影響程序狀態字(PSW)標志。

[1]. 循環移位指令(4條)
這4條指令的作用是將累加器中的內容循環左或右移一位,後兩條指令是連同進位位CY一起移位。

RL A ;累加器A中的內容左移一位
RR A ;累加器A中的內容右移一位
RLC A ;累加器A中的內容連同進位位CY左移一位
RRC A ;累加器A中的內容連同進位位CY右移一位

[2]. 累加器半位元組交換指令(1條)
這條指令是將累加器中的內容高低半位元組互換,這在上一節中內容已有介紹。

SWAP A ; 累加器中的內容高低半位元組互換

[3]. 求反指令(1條)
這條指令將累加器中的內容按位取反。

CPL A ; 累加器中的內容按位取反

[4]. 清零指令(1條)
這條指令將累加器中的內容清0。

CLR A ; 0→(A),累加器中的內容清0

[5]. 邏輯與操作指令(6條)
這組指令的作用是將兩個單元中的內容執行邏輯與操作。如果直接地址是I/O地址,則為「讀—修改—寫」操作。

ANL A,data ;累加器A中的內容和直接地址單元中的內容執行與邏輯操作。結果存在寄存器A中。
ANL data,#data ;直接地址單元中的內容和立即數執行與邏輯操作。結果存在直接地址單元中。
ANL A,#data ;累加器A的內容和立即數執行與邏輯操作。結果存在累加器A中。
ANL A,Rn ;累加器A的內容和寄存器Rn中的內容執行與邏輯操作。結果存在累加器A中。
ANL data,A ;直接地址單元中的內容和累加器A的內容執行與邏輯操作。結果存在直接地址單元中。
ANL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行與邏輯操作。結果存在累加器A中。

[6]. 邏輯或操作指令(6條)
這組指令的作用是將兩個單元中的內容執行邏輯或操作。如果直接地址是I/O地址,則為「讀—修改—寫」操作。

ORL A,data ;累加器A中的內容和直接地址單元中的內容執行邏輯或操作。結果存在寄存器A中。
ORL data,#data ;直接地址單元中的內容和立即數執行邏輯或操作。結果存在直接地址單元中。
ORL A,#data ;累加器A的內容和立即數執行邏輯或操作。結果存在累加器A中。
ORL A,Rn ;累加器A的內容和寄存器Rn中的內容執行邏輯或操作。結果存在累加器A中。
ORL data,A ;直接地址單元中的內容和累加器A的內容執行邏輯或操作。結果存在直接地址單元中。
ORL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行邏輯或操作。結果存在累加器A中。

[7]. 邏輯異或操作指令(6條)
這組指令的作用是將兩個單元中的內容執行邏輯異或操作。如果直接地址是I/O地址,則為「讀—修改—寫」操作。

XRL A,data ;累加器A中的內容和直接地址單元中的內容執行邏輯異或操作。結果存在寄存器A中。
XRL data,#data ;直接地址單元中的內容和立即數執行邏輯異或操作。結果存在直接地址單元中。
XRL A,#data ;累加器A的內容和立即數執行邏輯異或操作。結果存在累加器A中。
XRL A,Rn ;累加器A的內容和寄存器Rn中的內容執行邏輯異或操作。結果存在累加器A中。
XRL data,A ;直接地址單元中的內容和累加器A的內容執行邏輯異或操作。結果存在直接地址單元中。
XRL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行邏輯異或操作。結果存在累加器A中。

MCS-51控制轉移指令

控制轉移指令用於控製程序的流向,所控制的范圍即為程序存儲器區間,MCS-51系列單片機的控制轉移指令相對豐富,有可對64kB程序空間地址單元進行訪問的長調用、長轉移指令,也有可對2kB位元組進行訪問的絕對調用和絕對轉移指令,還有在一頁范圍內短相對轉移及其它無條件轉移指令,這些指令的執行一般都不會對標志位有影響。

[1]. 無條件轉移指令(4條)
這組指令執行完後,程序就會無條件轉移到指令所指向的地址上去。長轉移指令訪問的程序存儲器空間為16地址64kB,絕對轉移指令訪問的程序存儲器空間為11位地址2kB空間。

LJMP addr16 ;addr16→(PC),給程序計數器賦予新值(16位地址)

AJMP addr11 ;(PC)+2→(PC),addr11→(PC 10-0 )程序計數器賦予新值(11位地址),(PC 15-11 )不改變

SJMP rel ;(PC)+ 2 + rel→(PC)當前程序計數器先加上2再加上偏移量給程序計數器賦予新值

JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址單元的值加上數據指針的值給程序計數器賦予新值

[2]. 條件轉移指令(8條)
程序可利用這組豐富的指令根據當前的條件進行判斷,看是否滿足某種特定的條件,從而控製程序的轉向。

JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的內容為0,則轉移到偏移量所指向的地址,否則程序往下執行

JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的內容不為0,則轉移到偏移量所指向的地址,否則程序往下執行

CJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的內容不等於直接地址單元的內容,則轉移到偏移量所指向的地址,否則程序往下執行

CJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行

CJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行

CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址單元中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行

DJNZ Rn, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)工作寄存器Rn減1不等於0,則轉移到偏移量所指向的地址,否則程序往下執行

DJNZ data, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)直接地址單元中的內容減1不等於0,則轉移到偏移量所指向的地址,否則程序往下執行

[3]. 子程序調用指令(1條)
子程序是為了便於程序編寫,減少那些需反復執行的程序佔用多餘的地址空間而引入的程序分支,從而有了主程序和子程序的概念,需要反復執行的一些程序,我們在編程時一般都把它們編寫成子程序,當需要用它們時,就用一個調用命令使程序按調用的地址去執行,這就需要子程序的調用指令和返回指令。

LCALL addr16 ; 長調用指令,可在64kB空間調用子程序。此時(PC)+ 3→(PC),(SP)+ 1→(SP),(PC 7-0 )→(SP),(SP)+ 1→(SP),(PC 15-8 )→(SP),addr16→(PC),即分別從堆棧中彈出調用子程序時壓入的返回地址

ACALL addr11 ; 絕對調用指令,可在2kB空間調用子程序,此時(PC)+ 2→(PC),(SP)+ 1→(SP),(PC 7-0 )→(SP),(SP)+ 1→(SP),(PC 15-8 )→(SP),addr11→(PC 10-0 )

RET ; 子程序返回指令。此時(SP)→(PC 15-8 ),(SP)- 1→(SP),(SP)→(PC 7-0 ),(SP)- 1→(SP)

RETI ; 中斷返回指令,除具有RET功能外,還具有恢復中斷邏輯的功能,需注意的是,RETI指令不能用RET代替

[4]. 空操作指令(1條)
這條指令將累加器中的內容清0。

NOP ; 這條指令除了使PC加1,消耗一個機器周期外,沒有執行任何操作。可用於短時間的延時

MCS-51布爾變數操作指令

布爾處理功能是MCS-51系列單片機的一個重要特徵,這是出於實際應用需要而設置的。布爾變數也即開關變數,它是以位(bit)為單位進行操作的。

在物理結構上,MCS-51單片機有一個布爾處理機,它以進位標志做為累加位,以內部RAM可定址的128個為存儲位。

既然有布爾處理機功能,所以也就有相應的布爾操作指令集,下面我們分別談論。

[1]. 位傳送指令(2條)
位傳送指令就是可定址位與累加位CY之間的傳送,指令有兩條。

MOV C,bit ;bit→CY,某位數據送CY

MOV bit,C ;CY→bit,CY數據送某位

[2]. 位置位復位指令(4條)
這些指令對CY及可定址位進行置位或復位操作,共有四條指令。

CLR C ; 0→CY,清CY

CLR bit ; 0→bit,清某一位

SETB C ; 1→CY,置位CY

SETB bit ; 1→bit,置位某一位

[3]. 位運算指令(6條)
位運算都是邏輯運算,有與、或、非三種指令,共六條。

ANL C,bit ;(CY)∧(bit)→CY

ANL C,/bit ;(CY)∧( )→CY

ORL C,bit ;(CY)∨(bit)→CY

ORL C,/bit ;(CY)∧( )→CY

CPL C ;( )→CY

CPL bit ;( )→bir

[4]. 位控制轉移指令(5)
位控制轉移指令是以位的狀態作為實現程序轉移的判斷條件,介紹如下:

JC rel ; (CY)=1轉移,(PC)+2+rel→PC,否則程序往下執行,(PC)+2→PC。

JNC rel ; (CY)=0轉移,(PC)+2+rel→PC,否則程序往下執行,(PC)+2→PC。

JB bit, rel ; 位狀態為1轉移。

JNB bit, rel ; 位狀態為0轉移。

JBC bit, rel ; 位狀態為1轉移,並使該位清「0」。

後三條指令都是三位元組指令,如果條件滿足,(PC)+3+rel→PC,否則程序往下執行,(PC)+3→PC

⑧ 單片機減法指令

SUBBA,Rn;
(A)(A)-(Rn)-(C),以下類同。

SUBBA,direct

SUBBA,@Ri

SUBBA,#data

注意:減法之前先清零C,減法指令無不帶借位減法指令。

⑨ 單片機匯編程序中的標號需要先定義

標號可以自由編寫,方便自己認識就可以,但要注意不能用指令或偽指令及相關的保留字,如不能用ORG,MOV,EQU等等字元作為標號,標號內最好不要用加減號或等於號等標點,標號的格式是字元加冒號(:)。

標號是表示地址的,凡是轉移指令,所轉移的目的位置就必須用標號表示。所以加標號有三種情況,一種就是轉移指令的目的地址必須加標號。另一種是子程序的起始行,也叫起始地址,也必須加標號,而子程序的標號也可以叫子程序的名稱。

對於程序調試

直接使用匯編指令編寫單片機程序,對硬體的控制更加直接,可以直接操作物理地址,寄存器,埠等;其它更高級的語言(如:C語言)對硬體的控制是依賴於類庫來實現的。並且,對於一些對程序大小和運行速度有非常嚴苛要求的項目而言,都必須使用匯編指令。

C語言只是為了方便編寫,與機器打交道的其實都是2進製得代碼,匯編語言就是這些代碼好記憶的名稱和規則,只是比C語言難理解些。

⑩ 單片機帶借位的減法指令怎麼算

你所謂的「怎麼算」是指什麼意思?是指內部運算過程,還是說你想自己編程實現(多個位元組的)帶借位減法運算?

閱讀全文

與單片機減號指令相關的資料

熱點內容
megawin單片機 瀏覽:685
以色列加密貨幣監督 瀏覽:907
程序員前端現在怎麼樣 瀏覽:497
伺服器和介面地址ping不通 瀏覽:555
linux命令返回上級目錄 瀏覽:897
移動花卡寶藏版為什麼不能選免流app 瀏覽:255
速騰carplay怎麼用安卓 瀏覽:13
紅塔銀行app怎麼樣 瀏覽:564
農行app怎麼開網銀 瀏覽:651
java迭代器遍歷 瀏覽:303
閩政通無法請求伺服器是什麼 瀏覽:48
怎麼做積木解壓神器 瀏覽:205
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:871
程序員編迷你世界代碼 瀏覽:898
php取現在時間 瀏覽:248
單片機高吸收 瀏覽:430
怎麼區分五代頭是不是加密噴頭 瀏覽:247
hunt測試伺服器是什麼意思 瀏覽:512
2013程序員考試 瀏覽:641