版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、3.6 匯編語言以及匯編語句,2,1 本單元目標(biāo),2 機(jī)器語言 主循環(huán)的開始,3.1 匯編語言源程序的格式:標(biāo)號,標(biāo)號:實(shí)際上是代表了某行語句存放的起始地址。 標(biāo)號不是必須的,絕大多數(shù)語句都沒有標(biāo)號,它通常只用在子函數(shù)或轉(zhuǎn)移目的語句處。 一般來說,標(biāo)號的前面不能有空格,在CodeWarrior中允許標(biāo)號前面有空格,但是這時(shí)必須在標(biāo)號的后面跟上帽號“:”;當(dāng)標(biāo)號的前面沒有空格時(shí),標(biāo)號后面的冒號“:”可有可無。 標(biāo)號只能以字母或下劃線開頭,后面可以跟字母、數(shù)字和下劃線。 標(biāo)號在標(biāo)號部分只能出現(xiàn)一次,不能重復(fù)。 判斷這些標(biāo)號,找出不合法的:Init_Pro, _Init_Pro, 3Init_Pro
2、, Again1。 (不合法:3Init_Pro),3.2 匯編語言源程序的格式:操作碼,操作碼:表示某種計(jì)算或者控制,例如表示加法、跳轉(zhuǎn)等等。它可以是偽指令,也可以是助記符。 操作碼位于標(biāo)號之后,兩者用至少一個(gè)空格或Tab符隔開。對于沒有標(biāo)號的語句,操作符不能從一行的第一列開始寫,前面應(yīng)該至少有一個(gè)空格或Tab符。 操作碼是必須的,在一條語句中一定存在操作碼。 例ORG,EQU,ADD,MOV,INC,LDA,STA,CLR等等。,3.3 匯編語言源程序的格式:操作數(shù),操作數(shù):是操作碼操作的對象,可以是地址、標(biāo)號、數(shù)值或表達(dá)式。 操作數(shù)位于操作碼之后,兩者用至少一個(gè)空格或Tab符隔開。 多個(gè)
3、操作數(shù)之間用逗號“,”隔開。 大多數(shù)指令需要操作數(shù),但是有些隱含尋址的指令(針對CPU寄存器的操作)沒有操作數(shù),如CLRA, STX,RSP等等。,3.4 匯編語言源程序的格式:注釋,注釋:在一行語句中,分號“;”后面的內(nèi)容為注釋部分;另外,如果“*”在一行語句的第一列,也表示該行是注釋。 它應(yīng)由一個(gè)以上的空格或制表符與操作數(shù)或操作碼(無操作數(shù)時(shí))分開。 它可包含任何可打印的ASCII字符。 注釋不是必須的,但是對于初學(xué)者,建議給每條語句寫注釋。,3.5 匯編語言源程序的格式:其他說明,語句中出現(xiàn)的標(biāo)點(diǎn)符號“:”、“;”、“,”、“_”都必須是在“英文標(biāo)點(diǎn)模式”下輸入,而不能在“中文標(biāo)點(diǎn)模式”
4、下輸入為“:”、“;”、“,”、“”。 注釋中出現(xiàn)的標(biāo)點(diǎn)符號則不受上面的限制。 不要把數(shù)字0和字母o混淆。 不要把數(shù)字1和字母l混淆。 不同語句的標(biāo)號、操作碼、操作數(shù)、注釋最好對齊,這樣的程序美觀且容易閱讀。,3.6 匯編語言源程序的格式:仿真體驗(yàn),運(yùn)行”學(xué)生練習(xí)(找錯(cuò))_匯編語言程序設(shè)計(jì)1.mcp “,對照匯編語言源程序的格式中的各個(gè)要點(diǎn),找出問題并改正它們。,4 常量,常量是指那些在匯編時(shí)已經(jīng)有確定數(shù)值的量。分為數(shù)值常量(也叫常數(shù))和符號常量。 常數(shù):以數(shù)值的形式出現(xiàn)在符號指令中。常數(shù)可以是二進(jìn)制、十進(jìn)制、十六進(jìn)制和ASCII碼,其中二進(jìn)制、十進(jìn)制、十六進(jìn)制分別加前綴%、!、$或者后綴Q、
5、T、H,ASCII碼用單引號表示。 如10010111Q=%10010111=97H=$97=151T A;等同于41H 符號常量:經(jīng)常使用的地址或者數(shù)值預(yù)先用偽指令EQU定義為一個(gè)名字,然后用該名字來表示該地址或數(shù)值,這個(gè)名字就成為了符號常量。例如 PTAD EQU $0000 ;將$0000地址單元定義為符號 ;常量PTAD Ram_Start EQU 0070H ;將數(shù)值0070H定義為符號常量;Ram_Start,5.1 偽指令:定位偽指令ORG,ORG:定位偽指令 格式:ORG 表達(dá)式 (注釋) 例如:ORG EC00 ORG偽指令把由表達(dá)式?jīng)Q定的值(EC00)賦給程序計(jì)數(shù)器。在其后
6、面的指令匯編后應(yīng)放在從該值(EC00)開始的存儲單元中。 如果一個(gè)源程序中沒有ORG偽指令,程序計(jì)數(shù)器初始值為0000,即從0號單元開始匯編。,5.2 偽指令:賦值偽指令EQU,EQU:賦值偽指令 格式:標(biāo)號 EQU 表達(dá)式 (注釋) RomStartEQU$C000 ;FLASH的起始地址 EQU偽指令把表達(dá)式的值賦給前面的標(biāo)號。該標(biāo)號不能在程序的其他地方再定義。表達(dá)式中不能使用后面定義或沒有定義的符號,否則將出錯(cuò)。下例將出錯(cuò) ORG RomStart RomStart EQU $C000 下例則是正確的: RamStart EQU $0070 ORG RamStart,5.3 偽指令:塊定
7、義DS(RMB),格式:標(biāo)號 DS(或RMB)n_ds DS(或RMB)偽指令用于在RAM存儲區(qū)內(nèi)定義n_ds個(gè)字節(jié)的連續(xù)存儲空間,該空間不進(jìn)行初始化(即定義后這些空間里面的值是不確定的)。例: ORG $0070 Data_Ds DS(或RMB) 4 上例表示從$0070開始,定義了一塊了大小為4個(gè)字節(jié)的空間,且它們的值是不確定的,即($0070)=, ($0071)=, ($0072)=, ($0073)=。,5.4 偽指令:字節(jié)定義DC.B(FCB),格式:標(biāo)號 DC.B(或FCB)n1_db DC.B(或FCB)偽指令用于把后面的數(shù)據(jù)n1_db按字節(jié)依次連續(xù)存放在以標(biāo)號作為首地址的RA
8、M存儲單元中。例: ORG $0074 Data_Db DC.B(或FCB) 12H,34H,56T,a,A 執(zhí)行上例后,從$0074開始的存儲空間的內(nèi)容為:$0074 12 34 38 61 41(a、A的ASCII值分別為61H、41H)。,5.5 偽指令:字定義DC.W(FDB),格式:標(biāo)號 DC.W(或FDB)n1_db DC.W(或FDB)偽指令用于把后面的數(shù)據(jù)n1_dw按字依次連續(xù)存放在以標(biāo)號作為首地址的RAM存儲單元中。例: ORG $0078 Data_Dw DC.W(或FDB) 12H,34H,56T,a,A 執(zhí)行上例后,從$0078開始的存儲空間的內(nèi)容為:$0078 00
9、12 00 34 00 38 00 61 00 41。,匯編語言程序設(shè)計(jì)1-偽指令綜合練習(xí).MCP,6 本任務(wù)所涉及的語句介紹,6.1 INCLUDE,格式: INCLUDE 文件名 解釋: INCLUDE是匯編偽指令。INCLUDE的作用是把單引號中表示的文件引入到INCLUDE語句所在的地方。 舉例: 語句“INCLUDE derivative.inc ;”表示把文件derivative.inc的內(nèi)容嵌入到本語句所在地方。 由于derivative.inc包含以下的代碼(注意,這里省略了注釋信息): INCLUDE MC9S08AC16.inc feed_watchdog: MACRO S
10、TA SRS ENDM INCLUDE derivative.inc的作用相當(dāng)于把以上的4行語句插入到該語句所在的地方。,6.2 EQU,格式: 標(biāo)號 EQU 表達(dá)式 (注釋) 解釋: EQU是一條偽指令,語句的作用是用標(biāo)號來表示表達(dá)式的內(nèi)容。 舉例: ROMStartEQU $C000; ROMStart相當(dāng)于$C000 RAMStart:EQU $0100; RAMStart相當(dāng)于$0100 RAMEnd:EQU $046F; RAMEnd相當(dāng)于$046F,6.3 ORG,格式: ORG表達(dá)式 (注釋) 解釋: ORG是一條偽指令,用來重新定位程序或數(shù)據(jù)所在的存儲單元的地址,表示ORG語句
11、后面的語句從表達(dá)式所表示的地址開始存放。 舉例: ORGRAMStart ; 定位變量/數(shù)據(jù)區(qū)的起始地址 LightNum:DS.B1 ; LightNum所在的存儲單元的 ; 地址為RAMStart(即$0100),6.4 SEI,格式: SEI 解釋: SEI是一條匯編指令,表示把條件碼寄存器中的I標(biāo)志置為1,具體作用是禁止單片機(jī)所有的可屏蔽的中斷。 舉例: SEI ; 關(guān)中斷,6.5 LDA,格式: LDA 解釋: LDA是一條匯編指令,表示把操作數(shù)所表示的8位立即數(shù)(數(shù)值)或操作數(shù)所表示的地址中的數(shù)值存放到累加器A中。 舉例: LDA #7FH; 7FHA, (A) =7FH LDA
12、SOPT; (SOPT)A, ; (A)= (SOPT),6.6 LDHX,格式: LDHX 解釋: LDHX是一條匯編指令,表示把操作數(shù)所表示的16位立即數(shù)(數(shù)值)或操作數(shù)所表示的地址以及下一個(gè)地址所存放的數(shù)值存放到H:X中,數(shù)值的高字節(jié)給H,低字節(jié)給X。 舉例: LDHX #RAMEnd+1 由于#RAMEnd+1$046F1$0470,所以(H)$04,(X)$70。,6.7 TXS,格式: TXS 解釋: TXS是一條無操作數(shù)的指令,表示把H:X中的值減去1后賦給SP,(H:X)-1SP。,6.8 INCA,格式: INCA 解釋: INCA是一條無操作數(shù)的指令,使累加器A的值自增1。
13、,6.9 DECA,格式: DECA 解釋: DECA是一條無操作數(shù)的指令,使累加器A的值自減1。,6.10 AIX,格式: AIX#opr16i 解釋:AIX是一條單操作數(shù)的指令,使H:X中的值增加opr16i。 舉例: AIX #1 ; 使H:X中的值加1,6.11 LSR,格式: LSR 解釋: LSR是一條單操作數(shù)的指令,表示邏輯右移,使操作數(shù)所表示的數(shù)值的值向右移動1位,原來的第0位移到了條件碼寄存器的C標(biāo)志中,最高位補(bǔ)零。邏輯右移示意圖如上圖所示。 舉例: CLC; (C) = 0 LDA#%10100101 ; (A) = %10100101 STAPTBD; (PTBD) =
14、%10100101 LSRPTBD ; (PTBD) = %01010010, (C) = 1,6.12 ROL,格式: ROL 解釋: ROL是一條單操作數(shù)的指令,使操作數(shù)所表示的數(shù)值的值循環(huán)向左移動1位,原來的第7位移到第0位,原來的第0位移到第7位,條件碼寄存器中的C標(biāo)志的值和原來的第7位相同。循環(huán)左移示意圖如上圖所示。 舉例: CLC; (C) = 0 LDA#%10100101; (A) = %10100101 STAPTBD; (PTBD) = %10100101 ROL PTBD ; (PTBD) = %01001011, (C) = 1,6.13 CPHX,格式: CPHX 解
15、釋: CPHX是一條單操作數(shù)或雙操作數(shù)的指令,根據(jù)H:X中的值減去操作數(shù)所表示的16位數(shù)值的結(jié)果更新條件碼寄存器中的V、N、Z、C標(biāo)志,H:X和操作數(shù)本身的值沒有改變。 舉例: CPHX #50000T; (H:X)-50000,并更新條 ; 件碼寄存器中的V、N、Z、 ; C標(biāo)志,6.14 CMP,格式: CMP 解釋: CMP是一條單操作數(shù)或雙操作數(shù)的指令,根據(jù)A中的值操作數(shù)所表示的8位數(shù)值的結(jié)果更新條件碼寄存器中的V、N、Z、C標(biāo)志,A和操作數(shù)本身的值沒有改變。 舉例: CMP #4T; (A)-4,并更新條件碼寄存 ; 器中的V、N、Z、C標(biāo)志,6.15 BNE,格式: BNE 解釋: BNE是一條單操作數(shù)的指令,表示不相等則跳到操作數(shù)所表示的地址,具體來說是判斷條件寄存器中的Z標(biāo)志,如果(Z)0則跳到操作數(shù)所表示的地址,否則順序執(zhí)行下一條指令。 舉例: AIX#1 ; 使H:X中的值加1 CPHX #50000T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三生公司模式制度
- 一二三級出院隨訪制度
- 公司員工通勤車輛管理制度
- 企業(yè)全勤獎(jiǎng)制度設(shè)計(jì)與激勵(lì)效果
- 行政復(fù)議案件評查制度
- 不良反應(yīng)培訓(xùn)試題及答案
- 高頻領(lǐng)導(dǎo)力管理能力面試題及答案
- 完整版高等教育學(xué)考試試題及答案解析
- 岳普湖縣輔警招聘警務(wù)輔助人員考試題庫真題試卷公安基礎(chǔ)知識及答案
- 行政執(zhí)法套卷題庫及答案
- 數(shù)字孿生方案
- 【低空經(jīng)濟(jì)】無人機(jī)AI巡檢系統(tǒng)設(shè)計(jì)方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評規(guī)范
- 機(jī)動車駕校安全培訓(xùn)課件
- 2025年役前訓(xùn)練考試題庫及答案
- 2024VADOD臨床實(shí)踐指南:耳鳴的管理課件
- 2025年湖南省公務(wù)員錄用考試錄用考試《申論》標(biāo)準(zhǔn)試卷及答案
- 漢字的傳播教學(xué)課件
- 行政崗位面試問題庫及應(yīng)對策略
- 2025年中信金融業(yè)務(wù)面試題庫及答案
- 2025廣東潮州府城文化旅游投資集團(tuán)有限公司下屬企業(yè)副總經(jīng)理崗位招聘1人筆試歷年備考題庫附帶答案詳解2套試卷
評論
0/150
提交評論