關閉→
當前位置:知科普>綜合知識>51單片機ajmp

51單片機ajmp

知科普 人氣:1.27W

51單片機ajmp

51單片機中ORG是什麼意思 有一段示例程序開始是: ORG 0000H AJMP MAIN ORG 0030H 我查了ORG是為了給彙編以後的機器代碼定位,可是ORG 0000H定位程序從0000H開始存放,之後就跳轉到MAIN程序了啊,那後面一條ORG 0030H定位語句有什麼作用 :

ORG是個用於定位的偽指令. 簡單的説就是把從這句話開始直到下一個ORG指令或者END指令前的程序語句都順序放在它指定的地址裏.比如説你的程序裏ORG只管了一個語句(AJMP MAIN),則從0000h這個地址開始放語句.放多少,看下面有幾條語句(直到org或end 指令為止). 同樣ORG 0030H是把它後面的所有到下一個ORG或END命令前的所有代碼都順序放到從0030H開始的程序單元.這應該是一個子程序.就像C語言裏的子函數.

小編還為您整理了以下內容,可能對您也有幫助:

51單片機短轉移指令是什麼?

SJMP $ 意思即跳轉到本指令的起始位置開始執行,這樣就變成了循環執行,即原地跳轉,一般用來等待中斷。

但是本指令也不宜濫用。這是一條無窮迴圈指令,如果系統的中斷是開放的,那麼SJMP $指令實際上是在等待中斷,當有中斷申請後,CPU 轉至執行中斷服務程序。

中斷返回時,仍然返回到這條無窮迴圈指令,繼續等待中斷,而不是返回到該指令的下一條指令。這是因為執行SJMP $後,PC 仍指向這條指令,中斷的斷點就是這條指令的首字節地址。

51單片機指令。

功能:短轉移(Short Jump)

格式:SJMP rel ;

作用: PC <-PC+2 , PC <-PC+rel短轉移指令(-128—+127範圍內的轉移指令)。

短轉移指令的功能是先使程序計數器PC加1兩次(即:取出指令碼),然後把加2後的地址和rel相加作為目標轉移地址。

因此,短轉移指令是一條相對轉移指令,是一條雙字節雙週期指令,指令碼格式為:80H rel(操作碼 地址偏移量),這裏,80H是SJMP指令的操作碼;rel是地址偏移量,在程序中也常採用符號地址,上機運行前才被代真成二進制形式。

擴展資料:

單片機指令系統:

MCS-51共111條指令。

指令分類:

1、按指令所佔的字節來分:

(1)單字節指令(49條) 如MOV A,R2,(機器碼11101010)

(2)雙字節指令(46條) 如MOV A,#0BH,(機器碼74H,0BH)

(3)三字節指令(16條) 如MOV 0BH, #0BH ,(機器碼75H,0BH,0BH)

2、按指令的執行時間來分:(1個機器週期為12個時鐘週期)

(1) 1個機器週期(64條) ,如MOV A,R2 MOV A,#0BH,

(2) 2個機器週期(45條) ,如MOV 0BH, #0BH

(3) 4個機器週期(2條) ,乘、除指令。

指令格式:

一、按操作碼和操作數分。

1、操作碼:用來規定指令進行什麼操作。

如MOV A,#0BH,(機器碼74H,0BH)

其中74H為操作碼,指明“將立即數送入ACC”這種操作;

2、操作數:則是指令操作的對象,有可能是數據,也可能是地址。

如MOV A,#0BH,其中#0BH為操作數。

有單字節指令、雙字節指令、三字節不同長度的指令,格式不同: 

(1)單字節指令:操作碼、操作數同在一個字節中。

(2)雙字節指令:操作碼+操作數。

(3)三字節指令:操作碼+操作數+操作數。

二、按助記符和操作數分:

操作助記符[目的操作數,源操作數]

如MOV A,#0BH,(機器碼74H,0BH),其中:

(1)MOV為操作助記符, 指明“內部數據傳送”這種操作;

(2)A為目的操作數,指明“數據傳送的目的寄存器”是A;

(3) #0BH為源操作數。

參考資料來源:百度百科-單片機指令

參考資料來源:百度百科-SJMP

51單片機燒錄串口打開時瞬間跳轉

@ 無條件轉移指令(共4條)

LJMP addr16 ; PC〈—— addr16

AJMP addr11 ; PC〈—— PC+2 , PC10-0〈—— addr11

SJMP rel ; PC〈—— PC+2 , PC 〈—— PC+rel

JMP @A+DPTR ; PC〈—— A+DPTR

第一條指令稱為長轉移指令(Long Jump);

第二條指令叫作絕對轉移指令(Absolute Jump);

第三條指令稱作短轉移指令(Short Jump);

第四條指令是變址尋址轉移指令(散轉指令)。

顯然,每條指令均以改變程序計數器PC(Program Counter)中的內容為宗旨。

#(1)長轉移指令(64KB範圍內轉移指令)

長轉移指令的功能是:把指令碼中的目標地址addr16裝入程序計數器PC,使機器執行下一條指令時無條件轉移到addr16處執行程序,不影響任何標誌。由於addr16是一個16位二進制地址(地址範圍為0000H—FFFFH),因此長轉移指令一條可以在64KB範圍內轉移的指令。為了使程序設計方便易編,addr16常採用標號地址(如:LOOP、LOOP1、MAIN、START、DONE、NEXT1……)表示,只有在上機執行前才被彙編(或代真)為16位二進制地址。

長轉移指令為三字節,雙週期指令。

#(2)絕對轉移指令(2KB範圍內的轉移指令)

絕對轉移指令是一條雙字節雙週期指令,11位地址addr11(a10—a0)在指令中的分佈是:

a10 a9 a8 0 0 0 1|a7 a6 a5 a4 a3 a2 a1 a0,其中,00001B是操作碼。在程序設計中,11位地址也可以用符號表示,但在上機執行前必須按照上述指令格式加以代真。

絕對轉移指令執行時分為兩步:

第一步是取指令操作,程序計數器PC中內容被加1兩次;

第二步是把PC加2後的高5為地址PC15—PC11和指令代碼中低11位構成目標轉移地址:PC15—PC11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0

其中,a10—a0的地址範圍是全“0”——全“1”。因此,絕對轉移指令可以在2KB範圍內向前或向後跳轉。

如果把單片機64KB尋址區分成32頁(每頁2KB),則PC15—PC11(00000B—11111B)稱為頁面地址(即:0頁—31頁),a10—a0稱為頁內地址,但應注意:AJMP指令的目標轉移地址不是和AJMP指令地址在同一個2KB區域,而是應和AJMP指令取出後的PC地址(即:PC+2)在同一個2KB區域。例如:若AJMP指令地址為2FFEH,則PC+2=3000H,故目標轉移地址必在3000H—37FFH這2KB區域中。

#(3)短轉移指令(-126—+129範圍內的轉移指令)

短轉移指令的功能是先使程序計數器PC加1兩次(即:取出指令碼),然後把加2後的地址和rel相加作為目標轉移地址。因此,短轉移指令是一條相對轉移指令,是一條雙字節雙週期指令,指令碼格式為:80H rel(操作碼 地址偏移量),這裏,80H是SJMP指令的操作碼;rel是地址偏移量,在程序中也常採用符號地址,上機運行前才被代真成二進制形式。

遇到具體問題時,頭腦中一定要清楚一個關係式:目標轉移地址=源地址+2+rel

#(4)變址尋址轉移指令(只能在256個存儲器單元內轉移)

這是一條單字節雙週期無條件轉移指令。

在指令執行之前,用户應預先把目標轉移地址的基地址送入DPTR,目標轉移地址對基地址的偏移量放在累加器A中。在指令執行時,MCS-51單片機把DPTR中基地址和累加器A中地址偏移量相加,以形成目標轉移地址送入程序計數器PC中。

通常,DPTR中基地址是一個確定的值,常常是一張轉移指令表的起始地址,累加器A中之值為表的偏移量地址,機器通過變址尋址轉移指令便可實現程序的分支轉移

原文鏈接:https://zhidao.baidu.com/question/391202121358751485.html

打開CSDN,閲讀體驗更佳

51單片機彙編語言指令彙總_C.L.R的博客_51彙編

一、數據傳送類指令 1.以累加器為目的操作數指令 MOV A,Rn MOV A,@Ri MOV A,direct MOV A,#data 2.以Rn為目的操作數的指令 MOV Rn,A MOV Rn,direct MOV Rn,#data 3.以直接地址為目的操作數指令 MOV direct,A MOV direc...

51單片機彙編入門基礎代碼-流水燈_TC肖的博客

2、跳轉指令 1.短轉移類指令AJMP addr11 2.長轉移類指令LJMP addr16 3.相對轉移指令SJMP rel 它們都用於指令跳轉,從當前位置跳轉到後面的地址位(一般為自己擬了名字的地址如DELAY:)。(它們的差別在於跳轉的範圍:LJMP一下能跳64Kb。...

單片機跳轉指令學習

基於pic16f87x單片機的跳轉指令學習

51單片機的彙編語言

51單片機的彙編語言操作指令總結 1.指令格式 【標號:】操作碼 目的操作數 ,源操作數;註釋 如:LOOP:MOV A, 33H;將33H輸入到累加器A中 2.ORG xxxxH命令 是指向程序不同功能固定入口,如: 0000H----系統復位入口 0013H—外中斷1入口 0003H—外部中斷0入口 001BH—T1溢出中斷入口 000BH—T0溢出中斷入口 0023H串口中斷入口 3.控制轉移類指令 (1)無條件轉移指令—執行到該指令時無條件跳轉 LJMP長轉移指令:三字節指令提供16位目

繼續訪問

51單片機指令詳解_凌煙慕魚的博客

51單片機指令詳解 數據傳遞類指令 1 以累加器為目的操作數的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 第一條指令中,Rn代表的是R0-R7。第二條指令中,direct就是指的直接地址,而第三條指令中,就是我們剛才講過的...

第3 章 MCS-51 單片機指令系統_楊丙寅的博客

尋址方式——計算機指令中説明操作數所在地址的方法。MCS-51 單片機的指令系統有 7 種尋址方式,分別為立即尋址、直接尋址、寄存器尋址、 寄存器間接尋址、基址加變址尋址、相對尋址和位尋址。

編程 ul 不能一行顯示 跳到下行_數控編程代碼及其使用方法—「UG編程」

G代碼代碼名稱-功能簡述G00------快速定位G01------直線插補G02------順時針方向圓弧插補G03------逆時針方向圓弧插補G04------定時暫停G05------通過中間點圓弧插補G07------Z 樣條曲線插補G08------進給加速G09------進給減速G20------子程序調用G22------半徑尺寸編程方式G220-----系統操作界面上使用G2...

繼續訪問

最新發布 51的指令系統

51單片機共有111條指令。可以大致分為以下五類: (1)數據傳送類(29條) (2)算術操作類(24條) (3)邏輯運算類(25條) (4)控制轉移類(17條) (5)位操作類(17條) 可用的指令是固定的、每種指令對應一個物理電路的實際運行過程,如果指令是指令集中不存在的,電路內部無法實現,指令就會出錯。 數據傳送類指令 一般形式為 MOV <目的操作數> , <源操作數> 操作碼包括MOV、MOVC、MOVX、PUSH、POP、XCH、XCHD、SWAP。 (1)首先是MOV

繼續訪問

51單片機原理及彙編教程(二)之彙編常用指令數,數據傳輸指令及尋址方式...

1、MOV指令 ① MOV R0 , #20H   #後面是立即數,要和地址區分開,20H是一個16進制的數。這句話的意思是將20H這個數送入寄存器R0中。直接尋址 ② MOV 30H , @R0   R0裏面放的數,以這個數位地址,將這個地址裏面的數...

51單片機學習__X2的博客

51單片機指令集 *51指令不區分大小寫 1個機器週期=12個時鐘振盪週期 只有乘除兩條指令的執行時間為4個機器週期 指令由兩部分組成:操作碼+操作數 指令系統的尋址方式 共7種尋址方式 寄存器尋址方式 ...

條件跳轉指令總結

指令 全稱 cmp a,b flag條件 jz/je jump if zero/equal a=b ZF=1 jnz/jne jump if not zero/equal a!=b ZF=0 jb/jnae/jc jump if below/not above or equal/carry a<b,無符號數 CF=1 ja/jnbe jump if above/not below or equal a>b,無符號數 jna/jbe jump if not ab...

繼續訪問

條件跳轉指令

條件跳轉指令 指令 條件 指令 條件 ja CF=0 AND ZF=0 jnc CF=0 jab CF=0 jne ZF=0 jb CF=1 jng ZF=1 OR SF!=OF jbe CF=1 OR ZF=1 jnge SF=OS jc CF=1 jnl SF=OF jcxz CX=0 jn

繼續訪問

單片機c語言有沒有跳轉指令,51單片機跳轉指令

@ 無條件轉移指令(共4條)LJMP addr16 ; PC〈—— addr16AJMP addr11 ; PC〈—— PC+2 , PC10-0〈—— addr11SJMP rel ; PC〈—— PC+2 , PC 〈—— PC+relJMP @A+DPTR ; PC〈—— A+DPTR第一條指令稱為長轉移指令(Long Jump);第二條指令叫作絕對轉移指令(Absolute...

繼續訪問

51單片機彙編指令

注: Rn與Ri中n=0 ~ 7,i=0 ~ 1 內部數據傳送指令 助記符 作用 尋址方式 機器週期 字節數 MOV A,Rn 將Rn的內容傳送給A 寄存器 1 1 MOV A,direct direct是一個地址單元,將該地址的內容傳送給A 直接 1 2 MOV A @Ri Ri中存儲了一個地址,將該地址的內容傳送給A 寄存器間接 1 1 MOV A #data 將data傳送到A 立即數 1 2 ...

繼續訪問

彙編指令長度計算

指令長度與尋址方式有關係,規律或原則如下: 一、沒有操作數的指令,指令長度為1字節。如 es: ds: cbw xlat 等。 二、操作數只涉及寄存器的指令,指令長度為2字節。如 mov al,[si] mov ax,[bx+si] mov ds,ax 等。 三、操作數涉及內存地址的指令,指令長度為3字節。如 mov al,[bx+1] mov ax,[bx+si+3] lea di,[1234] mov [2345],ax 等。 四、操作數涉及立即數的指令,指令長度為:寄存器類型+2。 8位寄存器,寄存器

繼續訪問

C51單片機彙編程序問題解決:

C51彙編程序出錯解決最近開始學習了一點彙編語言,剛好應課程要求,就來編一些簡單的C51程序,結果在定時器中斷跳轉的時候出錯了,錯誤截圖如下:demo.asm(8): error A51: TARGET OUT OF RANGE源程序代碼塊是報錯在CJNE指令這裏ORG 000BH INC R1 CJNE R1,#4000,MAINLOOP

繼續訪問

單片機iap跳轉(超詳細教程,簡單好學,看了秒懂)

iap跳轉的作用:使用boot作為app升級,通常使用串口ymodem協議進行更新app,boot一般是佔用很小的flash 大約可以設置16kb,然後設置app的地址,設置相對的偏移地址後跳轉到app ymodem協議:https://mp.csdn.net/ca1de25407acc6/c41fd8571faace46/c209d44204b1/965f8f015dfb94.4 幾個注意的點: 1.關閉中斷之後,進入app要開啟中斷 2.看門狗被開啟之後,將永遠不會被關閉,所以要做好喂狗的處理 3.一般存在設置向量表的函數,跳轉之後要設置相關的向

繼續訪問

51單片機c語言訪問外部rom,51單片機資源擴展:從片內ROM跳轉到片外ROM

源於一年前想自己動手給51寫個OS,編譯選Large模式,調試時整個流程都跑的好好的,可是燒寫到片上後得不到預期的效果,後來查書才知道51單片機片上只有4KRom,如果沒有擴展片外Rom,當訪問4K以外的程序空間,程序指針又會回到最開始執行。參考手冊擴展片外Rom後,能訪問達64K的程序空間。網上能搜索到的擴展方式都是將EA引腳接地,讓MCU上電後從外部ROM開始執行。但查看芯片手冊,明明説EA為...

繼續訪問

c語言的程序跳轉,單片機中用c語言如何編寫跳轉程序

這個要用到軟件的pwm,因為51的沒有硬件的pwm所以只好自己寫軟件的了。首先,要做一個軟件三角波發生器子程序,頻率自己定,就是變亮變暗的週期。此函數的返回值作為pwm的輸入值。再做一個pwm的模擬程序,佔空比(0-100)是三角波發生器的輸出,pwm模擬程序控制某個端口輸出1和0的佔空比來控制燈 的明暗。pwm的思路是:檢查設置值是否不等於0,是則端口置1,程序開始加1計數,計數後檢查計數值是否...

繼續訪問

C51 main 函數學習以及函數跳轉

1.C51main函數深入學習,有如下代碼: #include "reg52.h" /************* 本地變量聲明 **************/ typedef void (*pFunction)(void); pFunction Jump_To_Application; unsigned int JumpAddress; unsigned int a=0; char i; v

繼續訪問

熱門推薦 51單片機之控制轉移指令SJMP、LJMP等

文章目錄前言一、無條件轉移指令LJMP addr16AJMP addr11SJMP relJMP @A + DPTR關於SJMP、AJMP、LJMP的選擇二、條件轉移指令JZ rel 前言 控制指令是將程序跳轉到某個指定的地址,在順序執行 控制指令是通過修改PC的內容來實現跳轉的功能 PC的內容是將要執行的下一跳指令的地址 一、無條件轉移指令 LJMP英文全稱:Absolute Jump AJ...

繼續訪問

8051單片機原理學習

8051單片機原理學習單片機結構框圖參考 單片機結構框圖 51單片機的結構框圖如下所示 51單片機主要組成部件有: 8bit微處理器(CPU): 主要進行算術運行和邏輯控制 片內4KB程序存儲器(4KB ROM): 用以可執行程序,只讀數據和表格 片內256B數據存儲器(256B RAM): 用於存放可讀寫數據,如算術運行的中間值和最終值等 4個8位並行I/O口(輸入/輸出口) P0 ~ P3: 每個並口可以用作輸入,也可以用作輸出 2個定時/計數器:每個定時/計數器可以設置為計數方式,也可以設置為定時

繼續訪問

c51語言主函數,C51 main 函數學習以及函數跳轉

C51main函數深入學習,有如下代碼:#include "reg52.h"/*************本地變量聲明**************/typedefvoid (*pFunction)(void);pFunctionJump_To_Application;unsigned int JumpAddress;unsigned int a=0;char i;void test(){while(...

繼續訪問

學 Win32 彙編[28] - 跳轉指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等...

跳轉指令分三類: 一、無條件跳轉: JMP; 二、根據 CX、ECX 寄存器的值跳轉: JCXZ(CX 為 0 則跳轉)、JECXZ(ECX 為 0 則跳轉); 三、根據 EFLAGS 寄存器的標誌位跳轉, 這個太多了. 根據標誌位跳轉的指令: JE ;等於則跳轉 JNE ;不等於則跳轉 JZ ;為 0 則跳轉 JNZ ;不為 0 則跳轉 JS...

繼續訪問

彙編語言轉換c51語言,51單片機彙編語言:控制轉移指令有哪些?

跳轉指令短跳指令 AJMP addr11PC←addr11,跳轉範圍2k長跳指令 LJMP addr16PC←addr16,跳轉範圍64k間接跳轉指令 JMP @A+DPTRPC←(A)+(DPTR)相對轉移指令 SJMP rel條件轉移指令JZ rel ;(A)=0,轉移JNZ rel ;(A)≠0,轉移JC rel ;

單片機中無條件轉移指令分為幾種

51單片機的無條件轉移指令有4條,SJMP,AJMP,LJMP,JMP @A+DPTR,,可以叫4種吧,準確説是4條。

SJMP:相對轉移指令,轉移的距離比較短,前後在128個字節之內。

AJMP:絕對轉移,也叫短轉移指令,限在2KB字節內轉移。

LJMP:長轉移指令,可以在64KB字節內任意轉移。

JMP @A+DPTR:間接轉移指令。

請教下,51單片機的AJMP addrll指令是怎麼工作的

AJMP 是短跳轉指令,執行這句話後,程序在AJMP規定的代碼長度內跳轉到程序addrII執行;還有一個是LJMP,功能跟它差不多,但它是長跳轉指令,能跳過的代碼要比AJMP長,因此如果你在編譯的時候如果編譯器(比如KEIL或偉福),提醒你AJMP跳不到那裏(無法尋址),這時候你就要用LJMP,假如LJMP也跳不到,那就得接力跳轉了,比如LJMP ADDRII1;ADDRII1:LJMP ADDRII;這樣就可以跳到ADDRII了。

建議你先看明白51教材書中的指令的含義,多分析程序的過程,自然而然你就懂了。

TAG標籤:#ajmp #單片機 #