單片機(jī)課件-指令系統(tǒng).ppt
《單片機(jī)課件-指令系統(tǒng).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)課件-指令系統(tǒng).ppt(21頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
單片機(jī)原理與接口應(yīng)用 第四章指令系統(tǒng) 4 1指令格式 一 指令和指令格式指令 是CPU根據(jù)人的意圖來執(zhí)行某種操作的命令 指令系統(tǒng) 一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部指令的集合 8051單片機(jī)指令系統(tǒng)功能很強(qiáng) 例如 它有乘 除法指令 豐富的條件轉(zhuǎn)移類指令 并且使用方便 靈活 程序 要使計(jì)算機(jī)按照人的思維完成一項(xiàng)工作 就必須讓CPU按順序執(zhí)行各種操作 即一步步地執(zhí)行一條條的指令 這些按人的要求編排的指令操作序列稱為程序 程序設(shè)計(jì) 編排程序的過程就叫作程序設(shè)計(jì) 程序設(shè)計(jì)語言 分為機(jī)器語言 匯編語言和高級(jí)語言 本章重點(diǎn)介紹匯編語言 目標(biāo)程序 機(jī)器語言用二進(jìn)制編碼表示每條指令 它是計(jì)算機(jī)能直接識(shí)別和執(zhí)行的語言 用機(jī)器語言編寫的程序稱為機(jī)器語言程序或指令程序 機(jī)器碼程序 因?yàn)闄C(jī)器只能直接識(shí)別和執(zhí)行這種機(jī)器碼程序 所以又稱它為目標(biāo)程序 例如 要做10加20的加法 在MCS 5l中可用機(jī)器碼指令編程 0111010000001010把10放到累加器A中00100l0000010100A加20 結(jié)果放A中為了便于書寫和記憶 可采用十六進(jìn)制表示指令碼 以上兩條指令可寫成740AH2414H顯然 用機(jī)器語言編寫程序不易記憶 不易查錯(cuò) 不易修改 匯編語言 匯編語言是用助記符 符號(hào)和數(shù)字等來表示指令的程序語言 容易理解和記憶 它與機(jī)器語言指令是一一對(duì)應(yīng)的 匯編語言不象高級(jí)語言 如BASIC 那樣通用性強(qiáng) 而是屬于某種計(jì)算機(jī)所獨(dú)有 與計(jì)算機(jī)的內(nèi)部硬件結(jié)構(gòu)密切相關(guān) 用匯編語言編寫的程序叫匯編語言程序 把匯編語言源程序翻譯成目標(biāo)程序的過程稱為匯編過程 簡(jiǎn)稱匯編 完成這個(gè)任務(wù)有兩種方法 手工匯編 所謂手工匯編是程序設(shè)計(jì)人員根據(jù)機(jī)器語言指令與匯編語言指令對(duì)照表 把編好的匯編語言程序翻譯成目標(biāo)程序 如上述10加20的例子可寫成 匯編語言程序機(jī)器語言程序MOVA 0AH740AHADDA 14H2414H 機(jī)器匯編 許多公司為了方便用戶 編制了一些軟件 能將用戶編寫的匯編語言源程序翻譯成目標(biāo)程序 在單片機(jī)應(yīng)用系統(tǒng)中 源程序設(shè)計(jì)好后 還要翻譯成二進(jìn)制機(jī)器語言的目標(biāo)程序 計(jì)算機(jī)才可執(zhí)行 這一過程稱匯編 反匯編 在分析現(xiàn)成產(chǎn)品ROM EPROM芯片中的程序時(shí) 有時(shí)要將二進(jìn)制機(jī)器語言翻譯成匯編語言 該過程稱為反匯編 二 指令格式 8051匯編語言指令由操作碼助記符字段和操作數(shù)字段兩部分組成 指令格式如下 操作碼 目的操作數(shù) 源操作數(shù) 例如 MOVA OOH操作碼部分規(guī)定了指令所實(shí)現(xiàn)的操作功能 由2 5個(gè)英文字母表示 例如 JB MOV DJNZ LCALL等 操作數(shù)部分指出了參與操作的數(shù)據(jù)來源和操作結(jié)果存放在什么空間單元 操作數(shù)可以直接是一個(gè)數(shù) 立即數(shù) 或者是一個(gè)數(shù)據(jù)所在的空間地址 即在執(zhí)行指令時(shí)從指定的地址空間取出操作數(shù) 操作碼和操作數(shù)都有對(duì)應(yīng)的二進(jìn)制代碼 指令代碼由若干字節(jié)組成 805l指令系統(tǒng)中 有一字節(jié) 兩字節(jié)或三字節(jié)指令 1 一字節(jié)指令一字節(jié)指令中的8位二進(jìn)制代碼既包含操作碼的信息 也包含操作數(shù)的信息 如 INCA805l單片機(jī)共有49條一字節(jié)指令 2 雙字節(jié)指令用一個(gè)字節(jié)表示操作碼 另一個(gè)字節(jié)表示操作數(shù)或操作數(shù)所在的地址 其指令格式為 操作碼立即數(shù)或地址如 MOVA 00H8051中有45條雙字節(jié)指令 3 三字節(jié)指令一個(gè)字節(jié)操作碼 兩個(gè)字節(jié)操作數(shù) 其格式如下 操作碼立即數(shù)或地址立即數(shù)或地址8051單片機(jī)共有三字節(jié)指令17條如 MOV90H 00H 2偽指令 偽指令不是真正的指令 無對(duì)應(yīng)的機(jī)器碼 在匯編時(shí)不產(chǎn)生目標(biāo)程序 機(jī)器碼 它只是用來對(duì)匯編過程進(jìn)行某種控制 標(biāo)準(zhǔn)的MCS 5l匯編程序 如Intel的ASM51 定義的偽指令常用的有以下幾條 1 ORG匯編起始命令格式 ORG16位地址其功能是規(guī)定該偽指令后面程序的匯編地址 即匯編后生成目標(biāo)程序存放的起始地址 例如 ORG2000HSTART MOVA 64H既規(guī)定了標(biāo)號(hào)START的地址是2000H 又規(guī)定了匯編后的第一條指令碼從2000H開始存放 ORG可以多次出現(xiàn)在程序的任何地方 當(dāng)它出現(xiàn)時(shí) 下一條指令的地址就由此重新定位 2 END 匯編結(jié)束命令END命令通知匯編程序結(jié)束匯編 在END之后所有的匯編語言指令均不予以處理 3 EQU賦值命令格式 字符名稱EQU項(xiàng) 數(shù)或匯編符號(hào) EQU命令是把 項(xiàng) 賦給 字符名稱 注意這里的字符名稱不等于標(biāo)號(hào) 其后沒有冒號(hào) 其中的項(xiàng) 可以是數(shù)也可以是匯編符號(hào) 用EQU賦過值的符號(hào)名可以用作數(shù)據(jù)地址 代碼地址 位地址或是一個(gè)立即數(shù) 因此 它可以是8位的 也可以是16位的 如 AAEQUR1 AA就代表了工作寄存器RlMOVA AA 4 DATA數(shù)據(jù)地址賦值命令格式 字符名稱DATA表達(dá)式 5 DB定義字節(jié)命令格式 DB 項(xiàng)或項(xiàng)表 6 DW定義字命令格式 DW16位數(shù)據(jù)項(xiàng)或項(xiàng)表 7 DS定義存儲(chǔ)空間命令格式 DS表達(dá)式 8 BIT位地址符號(hào)命令格式 字符名BIT位地址 4 2尋址方式 尋址就是尋找指令中操作數(shù)或操作數(shù)所在地址 尋址方式就是如何找到存放操作數(shù)的地址把操作數(shù)提取出來的方法 它是計(jì)算機(jī)的重要性能指標(biāo)之一 也是匯編語言程序設(shè)計(jì)中最基本的內(nèi)容之一 必須十分熟悉 牢固掌握 8051單片機(jī)尋址方式有七種 寄存器尋址 直接尋址 立即數(shù)尋址 寄存器間接尋址 變址尋址 相對(duì)尋址 位尋址 1 寄存器尋址 寄存器尋址就是由指令指出寄存器組R0 R7中某一個(gè)或其它寄存器 A B DPTR等 的內(nèi)容作為操作數(shù) 例如MOVA R0MOVP1 AADDA R0 2 直接尋址 在指令中直接給出操作數(shù)所在存儲(chǔ)單元的地址 稱直接尋址方式 此時(shí) 指令中操作數(shù)部分是操作數(shù)所在地址 在8051中 使用直接尋址方式可訪問片內(nèi)RAM的128個(gè)單元以及所有的特殊功能寄存器 SFR 對(duì)于特殊功能寄存器 既可以使用它們的地址 也可以使用它們的名字 例如 MOVA 3AH 3AH A把片內(nèi)RAM中3AH這個(gè)單元的內(nèi)容送累加器A MOVA P1 P1口 A是把SFR中P1口內(nèi)容送A 它又可寫成MOVA 90H其中90H是P1口的地址 3 立即數(shù)尋址 指令操作碼后面緊跟的是一字節(jié)或兩字節(jié)操作數(shù) 用 號(hào)表示 以區(qū)別直接地址 例如 MOVA 3AH 3AH AMOVA 3AH 3AH A前者是表示把片內(nèi)RAM中3AH這個(gè)單元的內(nèi)容送累加器A 而后者則表示把3AH這個(gè)數(shù)又 MOVDPTR 2000H 4 寄存器間接尋址 操作數(shù)的地址事先存放在某個(gè)寄存器中 寄存器間接尋址是把指定寄存器的內(nèi)容作為地址 由該地址所指定的單元內(nèi)容作為操作數(shù) 8051規(guī)定R0或R1為間接尋址寄存器 它可尋址內(nèi)部RAM低位地址的128字節(jié)單元內(nèi)容 還可采用數(shù)據(jù)指針 DPTR 作為間接尋址寄存器 尋址外部數(shù)據(jù)存儲(chǔ)器的64K字節(jié)空間 例如 將片內(nèi)RAM65H單元的內(nèi)容47H送A 可執(zhí)行指令 MOVR0 65H R0 65HMOVA R0 A 65H 指令的執(zhí)行過程為 當(dāng)程序執(zhí)行到本指令時(shí) 以指令中所指定的工作寄存器R0內(nèi)容 65H 為指針 將片內(nèi)RAM65H單元內(nèi)容47H送累加器A 5 變址尋址 基址寄存器十變址寄存器間接尋址 變址尋址是以某個(gè)寄存器的內(nèi)容為基地址 然后在這個(gè)基地址的基礎(chǔ)上加上地址偏移量形成真正的操作數(shù)地址 8051中采用數(shù)據(jù)指針DPTR或PC為變址寄存器 地址偏移量是累加器A的內(nèi)容 以DPTR或PC的內(nèi)容與累加器A的內(nèi)容之和作為操作數(shù)的l6位程序存儲(chǔ)器地址 在8051中 用變址尋址方式只能訪問程序存儲(chǔ)器 訪問的范圍為64KB 當(dāng)然 這種訪問只能從ROM中讀取數(shù)據(jù)而不能寫入 例如 MOVCA A十DPTR A 十 DPTR A這種方式多用于查表操作 6 相對(duì)尋址 相對(duì)尋址只出現(xiàn)在相對(duì)轉(zhuǎn)移指令中 相對(duì)轉(zhuǎn)移指令執(zhí)行時(shí) 是以當(dāng)前的PC值加上指令中規(guī)定的偏移量rel而生成實(shí)際的轉(zhuǎn)移地址的 這里所說的PC的當(dāng)前值是執(zhí)行完相對(duì)轉(zhuǎn)移指令后的PC值 一般將相對(duì)轉(zhuǎn)移指令操作碼所在地址稱為源地址 轉(zhuǎn)移后的地址稱為目的地址 則有 目的地址 源地址十2 相對(duì)轉(zhuǎn)移指令字節(jié)數(shù) 十rel例如 執(zhí)行指令SJMPrel 7位尋址 采用位尋址方式的指令 其操作數(shù)將是8位二進(jìn)制數(shù)中的某一位 在指令中給出的是位地址 即給出片內(nèi)RAM某一單元中的一位 位地址在指令中用Bit表示 例如 CLRbit8051單片機(jī)片內(nèi)RAM有兩個(gè)區(qū)域可以位尋址 其一是20H一2FH的l6個(gè)單元中的128位 其二是字節(jié)地址能被8整除的特殊功能寄存器 在805l中 位地址常用下列兩種方式表示 直接使用位地址 對(duì)于20H一2FH的16個(gè)單元共128位的位地址分布是00H一7FH 對(duì)于特殊功能寄存器 可以直接使用位地址 又可以直接用寄存器名字加位數(shù)表示 如PSW 3等- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī) 課件 指令系統(tǒng)
鏈接地址:http://m.zhongcaozhi.com.cn/p-6753241.html