導航:首頁 > 操作系統 > 單片機跳轉指令定址范圍

單片機跳轉指令定址范圍

發布時間:2023-02-22 14:19:07

單片機系統指令的指令系統的定址方式

訪問指令
一、操作數在寄存器中;
如MOV A,Rn ;(Rn)→A,n=0~7
1、4組工作寄存區,共32個工作寄存器。
2、部分特殊功能寄存器,例如A、B 及DPTR等。
二、訪問片外數據存儲器
(1)用R0或R1作為間址寄存器,定址范圍為片外低256個位元組;
(2)用DPTR作為間址寄存器,定址范圍為片外64K。
a) MOVX A,@Ri ;i=0或1
若(Ri)=70H,把外部RAM中70H單元的內容送到A
b) MOVX A,@DPTR
若(DPTR)=2000H,把外部RAM中2000H單元的內容送到A
3、堆棧操作指令訪問堆棧區
堆棧專用操作指令PUSH(壓棧)和POP(出棧)使用堆棧
指針(SP)作間址寄存器
指令PUSH(壓棧)和POP(出棧),無前綴標志「@」
四、立即(數)定址方式
操作數在指令中直接給出,需在操作數前面加前綴標志「#」。
如MOV A,#40H,此時立即數在程序存儲單元中。
五、基址寄存器加變址寄存器間址定址方式
1、以DPTR或PC作基址寄存器,以累加器A作為變址寄存器;
2、基址寄存器+變址寄存器形成操作數地址;
3、本定址方式專門針對程序存儲器,定址范圍可達到64KB。
4、本定址方式的指令只有3條:
MOVC A,@A+DPTR
MOVC A,@A+PC
JMP @A+DPTR
前2條又稱查表指令,將程序存儲器單元內容給ACC;
後1條為散轉指令,屬於轉移類指令。
(注)
(1)本定址方式是專門針對程序存儲器的定址方式,定址范圍可達到64KB。
(2)本定址方式的指令只有3條:
MOVC A,@A+DPTR
MOVC A,@A+PC
JMP @A+DPTR
六、位定址方式
89C51有位處理功能,可以對數據位進行操作,
如MOV C,40H是把位40H的值送到進位位C。
定址范圍:
1、內部RAM中的位定址區(20H—2FH),有2種表示方法。
(1) 直接給出位地址,如MOV C,40H;
(2) 單元地址加位數,如MOV C,(28H).0,指的是28H單元中的最低位。
2、SFR中的可定址位(70H—FFH,共83位),有4種表示方法。
(1) 直接給出位地址,如MOV C,0D5H(PSW.5的位地址);
(2) 直接寫位名稱,如MOV C,F0;
(3) 單元地址加位數,如MOV C, (0D0H).5;
(4) SFR符號加位數,如MOV C, PSW.5。
七、相對定址方式
在相對定址的轉移指令中,給出了地址偏移量「rel」,即
把PC的當前值+ rel 就構成了程序轉移的目的地址。即
目的地址=轉移指令所在的地址+ 轉移指令的位元組數+ rel
偏移量rel是帶符號的8位二進制補碼數,范圍是:–128 ~ +127 ;
注意:PC的當前值是緊接在轉移指令後的下一條指令的PC值。

❷ 單片機中什麼是定址范圍

定址范圍就是給某個存儲器或者寄存器劃分一個區域,如99H等,方便指令執行的時候能准確地找到它的位置,就跟你家的門牌號一樣。

❸ 單片機:AJMP指令的跳轉范圍是2K,SJMP $ 偏移量是多少

SJMP $ 偏移量是256,即-128--+127

❹ 單片機系統指令的控制轉移指令

一、無條件轉移指令 AJMP addrll (2位元組指令)
2K(地址211)位元組范圍內的無條件跳轉指令。
64K程序存儲器空間分為32個區,每區2K位元組,轉移的目標地址必須與AJMP下一條指令的地址高5位地址碼A15-A11相同。
指令執行時,先PC加2,然後把addrll送入PC.10~PC.0,
PC.15~PC.11保持不變,程序轉移到目標地址。
注意:轉移目標首地址必須在AJMP指令下一條指令地址(PC+2)的2KB范圍內。
二、長跳轉指令 LJMP addr16 (3位元組指令)
64K位元組范圍內的無條件跳轉指令。
指令執行時,把指令的第二和第三位元組分別裝入PC的高位和低位位元組中,無條件地轉向addr16指出的目標地址。
目標地址可以在64K程序存儲器地址空間的任何位置。
注意:短跳轉、長跳轉指令中addrll、addr16直接寫上要轉向的目標地址標號(即符號地址)就可以。
三、相對轉移指令 SJMP rel (雙位元組)
rel為8位帶符號二進制補碼數(-128~+127),實現程序的雙向轉移。
在編寫程序時,直接寫上要轉向的目標地址標號就可以。
四、間接跳轉(散轉)指令JMP @A+DPTR (三位元組)
由A中8位無符號數與DPTR的16位數內容之和來確定。以DPTR內容作為基址,A的內容作變址。
五、條件轉移指令 (雙位元組)
JZ rel ; 如果累加器為「0」,則轉移
JNZ rel; 如果累加器非「0」,則轉移
六、比較不相等轉移指令(3位元組指令)
CJNE A, direct, rel
CJNE A, #data, rel
CJNE Rn, #data, rel
CJNE @Ri, #data, rel
1、比較前面兩個操作數(無符號整數)的大小,如果不相等則
轉移,若相等則順序執行下一條指令。
2、如果第一操作數小於第二操作數, 則Cy標志位置1, 否則清0。
如常把CJNE 第一操作數, 第二操作數, $+3
和JNC rel或JC rel 寫在一塊來判別2個數的大小。
$:本條指令在程序存儲單元的首地址;
$+3:CJNE指令的下一條指令,即JNC rel或JC rel
七、減1不為0轉移指令
DJNZ Rn, rel ;n=0~7
DJNZ direct, rel
將源操作數內容減1,結果回送到Rn寄存器或direct中去。如果源操作數內容不為0則轉移,為0則順序執行下一條指令。
主要用於控製程序循環。
1、把寄存器Rn或內部RAM的direct單元用作程序循環計數器
2、以減1後是否為「0」作為轉移條件,實現按次數控制循環
八、子程序調用、返回指令
1、短調用指令 ACALL addr11 (雙位元組)
2K范圍內的子程序調用。
2、長調用指令 LCALL addr16 (三位元組)
64K范圍內的子程序調用。
執行本指令時:
(1)斷點地址(調用指令的下一條指令的首地址PC+2或PC+3)
保護
(SP)+1→SP,然後PCL →(SP)
(SP)+1→SP,然後PCH →(SP)
(2)將子程序首地址送入PC,執行子程序
3、子程序返回指令 RET
斷點地址恢復
(SP) →PCH,(SP) - 1→SP
(SP) →PCL ,(SP) - 1→SP
功能:從堆棧中退出PC的高8位和低8位位元組,把棧指針減2,從PC值開始繼續執行程序。不影響標志位。
4、中斷返回指令 RETI
與RET指令相似,不同之處在於斷點地址恢復,清除中斷響應時被置「1」的51內部中斷優先順序寄存器的優先順序狀態。
子程序是編程時就已確定的固定位置調用,而中斷服務子程序是由中斷系統控制在特定條件下隨機調用的。
九、空操作指令 NOP,消耗1個機器周期的時間

❺ 8051單片機內部程序存儲器和內部數據存儲器的定址范圍是多少

呵呵 樓上答案是錯誤的阿 還是俺來替你解答吧
1 8051單片機內部程序存儲器:
為4K掩膜程序存儲器 定址范圍為:0000H~0FFFH
51單片機的片內片加上片外的總的定址才是:0000H~FFFFH
2 8051單片機內部數據存儲器只有128個單元:
定址范圍為:00H~7FH
80H~FFH 為特殊寄存器區

呵呵 滿意就給加分嘍

❻ 單片機CJNE,JZ,JNZ這些指令的跳轉范圍是多少具體是怎麼算的

這3個指令跳轉范圍在256個位元組地址內,在程序存儲地址中,
它屬於短跳轉。長跳:LJMP---16位二進制地址
AJMP---11位二進制地址內
其餘大部分是短跳,256位元組內

❼ 單片機中的短跳轉指令AJMP其轉移目標指令地址怎麼算

AJMP addr11

說明:把11位的addr11內容直接給PC(16位的指針)的PC0——PC10位。

這樣的話addr11=00100000000B=0100H,原來PC=1030 推出轉移地址為:1100

同樣的道理原來的PC=3030時,算出轉移地址為:3100

仔細看一下書本,看你的困惑不是不了解這個地址是11位的問題,應該是和其他的指令搞混淆了。
SJMP rel PC=(PC)+rel
LJMP addr16 PC=addr16
AJMP addr11 PC10-0=addr11

這下你明白了嗎,個人認為自己回答的還很透徹,記得給分喲

❽ 單片機跳轉出范圍

為什麼單片機中可實現的轉移范圍是

單片機跳轉指令解析

控制轉移類指令

條件轉移指令Jcc根據指定的條件確定程序是否發生轉移。如果滿足條件則程序轉移到目標地址去執行程序;不滿足條件,則程序將順序執行下一條指令。

其通用格式為:

Jcc LABEL ;條件滿足,發生轉移:IP?IP+8位位移量

;否則,順序執行:IP?IP+2 其中,LABEL表示目標地址(8位位移量)。因為Jcc指令為2個位元組,所以順序執行就是指令偏移指針IP加2。條件轉移指令跳轉的目標地址只能用前面介紹的段內短距離跳轉(短轉移),即目標地址只能是在同一段內,且在當前IP地址-128~+127個單元的范圍之內。這種定址方式由於是相對於當前IP 的,所以被稱為相對定址方式。條件轉移指令不影響標志,但要利用標志。條件轉移指令Jcc中的cc表示利用標志判斷的條件,共16種。如下圖:

1、判斷單個標志位狀態

這組指令單獨判斷5個狀態標志之一,根據某一個狀態標志是0或1決定是否跳轉。

(1)JZ/JE和JNZ/JNE利用零標志ZF,判斷結果是否為零(或相等)

JE指令(相等時轉移)

JZ指令(等於0時轉移)

這是當ZF=1時轉移到目標地址的條件轉移指令的兩種助記符。這條指令既適用於判斷無符號數的相等,又適用於判斷帶符號數的相等。

JNE指令(不相等轉移)

JNZ指令(不等於0轉移)

這是當ZF=0時能轉移到目標地址的條件轉移指令的兩種助記符。這條指令也是既適用於判斷無符號數,又適用於判斷帶符號數。

(2)JS和JNS利用符號標志SF,判斷結果是正是負。

JS指令(為負轉移)——當滿足SF=1時,轉移到目標地址

JNS指令(為正轉移)——滿足SF=0時,轉移到目標地址

(3)JO和JNO利用溢出標志,判斷結果是否產生溢出

JO指令(溢出轉移)——OF=1時,轉移到目標地址 JNO指令(未溢出轉移)——OF=0時,轉移到目標地址

(4)JP/JPE和JNP/JPO利用奇偶標志PF,判斷結果中「1」的個數是偶是奇

JP/JPE指令(為偶轉移)——滿足PF=1時轉移 JNP/JPO指令(為奇轉移)——滿足PF=0時轉移 數據通訊為了可靠常要進行校驗。常用的校驗方法是奇偶校驗,即把字元ASCII碼的最高位用作校驗位,是包括校驗位在內的字元中為「1」的個數恆為奇數(奇校驗),或恆為偶數(偶校驗)。若採用奇校驗,在字元ASCII中為「1」的個數已為奇數時,則令其最高位為「0」;否則令最高位為「1」。

(5)JC/JB/JNAE和JNC/JNB/JAE,利用進位標志CF,判斷結果是否進位或借位,CF標志是比較常用的一個標志。 JC——滿足CF=1時轉移 JNC——滿足CF=0時轉移

JB(低於轉移) JNB(不低於轉移) JNAE(不高於等於轉移) JAE(高於等於轉移) 2、用於比較無符號數高低為區別有符號數的大小,無符號數的大小用高(Above)、低(Below)表示,它需要利用CF確定高低、利用ZF標志確定相等(Equal)。兩數的高低分成4種關系:低於(不高於等於)、不低於(高於等於)、低於等於(不高於)、不低於等於(高於);也就分別對應4條指令:JB(JNAE)、 JNB(JAE)、JBE(JNA)、JNBE(JA)。 JA/JNBE

JA即高於轉移,JNBE即不低於且不等於轉移,高於則沒有進位產生,即CF=0,不等於則ZF=0,所以這兩條指令滿足CF=0且ZF=0時轉移

JAE/JNB

高於或等於轉移/不低於轉移是當CF=0(高於就不產生進位)或ZF=1(等於)時轉移。

JB/JNAE

即低於/不高於且不等於轉移,是當CF=1(產生借位)且ZF=0(不相等)時轉移。

JBE/JNA

即低於或等於/不高於轉移,是當CF=1(借位產生)或ZF=1(相等)時轉移。

3、用於比較有符號數大小

判斷有符號數的大(Greater)、小(Less),需要組合OF、SF標志、並利用ZF標志確定相等與否。兩數的大小分成4種關系:小於(不大於等於)、不小於(大於或等於)、小於等於(不大於)、不小於等於(大於);也就分別對應4條指令:JL(JNGE)、JNL(JGE)、JLE(JNG)、 JNLE(JG)。

由上可見,條件轉移指令之前常有CMP、TEST、加減運算、邏輯運算等影響標志的指令,利用這些指令執行後的標志或其組合狀態形成條件。

JG/JNLE

大於/不小於且不等於轉移,是當標志SF與OF同號(即SF異或OF=0)且ZF=0時轉移

JGE/JNL大於或等於/不小於轉移,是當標志SF與OF同號(即SF異或OF=0)或ZF=0時轉移

JL/JNGL

小於/不大於也不等於時轉移,是當標志SF與OF異號(即SF異或OF=1)且ZF=0時轉移

JLE/LNG

小於或等於/不大於轉移,是當標志SF與OF異號(即SF異或OF=1)或ZF=1時轉移

4、判斷計數器CX是否為0

JCXZ LABEL ;CX=0,則轉移;否則順序執行

閱讀全文

與單片機跳轉指令定址范圍相關的資料

熱點內容
雲空間在哪個文件夾 瀏覽:924
編程游戲小貓抓小魚 瀏覽:782
安卓dosbox怎麼打開 瀏覽:772
伺服器無影響是怎麼回事 瀏覽:950
比德電子采購平台加密 瀏覽:200
加密貨幣400億 瀏覽:524
植發2次加密 瀏覽:44
vc6查看編譯的錯誤 瀏覽:595
心理大全pdf 瀏覽:1002
區域鏈加密幣怎麼樣 瀏覽:343
查找命令符 瀏覽:95
壓縮工具zar 瀏覽:735
白盤怎麼解壓 瀏覽:475
辰語程序員學習筆記 瀏覽:47
程序員被公司勸退 瀏覽:523
java三子棋 瀏覽:693
加密空間怎麼強制進入 瀏覽:345
ug分割曲線命令 瀏覽:209
學碼思程序員 瀏覽:610
自考雲學習app為什麼登不上 瀏覽:410