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

正文內(nèi)容

mcs-51單片機指令系統(tǒng)講義(編輯修改稿)

2025-01-31 00:13 本頁面
 

【文章內(nèi)容簡介】 0=40h和 R1=41h。試問,下面的指令執(zhí)行后,累加器 A、 40h、 41h和 42h單元中的內(nèi)容是什么。 MOV A,R0 ; RAM40h單元內(nèi)容 11h送 A MOV R1,A ; A中的 11h送 RAM的 41h單元 MOV 42H,R1 ; RAM的 41h單元內(nèi)容 11h送 RAM42h中 返回 5,內(nèi)部數(shù)據(jù)傳送類指令的使用 1,在使用傳送指令時 ,可以根據(jù)實際情況選用恰當尋址方式。上面給出的各種類型的傳送指令是 INTEL公司在設計MCS51的硬件時就已經(jīng)確定下來。編程人員只能像查字典一樣去查找、使用。不能根據(jù)主觀意愿去“創(chuàng)造”指令。 例如:要將 R0中的數(shù)據(jù)傳送到 R1中。如何使用指令去完成上面的操作? mov r1,r0 是否可以?回答是否定的!因為在 MCS51的指令系統(tǒng)中沒有此條指令!只能使用: 1, mov a,r0 或: 2, mov 01h,00h mov r1,a 因此,必須從 MCS51的指令表中選擇使用指令。 MCS51內(nèi)部數(shù)據(jù)傳送類指令 方式圖 累加器 A direct 直接尋址 Ri間址 Rn寄存器 Data立即數(shù) 返回上一次 2,以累加器 A為目的寄存器的傳送指令會影響 PSW中的 奇偶位 P,而其余的指令對 PSW均無影響。 3,要會正確地估計指令的字節(jié)。凡是指令中包含有立即 數(shù)、直接地址的指令,都應當在原有的基礎上加 1。 【舉例】: mov a,Ri ( )個字節(jié) mov a,direct ( )個字節(jié) mov direct,data ( )個字節(jié) mov direct2,direct1 ( )個字節(jié) 4,對于同一問題可以有不同的編程方法。使用不同的方法雖然都可以實現(xiàn)題目的要求,但從指令長度、運行時間和可閱讀性上等綜合因素考慮,不同的方法就有合理和不合理、優(yōu)化和繁雜之分。所以,在學習指令系統(tǒng)和編程時開始就要養(yǎng)成一個好的、合理的編程習慣。 5,注意給程序進行正確的注釋,這對于閱讀、編寫和修改程序都是非常重要的。下面就是一些注釋的例子: MOV A,30H ;( 30h) → A MOV A,R0 ; R0 → A MOV 40H,30H ;( 30h) → 40h MOV A,Ri ; ( Ri ) → A 內(nèi)部傳送類指令舉例 試編出把 30h和 40h單元內(nèi)容進行交換。 MOV A,30H ; (30h) → A MOV 30H,40H ; (40h) → 30h MOV 40H,A ; A → 40h RAM X Y 累加器 A 30H 40H 返回 外部數(shù)據(jù)傳送類指令 1, 16位數(shù)傳送指令 2, 外部 ROM的字節(jié)傳送 3, 外部 RAM的字節(jié)傳送指令 繼續(xù) 1, 16位數(shù)傳送指令 MCS51指令系統(tǒng)中唯一的一條 16位數(shù)據(jù)傳送類指令。 MOV DPTR,data16 DPTR是單片機內(nèi)部 SFR中的兩個寄存器 DPH、 DPL組合而成。其中 DPH為高八位, DPL為低八位。 DPTR是一個專門用于訪問外部存儲器的間址寄存器。尋址能力為 64K (0~ 65535)。 返回 2,外部 ROM的字節(jié)傳送指令 這類指令有兩條,都屬于變址尋址指令。 MOVC A,A+DPTR ; A ← (A+DPTR) MOVC A,A+PC ; PC ← PC+1, A ← (A+PC) 該指令也稱為“查表”指令。在 ROM中建立一個數(shù)據(jù)表,可以使用 DPTR、 PC作為數(shù)據(jù)表格的基地址。 在第一條指令中:用 DPTR作為基地址。使用前,先將數(shù)據(jù)表的首地址送入 DPTR中,累加器 A作為偏移量。由兩者數(shù)據(jù)相加得到待查的表中數(shù)據(jù)地址并取出。 第二條指令是以程序計數(shù)器 PC為基地址。由于 PC的內(nèi)容與該指令在 ROM中的位置有關,所以一旦該指令在程序中的位置確定,其 PC的值也就確定。 外部 ROM的字節(jié)傳送指令 舉例 已知累加器 A中存有 0~ 9范圍內(nèi)的數(shù),試用查表指令編寫出查找出該數(shù)平方的程序。 1,采用 DPTR作基址寄存器 : 設平方表的首地址為 2023h,累加器 A中的內(nèi)容恰好是查表的偏移量。首先將表的起始地址 2023h送入DPTR中。 MOV DPTR,2023H ;指針賦值 MOVC A,A+DPTR ;平方值送 A ROM 0 1 4 9 16 25 36 49 64 81 2023h 2023h 2023h 2023h 2023h 2023h 2023h 2023h 2023h 2023h 2,采用 PC作基址寄存器 : 與 DPTR不同,使用 PC作為基地址時,必須對累 加器 A的數(shù)據(jù)進行修正,以保證 a+pc恰好找到 待查的平方值地址。 ORG 1FFBH 1FFBH 74 data ADD A,data ; data=02h 1FFDH 83H MOVC A,A+PC ; PC=1FFE 1FFEH 80FEH SJMP $ 2023H 00H DB 0 ;平房表首址 2023H 01H DB 1 2023H 04H DB 4 2023H 09H DB 9 2023H 10H DB 16 2023H 19H DB 25 : : : 2023H 51H DB 81 END data為 MOVC指令首地址與表頭地址之間的 單元數(shù)。 74h data 83h 80h FEh 0 1 4 9 16 25 36 49 64 81 2023h 2023h 2023h 2023h 2023h 2023h 2023h 2023h 2023h 2023h 1FFFh 1FFEh 1FFDh 1FFCh 1FFBh 返回 3,外部 RAM的字節(jié)傳送指令 實現(xiàn)外部 RAM和累加器 A之間的數(shù)據(jù)傳送。只有寄存器間接尋址的指令。 MOVX A,Ri 使用 Ri寄存器間址尋址范圍 0~ 255h MOVX Ri,A 在硬件電路中 P0口輸出 8位地址數(shù)據(jù)。 MOVX A,DPTR 使用 DPTR間址,尋址范圍 0~ 65535h MOVX DPTR,A 在硬件電路中,使用 P0口輸出低 8位, P2口輸出高 8位外部 RAM地址。 外部 RAM的字節(jié)傳送指令舉例 已知外部 RAM的 88H單元有一個數(shù) x,試編程將 x送外部RAM的 1818H單元。 【解】:外部 RAM中的數(shù)據(jù)是不能直接傳送的,因此必須使用兩次 MOVX 指令完成此操作。 ORG 2023H MOV R0, 88H ;為 8位指針賦值 MOV DPTR, 1818H ;為 16位指針賦值 MOVX A, R0 ;取 x 到累加器 A MOVX DPTR, A ; x 送 RAM的 1818h單元 SJMP $ ;停機 END 返回 堆棧操作指令 堆棧操作是一種特殊的數(shù)據(jù)傳送指令。 堆棧:一個用來保存程序斷點、數(shù)據(jù)的特殊的存儲區(qū)域。在 MCS51單片機中,棧區(qū)是占用片內(nèi) RAM的存儲空間,具體棧位置由指針 SP來確定(系統(tǒng)上電時, SP=07h)。 1, 進棧操作 : push direct ; sp+1→ sp,(direct)→ (sp) 2, 出棧操作 : pop direct ; (sp)→(direct),sp 1→sp 【注意】: ①尋址方式為直接尋址,所以 push a 是錯誤的,應當是push acc或 push 0e0h, 同理 : push r0也是錯誤的。 ②進棧是堆棧向上 “生長 ”的過程,即 sp+1;出棧則相反。 ③系統(tǒng)上電時, sp=07h。 SP的值可以根據(jù)需要進行修改,以適應具體編程的需要。在確定棧區(qū)位置時要考慮對數(shù)據(jù)區(qū)的影響,以避免數(shù)據(jù)區(qū)與棧區(qū)沖突。 堆棧操作指令舉例(一) 下面是一個 BCD碼轉(zhuǎn)換為二進制的子程序 BCDB中有關堆棧操作的例子。在這里,進棧操作是為了保護主程序中相關寄存器中的數(shù)據(jù),因為子程序要使用這些寄存器。 0800h bcdb: push psw push acc push b : : pop b pop acc pop psw ret RAM b acc psw 棧底 SP 堆棧操作指令舉例(二) 堆棧操作指令除了可以在子程序的設計中,對主程序的數(shù)據(jù)進行保護。還可以根據(jù)堆棧操作的特點完成一些特殊的操作。 【舉例】:設片內(nèi) RAM的 30h單元存有 x,40h單元存有 y。試將兩個單元內(nèi)容互換。 push 30h push 40h pop 30h pop 40h RAM x y y x y x 棧底 SP=07h 40h 30h 繼續(xù) 數(shù)據(jù)交換指令 為提供一種方便的 累加器 和 寄存器 或 RAM之間的數(shù)據(jù)交換。避免了使用一般 mov 傳送指令完成交換時的不便。 格式: xch a,Rn ; a ? Rn xch a,direct ; a ? (direct) xch a,Ri ; a ? (Ri) xchd a,Ri ; a3~ 0?(Ri) 3~ 0 舉例:已知,片外 RAM20h單元、內(nèi)部 RAM20h單元分別有數(shù) x和 y,試編程互將兩數(shù)相交換。 mov R1,20h ; 指針賦初值 movx a,R1 ; x→a xch a,R1 ; 交換 a?(20h), y→a movx R1,a ; y→(20h) 片外 RAM 數(shù)據(jù)交換指令舉例(一) 舉例:已知,片外 RAM20h單元、內(nèi)部 RAM20h單元分別有數(shù) x和 y,試編程互將兩數(shù)相交換。 mov R1,20h ;指針賦初值 movx a,R1 ; x→a xch a,R1 ; 交換 a?(20h),y→a movx R1,a ; y→(20h) 片外 RAM 片內(nèi) RAM y (x) 片外 RAM x (y) (y) x 20h 20h 累加器 A 1 2 3 數(shù)據(jù)交換指令舉例(二) 已知 RAM50h單元有一個 0~ 9的數(shù),試編程將它
點擊復制文檔內(nèi)容
范文總結(jié)相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1