freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[電腦基礎(chǔ)知識]第2章mcs-51單片機(jī)應(yīng)用教程(已修改)

2025-01-31 08:50 本頁面
 

【正文】 第 2章 單片機(jī)的指令系統(tǒng) 指令系統(tǒng)概述 尋址方式 指令功能介紹 小結(jié) 習(xí)題 通過對本章的學(xué)習(xí),讀者應(yīng)具備以下能力: 熟練掌握不同尋址方式以及匯編指令的用法 掌握偽指令的使用以及匯編語言程序的完整格式 掌握算術(shù)運(yùn)算類指令對 PSW各標(biāo)志位的影響 理解匯編語言程序的執(zhí)行過程 本章學(xué)習(xí)目標(biāo) 一種計(jì)算機(jī)所有指令的集合,稱為該計(jì)算機(jī)的指令系統(tǒng)。它是表征計(jì)算機(jī)性能的重要標(biāo)志。各類計(jì)算機(jī)都有專用的指令系統(tǒng)。 指令系統(tǒng)概述 MCS51單片機(jī)共有 111條指令,有幾種不同的分類方法。 ( 1) 按指令功能分類,如圖 21所示。 指令分類 圖 21 按指令功能分類圖 ( 2) 按指令字長分類,如圖 22所示。 圖 22按指令字長分類圖 ( 3) 按指令執(zhí)行時間分類,如圖 23所示。 圖 23 按指令執(zhí)行時間分類圖 用 MCS51單片機(jī)匯編語言表示的指令格式如下: [標(biāo)號 ]: 操作碼 [目的操作數(shù) ], [源操作數(shù) ]; [注釋 ] 一條匯編語句是由標(biāo)號、操作碼、操作數(shù)和注釋部分組成的,其中方括號中的部分是可選項(xiàng)。 例如: AA: ADD A, 10H ; 執(zhí)行加法操作 AA: 為標(biāo)號, ADD為操作碼, A與# 10H為操作數(shù), “ ; ” 后面為注釋部分。 指令格式 用匯編語言編寫程序時,應(yīng)注意以下幾個問題: ( 1) 標(biāo)號 標(biāo)號是語句地址的標(biāo)志符號。有關(guān)標(biāo)號的規(guī)定如下: ① 標(biāo)號由 1~ 8個字母或數(shù)字組成,可以使用一個下劃線符號 “ _” 。 ② 第一個字符必須是字母。 ③ 指令助記符或系統(tǒng)中保留使用的字符串不能作為標(biāo)號。 ④ 標(biāo)號后面必須跟一個冒號。 ⑤ 一條語句可以有標(biāo)號,也可以沒有標(biāo)號。標(biāo)號的有無取決于本程序中其他語句是否需要訪問這條語句。 以下是合法的標(biāo)號 以下是不合法的標(biāo)號 LOOP1: 5LOOP: ( 第一個字符是 數(shù)字) START: A*5: ( “*”不能在標(biāo)號中出 現(xiàn)) Q4_: ADD: ( 指令助記符) SSS: START( 無冒號) L123: L12345678: ( 超過 8個字符) ( 2) 操作碼 規(guī)定語句執(zhí)行的操作。操作碼是以指令助記符或偽指令助記符表示的。操作碼是匯編指令中惟一不能空缺的部分。 ( 3) 操作數(shù) 用于給指令的操作提供數(shù)據(jù)或地址。在一條指令中,操作數(shù)可以為 1項(xiàng)、 2項(xiàng)或 3項(xiàng),各操作數(shù)之間用逗號隔開,操作數(shù)也可能空缺。 例如: LOOP: INC A ; 1項(xiàng)操作數(shù) ADD A, 50H ; 2項(xiàng)操作數(shù) CJNE A, 5, LOOP ; 3項(xiàng)操作數(shù) RET ; 無操作數(shù) ( 4) 注釋 注釋不屬于語句的功能部分,它只對語句進(jìn)行解釋說明。在程序匯編時注釋字段不被匯編,可有可無,只起說明作用。注釋內(nèi)容以 “ ; ” 開頭。 ( 5) 分隔符 分隔符用于分割語句的各個部分,以便于區(qū)分。冒號 “ : ” 用于標(biāo)號之后;空格用于操作碼和操作數(shù)之間;逗號 “ , ” 用于操作數(shù)之間;分號 “ ; ”用于注釋之前。 為節(jié)省存儲空間, MCS51單片機(jī)采用變字長指令方式。按 8位二進(jìn)制數(shù)為一個字節(jié),指令字長有單字節(jié)、雙字節(jié)和三字節(jié) 3種,在存儲單元中分別占1~ 3個單元。 指令周期是指執(zhí)行一條指令所需要的時間。指令字節(jié)數(shù)越多,所占存儲單元則越多,但指令周期并不與指令所占字節(jié)數(shù)成比例。 指令字長和指令周期 尋址方式是指 CPU尋找操作數(shù)或操作數(shù)地址的方式。計(jì)算機(jī)執(zhí)行程序的過程是不斷地尋找操作數(shù)并進(jìn)行操作的過程。 MCS51單片機(jī)共有 7種尋址方式,分述如下。 尋址方式 1. 尋址范圍 指令中直接給出操作數(shù)所在的單元地址,它的尋址范圍為單片機(jī)內(nèi)部 RAM。 ( 1) 內(nèi)部 RAM低 128單元。在指令中直接以單元地址形式給出,地址范圍 00H~ 7FH; ( 2) 特殊功能寄存器 SFR。 直接尋址是 SFR惟一的一種尋址方式。 SFR可以以單元地址給出,也可以用寄存器符號形式給出( A、 AB、 DPTR除外)。 直接尋址 2. 使用注意事項(xiàng) ( 1) 尋址特殊功能寄存器 SFR時,可以用直接地址,也可以用寄存器名。 例如: MOV A, 0D0H ; A← ( D0H) MOV A, PSW ; A← ( PSW) 這兩條指令匯編后機(jī)器碼完全一樣,均為 E5D0H,其中 D0H為程序狀態(tài)字 PSW寄存器的物理地址。物理地址 D0前要加 0(凡以字母 A~ F開頭的十六進(jìn)制數(shù)均需加前導(dǎo) 0)。 ( 2) 在 MCS51單片機(jī)指令系統(tǒng)中,累加器 A有三種不同的表達(dá)方式,即 A、 ACC和 E0H, 分屬不同的尋址方式,但指令的執(zhí)行結(jié)果完全相同。 例如: INC A ; 寄存器尋址方式 INC ACC ; 直接尋址方式 INC 0E0H ; 直接尋址方式 操作數(shù)直接由指令給出,通常緊跟指令操作碼之后的字節(jié)是操作數(shù),該操作數(shù)被稱為立即數(shù)。一般立即數(shù)可以是 8位二進(jìn)制數(shù),也可以是 16位二進(jìn)制數(shù)。 立即尋址 例如: MOV A, 7AH MOV DPTR, 1234H 注意: 立即數(shù)前加 “ ” 號,以區(qū)別直接地址。 例如: MOV A, 30H ; A← 30H MOV A, 30H ; A← ( 30H) 第一條指令是把立即數(shù) 30H送累加器 A, 而第二條指令把 30H單元的內(nèi)容送累加器 A。 這種尋址方式中,操作數(shù)在寄存器中,確定了寄存器,就得到了操作數(shù)??捎糜诩拇嫫鲗ぶ返募拇嫫饔校? ( 1) 四組工作寄存器 R0~ R7共 32個工作寄存器。由程序狀態(tài)字 PSW中的 RS RS0兩位的狀態(tài)進(jìn)行當(dāng)前工作寄存器組的選擇。 ( 2) 部分特殊功能寄存器有 A、 AB、 DPTR和 Cy。 例如: MOV A, R3 ; 當(dāng)前 R3中的內(nèi)容送累加器 A。 寄存器尋址 作為被尋找的操作數(shù)。用來存放操作數(shù)地址的寄存器稱為指針。這種尋址方式稱為寄存器間接尋址方式。 MCS51單片機(jī)用于間接尋址的寄存器有 R0、 R堆棧指針 SP以及數(shù)據(jù)指針 DPTR。 寄存器間接尋址 1. 尋址范圍 ( 1) 內(nèi)部 RAM低 128單元,地址范圍 00H~ 7FH,用 Ri( i = 0, 1) 作為間接尋址寄存器。 ( 2) 片外 RAM的 64KB, 地址范圍 0000H~FFFFH, 用 DPTR作為間接尋址寄存器。也可用 Ri作為間接尋址寄存器,此時用 P2口指示高 8位地址,Ri指示低 8位地址,可尋址片外 RAM( I/O口)64KB區(qū)域。 例如: 設(shè)( R1) =60H,( 60H) =50H MOV A, @ R1 ; 執(zhí)行結(jié)果( A) =50H 2. 使用注意事項(xiàng) ( 1) 為區(qū)別寄存器尋址方式,間接尋址寄存器前加 @。 ( 2) 寄存器間接尋址方式不能用于對特殊功能寄存器 SFR的尋址。 例如: MOV R0, 0F0H MOV A, @R0 以上指令不能執(zhí)行,因?yàn)?0F0H為特殊功能寄存器 B的物理地址,而對于特殊功能寄存器,不能對其進(jìn)行間接尋址,只能直接尋址。 ( 3) 棧操作指令也是間接尋址方式,它以堆棧指針 SP作為間接尋址寄存器。 MCS51單片機(jī)的變址尋址是以數(shù)據(jù)指針 DPTR或程序計(jì)數(shù)器 PC作為基址寄存器,以累加器 A作為變址寄存器,并以兩者內(nèi)容相加形成新的 16位地址作為操作數(shù)地址,再尋址該地址,讀取數(shù)據(jù)。 例如: MOVC A, @A+PC 設(shè)執(zhí)行指令之前( A) = 50H, 要取的操作數(shù)為 37H,該指令所在地址為 3F00H單元。 變址尋址 指令功能是把該指令當(dāng)前地址 PC值與 A累加器內(nèi)容相加形成操作碼地址 3F51H, 3F51H中的內(nèi)容 37H送 A累加器。(當(dāng)前地址為取指后的 PC值,本例PC當(dāng)前值為 3F01H。) 指令執(zhí)行過程如圖 24所示。 圖 24 變址尋址示意圖 對 MCS51單片機(jī)指令系統(tǒng)變址尋址方式的幾點(diǎn)說明: ( 1) 變址尋址方式只能對程序存儲器進(jìn)行尋址,因此只能用于讀取數(shù)據(jù),而不能用于存放數(shù)據(jù),它主要用于查表性質(zhì)的訪問。 ( 2) 變址尋址指令只有 3條: MOVC A, @A+PC MOVC A, @A+DPTR JMP @A+DPTR 前兩條指令是在程序存儲器中尋找操作數(shù),指令執(zhí)行完畢 PC當(dāng)前值不變。后一條指令是要獲得程序的跳轉(zhuǎn)地址,指令執(zhí)行完畢 PC值改變。 相對尋址用于訪問程序存儲器,只出現(xiàn)在轉(zhuǎn)移指令中。 “ 尋址 ” 不是尋找操作數(shù)的地址,而是尋找程序跳轉(zhuǎn)地址,它以 PC的當(dāng)前值加上指令中給出的相對偏移量( rel) 形成轉(zhuǎn)移地址。相對偏移量( rel) 是一個帶符號的 8位二進(jìn)制數(shù),以補(bǔ)碼形式出現(xiàn)。所以程序的轉(zhuǎn)移范圍為以 PC當(dāng)前值為中心,介于 128~ +127之間。 相對尋址 例如: JC rel 設(shè) rel=85H, Cy=1, 這是一條以 Cy狀態(tài)為條件的轉(zhuǎn)移指令,因?yàn)樵撝噶顬閮勺止?jié)指令, CPU取出指令的第二個字節(jié)時, PC當(dāng)前值為原 PC值 +2。由于Cy=1, 因此程序轉(zhuǎn)向( PC) +2+rel單元去執(zhí)行。注意此時 rel=85H為負(fù)數(shù)。 若轉(zhuǎn)移指令放在 2022H單元,取出指令后 PC指向2022H單元,新的轉(zhuǎn)移地址( PC)+rel=2022H+85H=2022H+FF85H( 16位二進(jìn)制補(bǔ)碼) =1F89H, 經(jīng)補(bǔ)碼運(yùn)算后,形成跳轉(zhuǎn)地址1F89H。 指令執(zhí)行過程如圖 25所示。 圖 25 相對尋址( JC 85H) 示意
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1