① 單片機指令JNB字母各代表什麼意思
JNB就是後邊的位操作碼為0則跳轉到指定的行地址。
這是匯編指令,應該是JNB SWLOOP, NEXT
是JNB就應該有逗號,而且逗號後還有標號,而SWLOOP是引腳,指令意思為:SWLOOP腳為低電平則轉到標號NEXT處,否則繼續向下執行。
如果SWLOOP是標號,那應該是JNC SWLOOP
這指令意思就不同了,是不進位(Cy=0)則轉到SWLOOP處,否則向下執行。
(1)單片機jnc和jnz擴展閱讀:
模型為:JNB bit,rel,其中bit為直接定址位,rel為要轉移到的地方,通常是一個標號;它的意思是若bit為0,則轉移到rel表示的標號處,否則不轉移繼續往下執行。
JNB是根據某一位的狀態判斷轉移的,當檢測位不是1(NB),即為0時就轉移,通常用於判斷引腳。例如:JNB P1.0, TEST;
功能:當引腳P1.0為0時,就跳轉到TEST。
② 匯編語言里JC\JNC\JB\JNB\JZ\JNZ的問題
JC : Jump if Carry (有進位、即CF=1,則跳轉)
JB : Jump if Below (低於則跳轉)
JA : Jump if Above (高於則跳轉)
JNZ:Jump if Not Zero (不為零、即ZF≠1,則跳轉)
JNGE :Jump if Not Greater or Equal(不大於等於則跳轉)= JL :Jump if Less than (小於則跳轉)
***************
指令中字元的含義:
單個標志位:
C: CF
S: SF
Z: ZF
O: OF
P: PF
無符號數比較:
A: Above 高於
B: Below 低於
E: Equal 等於
有符號數比較:
G: Greater 大於
L: Less 小於
E: Equal 等於
③ 單片機中jc指令表示什麼有什麼用
JC是判斷C進位標志是否為1,為1則跳轉到指定位置。
JC指令判斷有借位則轉移,也就是說兩數相減為負轉移。JBC指令判斷該位為1則轉移,同時將該位置0。
條件轉移指令只能轉移到離本指令-128~+127位元組范圍內,是一種相對轉移形式,當要往較遠單元地址條件轉移時,可以在本指令-128~+127位元組范圍內安排一條無條件轉移指令作為中轉指令即可。在使用簡單條件跳轉指令時,必須明確相應標志位的變化。
(3)單片機jnc和jnz擴展閱讀:
簡單條件跳轉指令:
1、JC 目的地址 進位標志位CF=1,轉移
2、JNC 目的地址 進位標志位CF=0,轉移
3、JZ 目的地址 零標志位ZF=1,轉移
4、JNZ 目的地址 零標志位ZF=0,轉移
5、JS 目的地址 符號標志SF=1,轉移
5、JNS 目的地址 符號標志SF=0,轉移
6、JO 目的地址 溢出標志OF=1,轉移
7、JNO 目的地址 溢出標志OF=0,轉移
8、JP 目的地址 奇偶標志PF=1,轉移
9、JNP 目的地址 奇偶標志PF=0,轉移
10、JCXZ 目的地址 CX=0,轉移
④ 單片機的所有注記符
MCS-51共有111條指令,可分為五類:
1.數據傳送類指令(7種助記符)
MOV(英文為Move):對內部數據寄存器RAM和特殊功能寄存器SFR的數據進行傳送;
MOVC(Move Code)讀取程序存儲器數據表格的數據傳送;
MOVX(Move External RAM)對外部RAM的數據傳送;
XCH(Exchange)位元組交換;
XCHD(Exchange low-order Digit)低半位元組交換;
PUSH(Push onto Stack)入棧;
POP (Pop from Stack)出棧;
2.算術運算類指令(8種助記符)
ADD(Addition) 加法;
ADDC(Add with Carry) 帶進位加法;
SUBB(Subtract with Borrow) 帶借位減法;
DA(Decimal Adjust) 十進制調整;
INC(Increment) 加1;
DEC(Decrement) 減1;
MUL(Multiplication、Multiply) 乘法;
DIV(Division、Divide) 除法;
3.邏輯運算類指令(10種助記符)
ANL(AND Logic) 邏輯與;
ORL(OR Logic) 邏輯或;
XRL(Exclusive-OR Logic) 邏輯異或;
CLR(Clear) 清零;
CPL(Complement) 取反;
RL(Rotate left) 循環左移;
RLC(Rotate Left throught the Carry flag) 帶進位循環左移;
RR(Rotate Right) 循環右移;
RRC(Rotate Right throught the Carry flag) 帶進位循環右移;
SWAP (Swap)低4位與高4位交換;
(4)控制轉移類指令(17種助記符)
ACALL(Absolute subroutine Call)子程序絕對調用;
LCALL(Long subroutine Call)子程序長調用;
RET(Return from subroutine)子程序返回;
RETI(Return from Interruption)中斷返回;
SJMP(Short Jump)短轉移;
AJMP(Absolute Jump)絕對轉移;
LJMP(Long Jump)長轉移;
CJNE (Compare Jump if Not Equal)比較不相等則轉移;
DJNZ (Decrement Jump if Not Zero)減1後不為0則轉移;
JZ (Jump if Zero)結果為0則轉移;
JNZ (Jump if Not Zero) 結果不為0則轉移;
JC (Jump if the Carry flag is set)有進位則轉移;
JNC (Jump if Not Carry)無進位則轉移;
JB (Jump if the Bit is set)位為1則轉移;
JNB (Jump if the Bit is Not set) 位為0則轉移;
JBC(Jump if the Bit is set and Clear the bit) 位為1則轉移,並清除該位;
NOP (No Operation)空操作;
5.位操作指令(1種助記符)
SETB(Set Bit)位 置1 。
⑤ 誰知道單片機所有助記符,
MCS-51共有111條指令,可分為五類:1.數據傳送類指令(7種助記符)MOV(英文為Move):對內部數據寄存器RAM和特殊功能寄存器SFR的數據進行傳送;MOVC(Move Code)讀取程序存儲器數據表格的數據傳送;MOVX (Move External RAM) 對外部RAM的數據傳送;XCH (Exchange) 位元組交換;XCHD (Exchange low-order Digit) 低半位元組交換;PUSH (Push onto Stack) 入棧;POP (Pop from Stack) 出棧;2.算術運算類指令(8種助記符)ADD(Addition) 加法;ADDC(Add with Carry) 帶進位加法;SUBB(Subtract with Borrow) 帶借位減法;DA(Decimal Adjust) 十進制調整;INC(Increment) 加1;DEC(Decrement) 減1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;3.邏輯運算類指令(10種助記符)ANL(AND Logic) 邏輯與;ORL(OR Logic) 邏輯或;XRL(Exclusive-OR Logic) 邏輯異或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循環左移;RLC(Rotate Left throught the Carry flag) 帶進位循環左移;RR(Rotate Right) 循環右移;RRC (Rotate Right throught the Carry flag) 帶進位循環右移;SWAP (Swap) 低4位與高4位交換;(4)控制轉移類指令(17種助記符)ACALL(Absolute subroutine Call)子程序絕對調用;LCALL(Long subroutine Call)子程序長調用;RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中斷返回;SJMP(Short Jump)短轉移;AJMP(Absolute Jump)絕對轉移;LJMP(Long Jump)長轉移;CJNE (Compare Jump if Not Equal)比較不相等則轉移;DJNZ (Decrement Jump if Not Zero)減1後不為0則轉移;JZ (Jump if Zero)結果為0則轉移;JNZ (Jump if Not Zero) 結果不為0則轉移;JC (Jump if the Carry flag is set)有進位則轉移;JNC (Jump if Not Carry)無進位則轉移;JB (Jump if the Bit is set)位為1則轉移;JNB (Jump if the Bit is Not set) 位為0則轉移;JBC(Jump if the Bit is set and Clear the bit) 位為1則轉移,並清除該位;NOP (No Operation) 空操作;5.位操作指令(1種助記符)SETB(Set Bit) 位 置1 。
⑥ 匯編語言jnc命令有什麼用處
轉移指令。
意思是CF=0,則跳轉,表示的是AX大於或等於0的時候轉移到EXIT處,所以JNC也可以看成是加法沒有進位,減法沒有借位的時候轉移。
在匯編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。在不同的設備中,匯編語言對應著不同的機器語言指令集,通過匯編過程轉換成機器指令。特定的匯編語言和特定的機器語言指令集是一一對應的,不同平台之間不可直接移植。
(6)單片機jnc和jnz擴展閱讀:
由於匯編指令系統龐大,因而需構建指令系統體系,其指令數量龐大,格式復雜,可記憶性差等。指令中最難的是指令所支持的定址方式,其實質就是指令中操作數如何獲取。對於處理器而言,就是如何找到他所需的數據。
但對於計算機底層的匯編語言而言,這種定址方式將涉及大量的計算存儲格式,與 復雜的存儲管理方式緊密相關,因而難以理解。最後,匯編指令還關繫到如何影響標志位,但處理器標志位非常復雜,因而對其機制掌握就比較困難。
⑦ 單片機中JNB和 JNC到底是什麼意思
這是51單片機的兩條匯編指令,屬於條件跳轉指令。
JNB,是根據某一位的狀態判斷轉移的,當檢測位不是1(NB),即為0時就轉移,通常用於判斷引腳。例如:
JNB P1.0, TEST
功能是:當引腳P1.0為0時,就跳轉到TEST。
JNC,是根據進位標志位Cy判斷轉移的,當不進位(NC),就跳轉,可用可加/減法運算,例如
MOV A , R2
ADD A , R3
JNC NUM
意義是,R2+R3,如果未進位則跳轉至NUM。
⑧ 51單片機指令集
51匯編語言指令集
符號定義表
符號 含義
Rn R0~R7寄存器n=0~7
Direct 直接地址,內部數據區的地址RAM(00H~7FH)
SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0
@Ri 間接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH)
#data 8位常數
#data16 16位常數
Addr16 16位的目標地址
Addr11 11位的目標地址
Rel 相關地址
bit 內部數據RAM(20H~2FH),特殊功能寄存器的直接地址的位
指令介紹
指令 位元組 周期 動作說明
算數運算指令
1.ADD A,Rn 1 1 將累加器與寄存器的內容相加,結果存回累加器
2.ADD A,direct 2 1 將累加器與直接地址的內容相加,結果存回累加器
3.ADD A,@Ri 1 1 將累加器與間接地址的內容相加,結果存回累加器
4.ADD A,#data 2 1 將累加器與常數相加,結果存回累加器
5.ADDC A,Rn 1 1 將累加器與寄存器的內容及進位C相加,結果存回累加器
6.ADDC A,direct 2 1 將累加器與直接地址的內容及進位C相加,結果存回累加器
7.ADDC A,@Ri 1 1 將累加器與間接地址的內容及進位C相加,結果存回累加器
8.ADDC A,#data 2 1 將累加器與常數及進位C相加,結果存回累加器
9.SUBB A,Rn 1 1 將累加器的值減去寄存器的值減借位C,結果存回累加器
10.SUBB A,direct 2 1 將累加器的值減直接地址的值減借位C,結果存回累加器
11.SUBB A,@Ri 1 1 將累加器的值減間接地址的值減借位C,結果存回累加器
12.SUBB A,#data 2 1 將累加器的值減常數值減借位C,結果存回累加器
13.INC A 1 1 將累加器的值加1
14.INC Rn 1 1 將寄存器的值加l
15.INC direct 2 1 將直接地址的內容加1
16.INC @Ri 1 1 將間接地址的內容加1
17.INC DPTR 1 1 數據指針寄存器值加1
說明:將16位的DPTR加1,當DPTR的低位元組(DPL)從FFH溢出至00H時,會使高位元組(DPH)加1,不影響任何標志位
18.DEC A 1 1 將累加器的值減1
19.DEC Rn 1 1 將寄存器的值減1
20.DEC direct 2 1 將直接地址的內容減1
21.DEC @Ri 1 1 將間接地址的內容減1
22.MUL AB 1 4 將累加器的值與B寄存器的值相乘,乘積的低位位元組存回累加器,高位位元組存回B寄存器
說明:將累加器A和寄存器B內的無符號整數相乘,產生16位的積,低位位元組存入A,高位位元組存入B寄存器。如果積大於FFH,則溢出標志位(OV)被設定為1,而進位標志位為0
23.DIV AB 1 4 將累加器的值除以B寄存器的值,結果的商存回累加器,余數存回B寄存器
說明:無符號的除法運算,將累加器A除以B寄存器的值,商存入A,余數存入B。執行本指令後,進位位(C)及溢出位(OV)被清除為0
24.DA A 1 1 將累加器A作十進制調整,
若(A) 3-0>9或(AC)=1,則(A) 3-0←(A)3-0+6
若(A) 7-4>9或 (C)=1,則(A) 7-4←(A)7-4+6
邏輯運算指令
25.ANL A,Rn 1 1 將累加器的值與寄存器的值做AND的邏輯判斷,結果存回累加器
26.ANL A,direct 2 1 將累加器的值與直接地址的內容做AND的邏輯判斷,結果存回累加器
27.ANL A,@Ri 1 1 將累加器的值與間接地址的內容做AND的邏輯判斷,結果存回累加器
28.ANL A,#data 2 1 將累加器的值與常數做AND的邏輯判斷,結果存回累加器
29.ANL direct,A 2 1 將直接地址的內容與累加器的值做AND的邏輯判斷,結果存回該直接地址
30.ANL direct,#data 3 2 將直接地址的內容與常數值做AND的邏輯判斷,結果存回該直接地址
31.ORL A,Rn 1 1 將累加器的值與寄存器的值做OR的邏輯判斷,結果存回累加器
32.ORL A,direct 2 1 將累加器的值與直接地址的內容做OR的邏輯判斷,結果存回累加器
33.ORL A,@Ri 1 1 將累加器的值與間接地址的內容做OR的邏輯判斷,結果存回累加器
34.ORL A,#data 2 1 將累加器的值與常數做OR的邏輯判斷,結果存回累加器
35.ORL direct,A 2 1 將直接地址的內容與累加器的值做OR的邏輯判斷,結果存回該直接地址
36.ORL direct,#data 3 2 將直接地址的內容與常數值做OR的邏輯判斷,結果存回該直接地址
37.XRL A,Rn 1 1 將累加器的值與寄存器的值做XOR的邏輯判斷,結果存回累加器
38.XRL A,direct 2 1 將累加器的值與直接地址的內容做XOR的邏輯判斷,結果存回累加器
39.XRL A,@Ri 1 1 將累加器的值與間接地扯的內容做XOR的邏輯判斷,結果存回累加器
40.XRL A,#data 2 1 將累加器的值與常數作XOR的邏輯判斷,結果存回累加器
41.XRL direct,A 2 1 將直接地址的內容與累加器的值做XOR的邏輯判斷,結果存回該直接地址
42.XRL direct,#data 3 2 將直接地址的內容與常數的值做XOR的邏輯判斷,結果存回該直接地址
43.CLR A 1 1 清除累加器的值為0
44.CPL A 1 1 將累加器的值反相
45.RL A 1 1 將累加器的值左移一位
46.RLC A 1 1 將累加器含進位C左移一位
47.RR A 1 1 將累加器的值右移一位
48.RRC A 1 1 將累加器含進位C右移一位
49.SWAP A 1 1 將累加器的高4位與低4位的內容交換。(A)3-0←(A)7-4
數據轉移指令
50.MOV A,Rn 1 1 將寄存器的內容載入累加器
51.MOV A,direct 2 1 將直接地址的內容載入累加器
52.MOV A,@Ri 1 1 將間接地址的內容載入累加器
53.MOV A,#data 2 1 將常數載入累加器
54.MOV Rn,A 1 1 將累加器的內容載入寄存器
55.MOV Rn,direct 2 2 將直接地址的內容載入寄存器
56.MOV Rn,gdata 2 1 將常數載入寄存器
57.MOV direct,A 2 1 將累加器的內容存入直接地址
58.MOV direct,Rn 2 2 將寄存器的內容存入直接地址
59.MOV direct1, direct2 3 2 將直接地址2的內容存入直接地址1
60.MOV direct,@Ri 2 2 將間接地址的內容存入直接地址
61.MOV direct,#data 3 2 將常數存入直接地址
62.MOV @Ri,A 1 1 將累加器的內容存入某間接地址
63.MOV @Ri,direct 2 2 將直接地址的內容存入某間接地址
64.MOV @Ri,#data 2 1 將常數存入某間接地址
65.MOV DPTR,#data16 3 2 將16位的常數存入數據指針寄存器
66.MOVC A,@A+DPTR 1 2 (A) ←((A)+(DPTR))
累加器的值再加數據指針寄存器的值為其所指定地址,將該地址的內容讀入累加器
67.MOVC A,@A+PC 1 2 (PC)←(PC)+1;(A)←((A)+(PC))累加器的值加程序計數器的值作為其所指定地址,將該地址的內容讀入累加器
68.MOVX A,@Ri 1 2 將間接地址所指定外部存儲器的內容讀入累加器(8位地址)
69.MOVX A,@DPTR 1 2 將數據指針所指定外部存儲器的內容讀入累加器(16位地址)
70.MOVX @Ri,A 1 2 將累加器的內容寫入間接地址所指定的外部存儲器(8位地址)
71.MOVX @DPTR,A 1 2 將累加器的內容寫入數據指針所指定的外部存儲器(16位地址)
72.PUSH direct 2 2 將直接地址的內容壓入堆棧區
73.POP direct 2 2 從堆棧彈出該直接地址的內容
74.XCH A,Rn 1 1 將累加器的內容與寄存器的內容互換
75.XCH A,direct 2 1 將累加器的值與直接地址的內容互換
76.XCH A,@Ri 1 1 將累加器的值與間接地址的內容互換
77.XCHD A,@Ri 1 1 將累加器的低4位與間接地址的低4位互換
布爾代數運算
78.CLR C 1 1 清除進位C為0
79.CLR bit 2 1 清除直接地址的某位為0
80.SETB C 1 1 設定進位C為1
81.SETB bit 2 1 設定直接地址的某位為1
82.CPL C 1 1 將進位C的值反相
83.CPL bit 2 1 將直接地址的某位值反相
84.ANL C,bit 2 2 將進位C與直接地址的某位做AND的邏輯判斷,結果存回進位C
85.ANL C,/bit 2 2 將進位C與直接地址的某位的反相值做AND的邏輯判斷,結果存回進位C
86.ORL C,bit 2 2 將進位C與直接地址的某位做OR的邏輯判斷,結果存回進位C
87.ORL C,/bit 2 2 將進位C與直接地址的某位的反相值做OR的邏輯判斷,結果存回進位C
88.MOV C,bit 2 1 將直接地址的某位值存入進位C
89.MOV bit,C 2 2 將進位C的值存入直接地址的某位
90.JC rel 2 2 若進位C=1則跳至rel的相關地址
91.JNC rel 2 2 若進位C=0則跳至rel的相關地址
92.JB bit,rel 3 2 若直接地址的某位為1,則跳至rel的相關地址
93.JNB bit,rel 3 2 若直接地址的某位為0,則跳至rel的相關地址
94.JBC bit,rel 3 2 若直接地址的某位為1,則跳至rel的相關地址,並將該位值清除為0
程序跳躍
95.ACALL addr11 2 2 調用2K程序存儲器范圍內的子程序
96.LCALL addr16 3 2 調用64K程序存儲器范圍內的子程序
97.RET 1 2 從子程序返回
98.RETI 1 2 從中斷子程序返回
99.AJMP addr11 2 2 絕對跳躍(2K內)
100.LJMP addr16 3 2 長跳躍(64K內)
101.SJMP rel 2 2 短跳躍(2K內)-128~+127位元組
102.JMP @A+DPTR 1 2 跳至累加器的內容加數據指針所指的相關地址
103.JZ rel 2 2 累加器的內容為0,則跳至rel所指相關地址
104.JNZ rel 2 2 累加器的內容不為0,則跳至rel所指相關地址
105.CJNE A,direct,rel 3 2 將累加器的內容與直接地址的內容比較,不相等則跳至rel所指的相關地址
106.CJNE A,#data,rel 3 2 將累加器的內容與常數比較,若不相等則跳至rel所指的相關地址
107.CJNE @Rn,#data,rel 3 2 將寄存器的內容與常數比較,若不相等則跳至rel所指的相關地址
108.CJNE @Ri,#data,rel 3 2 將間接地址的內容與常數比較,若不相等則跳至rel所指的相關地址
109.DJNZ Rn,rel 2 2 將寄存器的內容減1,不等於0則跳至rel所指的相關地址
110.DJNZ direct,rel 3 2 將直接地址的內容減1,不等於0則跳至rel所指的相關地址
111.NOP 1 1 無動作
⑨ 單片機中JNC問題
JNC是借位位為0轉移。
-------------
JNC是 Cy=0 轉移。
JC 是 Cy=1 轉移。
JNZ 是 累加器A非0 轉移
⑩ 51單片機中jnc什麼意思意思啊
C(進位位)不為1則跳轉。
為1則執行下一條指令。