500 likes | 616 Views
TOP / 930203. 系統設計. 整體系統設計. 硬體電路. 軟體程式. top1@mail.hyivs.tnc.edu.tw. TOP / 930203. 指令的學習方法. 一、了解指令提供了哪些功能 ( 動作 ). 二、了解各種定址方式. 三、了解操作的對象. 四、留意一下指令位元組數與工作週期. 伍、利用模擬軟體或發展系統工具的單步執行的功能 來觀察指令的動作. top1@mail.hyivs.tnc.edu.tw. TOP / 930203. 8051 組合語言 程式格式.
E N D
TOP / 930203 系統設計 整體系統設計 硬體電路 軟體程式 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 指令的學習方法 一、了解指令提供了哪些功能 ( 動作 ) 二、了解各種定址方式 三、了解操作的對象 四、留意一下指令位元組數與工作週期 伍、利用模擬軟體或發展系統工具的單步執行的功能 來觀察指令的動作 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 8051組合語言 程式格式 〔Label〕 〔Mnemonic〕 〔Operand〕 〔Comment〕 標記欄 指令欄 運算元欄 註解欄 START: MOV A , #10H ;將10H搬移至A 目的運算元 ,來源運算元 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 程式格式 說明 標記欄 :1.標記的功用是用以替代繁複的記憶體位址計算,以方便程式的編寫、 分析與維護。 2. 第一格開始,長度最多可以達32個位元,最後必須以冒號來結束。 指令欄:一種是8051單片指令, 一種則是編譯程式的虛指令,用以通知編譯器對程式作某些特定的處理 運算元欄:運算元依指令決定需要與否,且其需要長度亦依指令而異 註解欄:註解欄是以分號起頭的一段說明文字,直到該行結束。 top1@mail.hyivs.tnc.edu.tw
開始 原始程式*.ASM 除錯 編譯程式成*.obj 程式庫與其他obj檔 ok 除錯 編譯成機器碼*.hex或*.bin ok 燒錄或模擬器 修改程式 測試功能 ok 結束 TOP / 930203 程式流程 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 指令集 資料轉移指令(Data transfer) 邏輯指令(Logic operations) 算術指令(Arithmetic operations) 布林運算指令(Boolean variable operations) 程式跳躍指令(Program branching) top1@mail.hyivs.tnc.edu.tw
虛指令一 1.ORG n:由程式記憶體的位址 n 開始存放,無此宣告由位址 0 開始。 2.END :程式的结尾,告訴組譯器,組譯到此為止。 3.EQU :等於的意思。例 LF EQU 0AH 4.DB (Define Byte):定義位元組的資料,各資料間以〝,〞號分開。 例 TABLE DB 25H , 34H,58H DB 〝HELLO〞 Dyte 40,60
虛指令二 5.DW (Define Word):定義字元組的資料,各資料間以〝,〞號分開。 例 DATA1 DW 2255H , 3654H,57F8H DB 〝HELLO〞 Dyte 40,60 6.DS n :保留n個 Byte 的記憶體空間。例 LABLE1 DS 20 7.REG :指定暫存器或直接定址位元的名稱,也就是現有的暫存器 名稱(含SFR),以另一個名稱代替。 例 REG0 REG R2 POR3 REG P2 bit0 REG 20H.1
TOP / 930203 LED 程式 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 结 束 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 了解各種定址方式 1、立即定址 MOV A , # 60 H 2、直接定址 MOV A , 60 H 3、暫存器定址 MOV A , R3 4、間接定址 MOV A , @R0 5、索引定址 MOVC A , @A+DPTR top1@mail.hyivs.tnc.edu.tw
TOP / 930203 立即定址與內容 MOV A , # 60 H 則 A = 60 H INC A 則 A = 61 H top1@mail.hyivs.tnc.edu.tw
TOP / 930203 假如 60 H 之內容值 為 4F H 直接定址與內容 MOV A , 60 H 則 A = 4F H INC 60H 則 60H = 50 H top1@mail.hyivs.tnc.edu.tw
暫存器定址說明 暫存器 Acc 暫存器 R0 內容 39H
TOP / 930203 假如於暫存器庫 2 , R3 之內容值 為 39 H 暫存器定址與內容 MOV A , R3 則 A = 39 H 39 H MOV A , 13H 則 R3 = top1@mail.hyivs.tnc.edu.tw
TOP / 930203 具指標功能暫存器 ,8 bit 者為 R0、R1、SP,可定址256 byte 範圍 16bit 者為 DPTR,可定址65536 byte 範圍 間接定址與內容一 假如於位址 60 H 之內容值 為 3F H,位址 3F H 之內容值 為 41 H MOV R0 , 60 H 則 R0 = 3F H MOV A ,R0 則 A = 3F H 41 H MOV A , @R0 則 A = top1@mail.hyivs.tnc.edu.tw
TOP / 930203 假如於位址 60 H 之內容值 為 3F H 位址 30 H 之內容值 為 25 H,31H 之內容值 為 36 H 間接定址與內容二 MOV SP , #30 H 則 SP = 60 H = 30 H = 31 H = 30 H 3F H 25 H 36 H PUSH 60H 則 SP = 60 H = 30 H = 31 H = 31 H 3F H 3F H 25 H top1@mail.hyivs.tnc.edu.tw
TOP / 930203 資料轉移指令(Data transfer) 1.MOV:一般位元組(byte)複製(搬移) 2.MOVX :對外資料記憶體資料複製(搬移) 3.MOVC :對程式記憶體資料複製(搬移) 4.PUSH:將資料存入堆疊中 5.POP :將資料從堆疊中取出 6.XCH:將運算元一之值與運算元二之資料作互換 7.XCHD :將累積器Acc之低四位元與Ri所指資料記憶體 低四位元之值互換,高四位元不變 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 MOV 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 PUSH 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 XCH 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 邏輯指令(Logic operations) 1.ANL:AND 2.ORL:OR 3.XRL:XOR 4.RL:將累積器Acc之內容值左旋 1 位元 5.RLC:將累積器Acc之內容值與進位旗標 C 的位元值一起左旋 1 位元 6.RR:將累積器Acc之內容值右旋 1 位元 7.RRC:將累積器Acc之內容值與進位旗標 C 的位元值一起右旋 1 位元 8.CLR:將累積器Acc之內容值清除為 0 9.CPL:將累積器Acc之內容值取 1 的補數 10.SWAP:累積器Acc之高四位元與低四位元之值互換 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 ANL 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 ORL 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 XRL 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 RL 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 RLC 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 RR 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 RRC 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 CLR 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 CPL 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 SWAP 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 算術指令(Arithmetic operations) 1.ADD:相加 2.ADDC:含進位的相加 3.INC:加一 4.SUBB:相減 5.DEC:減一 6.MUL :相乘 7.DIV :相除 8.DA :十進位調整 算術運算指令除了〝INC〞與〝DEC〞外, 其他的運算元1皆為累加器Acc, 運算所得的結果也是存入Acc中 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 ADD 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 ADDC 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 INC 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 SUBB 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 DEC 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 布林運算指令(Boolean variable operations) 1.MOV:位元轉移運算 2.ANL :位元邏輯AND運算 3.ORL :位元邏輯OR運算 4.CLR :位元清除運算 5.CPL :位元補數運算 6.SETB:位元設定運算 應用例 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 位元 MOV 指令說明 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 位元 SETB 指令說明 top1@mail.hyivs.tnc.edu.tw
Bit 應用例 1. 將位址20H的第0 Bit設定為1,可以寫成下面兩種方式: SETP 00H ;位元定址 SETB 20H.0;第20H位元組的第0位元 2. 將P0的第3 Bit清除為0,可以寫成下面三種方式: CLR 83H ;位元位址 CLR 80H.3 ;第80H位元組的第3位元 CLR P0.3 ;P0暫存暫存器的第3位元 3. 將IT0位元的值反相,可以寫成下面四種方式: CPL 88H ;位元位址 CPL 88H.0 ;第88位元組的第0位元 CPL IT0 ;位元名稱 CPL TCON.0 ;TCON暫存器的第0位元
TOP / 930203 程式跳躍指令(Program branching) 一、無條件跳躍指令 二、有條件跳躍指令 三、副程式呼叫指令與返回指令 四、延遲指令 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 無條件跳躍指令 1.AJMP :絕對跳躍 (Absolute jump) 跳到此 11 bit 位址範圍,暨跳躍範圍據此指令 2 K byte 的距離 2.LJMP :長程跳躍 (Long jump) 跳到此 16 bit 位址範圍,暨跳躍範圍據此指令 64 K byte 的距離 3.SJMP :短程跳躍 (Short jump) 跳到 相對位址範圍,暨跳躍範圍據此指令前 128 byte後127 byte的距離 4.JMP :間接跳躍 ( Jump indirect),Ex :JMP @A+DPTR PC 值變更為累積器 Acc 內容值與 DPTR 內容值之和 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 有條件跳躍指令 1.JC :若 進位旗標 C = 1 就跳至相對位址去執行 2.JNC :若進位旗標 C = 0 就跳至相對位址去執行 3.JB :若 bit = 1 就跳至相對位址去執行 4.JNB :若 bit = 0 就跳至相對位址去執行 5.JBC :若 bit = 1 就跳至相對位址去執行,同時清除此 bit 為 0 6.JZ :若 累積器 A 等於 0就跳至相對位址去執行 7.JNZ :若 累積器 A 不等於 0就跳至相對位址去執行 8.CJNE :若 累積器 A 不等於 直接定址資料值,就跳至相對位址rel去執行 9.DJNZ :若 暫存器 Rn 不等於 0 ,就跳至相對位址 rel 去執行 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 副程式呼叫指令與返回指令 一、ACALL:絕對跳越(呼叫) (Absolute call) 1.PC值存入堆疊中 2. 11 bit 位址存入 PC 中 3.程式需存於 2 K byte 的範圍 二、LCALL :絕對跳越(呼叫) (Long call) 1.PC值存入堆疊中 2. 16 bit 位址存入 PC 中 3.程式需存於 64 K byte 的範圍 三、RET :副程式返回指令 四、RETI :中斷副程式返回指令 top1@mail.hyivs.tnc.edu.tw
TOP / 930203 延遲指令 NOP :指令不作運算,PC 值內容加 1 用途:增加延遲時間 除錯使用 top1@mail.hyivs.tnc.edu.tw