www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]數(shù)據(jù)傳送類指令:MOV 訪問內(nèi)部數(shù)據(jù)儲存器MOVX 訪問外部數(shù)據(jù)儲存器MOVC 訪問ROM儲存器XCH 整字節(jié)交換XCHD 半字節(jié)交換(低四位)PUSH 設(shè)置堆棧指針寄存器SP所指向的內(nèi)容(把字壓入堆棧)POP 把字彈出堆棧;SWAP 高低字

數(shù)據(jù)傳送類指令:
MOV 訪問內(nèi)部數(shù)據(jù)儲存器
MOVX 訪問外部數(shù)據(jù)儲存器
MOVC 訪問ROM儲存器
XCH 整字節(jié)交換
XCHD 半字節(jié)交換(低四位)
PUSH 設(shè)置堆棧指針寄存器SP所指向的內(nèi)容(把字壓入堆棧)
POP 把字彈出堆棧;
SWAP 高低字節(jié)交換指令;
數(shù)據(jù)傳送指令不影響標志,只有一有堆棧操作可以直接修改程序狀態(tài)字PSW,這樣可以是某些標志位發(fā)生變化;
格式:MOV 操作數(shù) 目標操作數(shù)
操作數(shù):A,Rn,direct(直接地址),@Ri(間接地址),#data;
源操作數(shù):A,Rn,direct(直接地址),@Ri(間接地址);
提醒:MOV @DPTR,#data; 將16位的數(shù)據(jù)存入數(shù)據(jù)指針寄存器DPTR所指向的地址中;

算術(shù)運算類指令:
只能是8位
ADD 不帶進位相加
ADDC 帶進位相加
INC 加1指令
SUBB 減法指令,操作數(shù)-源操作數(shù)-CY
DEC 減1指令
DAA 十進制調(diào)整指令;
MUL 乘法指令
DIV 除法指令
算術(shù)標志指令將會影響進位標志CY,輔助進位標志AC,溢出標志OV:運算時,如果D7進位,則CY被置1,否則清零;如果D3位有進位,則AC將會被置1,否則會被清零;對于無符號數(shù)相加,若CY置1,則表示D7進位溢出(大于255);對于無符號數(shù),若和數(shù)溢出(大于127或小于-128),則OV被置1;

邏輯運算指令:
CLR 清0操作數(shù)
CPL 對操作數(shù)按位取反
ANL 與
ORL 或
XRL 異或
RL 操作數(shù)左移1位
RLC 帶進位標志左移1位
RR 右移一位
RRC 帶進位標志右移一位

控制轉(zhuǎn)移指令
AJMP
LJMP
SJMP
JMP
ACALL
LCALL
JZ
JNZ
CJNE
DJNZ

1條件轉(zhuǎn)移指令
絕對轉(zhuǎn)移指令 AJMP addr11;PC→PC+2+addr11
2KB范圍內(nèi)無條件跳轉(zhuǎn)指令,執(zhí)行該指令時,先將PC+2,然后再將addr11的值送入PC10~PC0,而PC11~P15保持不變,這樣得到跳轉(zhuǎn)的目的地址。
相對轉(zhuǎn)移指令 SJMP rel;PC→PC+2+rel
執(zhí)行指令時,先將PC+2,再把指令中帶符號的偏移量加上PC上,得到跳轉(zhuǎn)的目的地地址送入PC;目標地址=源地址+2+rel。源地址是SJMP指令操作碼(PC)的所在地;相對偏移量rel是一個用補碼表示的8位帶符號數(shù),轉(zhuǎn)移范圍為當(dāng)前PC的值的+127~-128共256個單元;
若要求用動態(tài)停機可以用SIMP指令來實現(xiàn):”HERE:SJMP HERE;”或者”HERE:SJMP;”表示本指令所在單元地址 ($讀dollar)
長跳轉(zhuǎn)指令 addr16; addr16→PC
執(zhí)行指令時,addr16可以指向64KB程序儲存器中的任何地址,并且不影響標志位;
間接轉(zhuǎn)移指令(散轉(zhuǎn)指令)
JMP @A+DPTR; A+DPTR→PC
將A中的8位無符號數(shù)和數(shù)據(jù)指針DPTR的16位數(shù)相加,然后將之后送到PC,并不改變A和DPTR的值,也不影響標志;間接轉(zhuǎn)移指令特點是采用變址方式實現(xiàn)無條件轉(zhuǎn)移,特點是轉(zhuǎn)移地址可以在程序運行中加以改變,從可以實現(xiàn)多支轉(zhuǎn)移。所以一條指令可以完成多條條件判斷轉(zhuǎn)移指令的功能;

2 條件轉(zhuǎn)移指令
JZ rel;A= 0轉(zhuǎn)移
JNZ rel;A≠0轉(zhuǎn)移;
這種類轉(zhuǎn)移一句累加器A的值是否為0。滿足條件時轉(zhuǎn)移(這個轉(zhuǎn)移就相當(dāng)于一個相對轉(zhuǎn)移指令PC+2+rel→PC),條件不滿足時則順序執(zhí)行下面一條指令。
3 比較轉(zhuǎn)移指令
MCS51沒有專門的比較指令,但提供了下面4條比較不相等轉(zhuǎn)移指令:
CJNE A,direct,rel; A≠direct轉(zhuǎn)移
CJNE A,#data,rel; A≠data轉(zhuǎn)移
CJNE Rn,#data,rel; Rn≠data轉(zhuǎn)移
CJNE @Ri,#data,rel; Ri≠data轉(zhuǎn)移
比較操作數(shù)和源操作數(shù)的大小,如果不想等就轉(zhuǎn)移。相等的話就不轉(zhuǎn)移,繼續(xù)執(zhí)行下面的程序;轉(zhuǎn)移地址的計算計算方法與上述兩條指令相同。如果第一個操作數(shù)(無符號整數(shù))小于第二個操作數(shù),CY將會被置1,否則0,但是不影響任何操作數(shù)的內(nèi)容;
4 減1不為0轉(zhuǎn)移指令
DJNZ Rn,rel;Rn-1→Rn ≠0轉(zhuǎn)移
DJNZ direct,rel;direct-1→direct ≠0轉(zhuǎn)移
這兩條指令把原操作數(shù)減1,結(jié)果送還到源操作數(shù)中,如果結(jié)果不為0則轉(zhuǎn)移;
5 調(diào)用及返回指令
絕對調(diào)用指令 ACALL addr11
長調(diào)用指令 LCALL addr16
子程序返回指令 RET
中斷返回指令 RET1
空操作指令 NOP; PC+1→PC
6 位操作指令
操作范圍為內(nèi)部RAM的位尋址區(qū)20H~2FH單元中連續(xù)的128位,以及特殊功能寄存器中可以進行位尋址的各位;位地址為(00H~7F);
位操作指令包括布爾變量的傳送,邏輯運算,控制轉(zhuǎn)移等指令,共有17條指令,所用到的助記符有MOV,CLR,CPL,SETB,ANL,ORL,JC,JB,JNB,JBC共11種;
在布爾處理機制中,進位標志CY的作用與CPU中的累加器A,通過CY完成位的傳送和邏輯運算。
指令中位地址的表達方式有以下幾種:直接地址方式(90H),點操作符方式(IE.0),位名稱方式(EX0)等;

位數(shù)據(jù)傳送指令MOVC,bit;bit→CYMOVbit,C;CY→bit位變量修改指令CLRC;0→CYCLRbit;0→bit;CPLbit;/bit→bitCPLC;/CY→CYSETBC;1→CY;SETBbit;1→1位變量邏輯與指令A(yù)NLC,bit;(CY)^(bit)→CYANLC,/bit;(CY)^(/bit)→CY位變量邏輯或指令ORLC,bit;(CY)|(bit)→CYORLC,/bit;(CY)|(/bit)→CY位變量條件條件轉(zhuǎn)移指令JCrel若CY=1,則轉(zhuǎn)移PC+2+rel→PCJNCrel若CY=0,則轉(zhuǎn)移PC+2+rel→PCJBbit,rel若bit=1,則轉(zhuǎn)移,PC+3+rel→PCJNBbit,rel若bit=0,則轉(zhuǎn)移,PC+3+rel→PCJBCbit,rel若bit=1,則轉(zhuǎn)移,PC+3+rel→PC,并且0→bit;(注意:只有JBC指令執(zhí)行后,bit位被清0)


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

如果讀者朋友已經(jīng)有過匯編相關(guān)基礎(chǔ),能夠夠好理解本文內(nèi)容。匯編語言是比C語言更接近機器底層的編程語言,能讓我們更好的理解和操縱硬件底層。

關(guān)鍵字: 匯編 C語言

從匯編角度來說,如果“test %al, %al”能改成“test %0x1, %al”就沒有匪夷所思的問題了,如此一來應(yīng)該會降低CPU的效率,畢竟執(zhí)行指令還需要一個立即數(shù),我沒搞過編譯器也沒設(shè)計過CPU,純屬瞎猜,能搞...

關(guān)鍵字: 匯編 CPU 編譯器

【說在前面的話】其實我很久之前就想寫這篇文章了,但彼時總覺得這是一個偽命題:既然已經(jīng)用了MDK,編譯出來的代碼,無論是體積還是性能都甩下armgcc好幾條街,誰還會想用gcc來進行Cortex-M開發(fā)呢?對那些只能使用a...

關(guān)鍵字: GCC MDK 匯編

1.背景群里有個小伙伴學(xué)習(xí)設(shè)計加密方法,如同某商用軟件輸入注冊碼后就能使用擴展功能。設(shè)計時他很自然的想著所寫的加密措施是否足夠健壯安全,是否有什么方法可以繞過加密檢查,也就是破解。權(quán)限管理僅在啟動后檢查一次注冊碼是否有效...

關(guān)鍵字: 指令 匯編 軟件

最近很多伙計問我現(xiàn)在搞嵌入式還有沒有必要學(xué)習(xí)匯編?

關(guān)鍵字: 嵌入式 匯編

來源 :智能軟件研究中心,作者:羅宇哲,直接來源:華為開發(fā)者社區(qū) 聲明:本公眾號轉(zhuǎn)發(fā)僅為傳播相關(guān)技術(shù)知識,不作任何商業(yè)用途,如有疑義請聯(lián)系刪除。 01 ARM匯編指令 操作系統(tǒng)中硬件相關(guān)的部分集中體現(xiàn)在匯編指令和對寄存器...

關(guān)鍵字: ARM 匯編

Part 1. 機器指令 上一次 我們已經(jīng)了解了 二進制和 CPU 的基本原理,知道了程序運行時,CPU 每秒數(shù)以億次、十億次、百億次地震蕩著時鐘,同步執(zhí)行著微小的 「電子操作」,例如:從內(nèi)存讀取一個字節(jié)的數(shù)據(jù)到 CPU...

關(guān)鍵字: 高級編程 編程語言 匯編

來源 :智能軟件研究中心,作者:羅宇哲,直接來源:華為開發(fā)者社區(qū) 聲明:本公眾號轉(zhuǎn)發(fā)僅為傳播相關(guān)技術(shù)知識,不作任何商業(yè)用途,如有疑義請聯(lián)系刪除。 01 ARM匯編指令 操作系統(tǒng)中硬件相關(guān)的部分集中體現(xiàn)在匯編指令和對寄存器...

關(guān)鍵字: ARM 匯編

北京時間4月30日早間消息,據(jù)外媒報道,F(xiàn)acebook首席執(zhí)行官扎克伯格周三警告稱,過早重新開放公共空間“幾乎可以肯定”將會導(dǎo)致新冠病毒的繼續(xù)爆發(fā),并帶來不良的經(jīng)濟后果。 扎克伯格在公司第一季度財報

關(guān)鍵字: 扎克伯格 FACEBOOK LTE 匯編

北京時間4月30日早間消息,據(jù)外媒報道,F(xiàn)acebook首席執(zhí)行官扎克伯格周三警告稱,過早重新開放公共空間“幾乎可以肯定”將會導(dǎo)致新冠病毒的繼續(xù)爆發(fā),并帶來不良的經(jīng)濟后果。扎克伯格在公司第一季度財報電

關(guān)鍵字: 扎克伯格 FACEBOOK LTE 匯編
關(guān)閉