微控制器指令 mov c,1Fh為什麼?

時間 2021-10-15 04:23:08

1樓:XerolySkinner

不請自來

首先,觀察命令 MOV C,1FH

第乙個引數C,指的是PSW暫存器裡面的進製指示符CY

第二個引數1FH,注意不是#1FH,沒有#意味著這並不是乙個立即數,他指的是乙個位址.

圖1:網上找的圖,其他部分和這個問題關係不大,關注位定址區

這個位址1FH,指的是位定址區裡面的乙個位,既然是乙個位,那麼自然只有0和1

也就是說,這條命令的意思為:將位定址區里位址為1FH的那個位的資料,傳給C

如果除錯這條指令,我們在Debug視窗裡可以看到:

只看綠框裡面的就行了,其他內容是答主在寫的其他工程

在除錯視窗裡,同樣的命令等價為MOV C,0x23.7

這裡的0x23.7也就是原命令的1FH,意為取0x23這個位址的第7位

就像P3.2表示P3暫存器的第2位一樣,而P3的位址是0xB0,故P3.2同樣可以表達為0xB0.2

如果看到這裡還不了解,可能是對位定址區不太了解,下面做個盡量簡單的解釋:

現在有兩個命令如下:

MOV A,1FH

MOV C,1FH

這兩個指令裡的1FH指的是同乙個地方嗎?

第乙個指令,是將位址為1FH的內容賦給A暫存器,我操作的是乙個位元組的資料

第二個指令,是將位定址區里"標號"為1FH的內容賦給C標誌,實質是乙個位的操作

一般,我隨便乙個位址像是00H,指的都是那個位址裡乙個位元組那八個位的內容

而在位定址區域這20H~2FH(見圖1)的空間裡,每乙個位都有他自己的位址

20H.0叫00H\20H.1叫01H\20H.2叫02H...23H.7叫1FH\24H.0叫20H

MOV C,XXH這條指令裡,後面的"XXH"預設指的就是位定址區域裡面的那個位址

倒過來,MOV XXH,C裡面的XXH指的也是位定址區里那個位址,只不過動作剛好相反

我們可以除錯個小程式來試驗一下:以上

2樓:cclass

這是乙個位操作指令,是將1fh的內容給c。其中1fh是內部ram中的位定址區這個區有16個位元組,乙個位元組有8位。所以1fh就是第四個位元組的第八位了。

所以整條指令的意思就是將內部ram的這個位送給c,當然這個位只有1或者0了。所以用彙編指令的時候要講微控制器的儲存結構弄清楚,記下每一種定址方式就會更好了。

微控制器為什麼能直接燒錄程式?

張浩 分幾種情況吧,有些可以通過isp協議之類操作flash讀寫暫存器來實現燒寫,有些通過內部固化的一小段程式來和上位機通訊,或者兩者都有。如果是支援ram執行的微控制器,比如stm32,則兩種方式都可以,但是前者的方式顯然慢得多。所以jlink,stlink之類都是先寫一小段程式到ram,再執行這...

為什麼微控制器的晶振會有 11 0592MHz 這個數字?

大家回答的都差不多了。我來補充乙個如果不用標準的11.0592行不行?其實是可以的。因為是非同步通訊,大家都是以相同的速度進行通訊。那麼用過取樣方法。用乙個4倍頻去取樣。這樣乙個位元的誤差就確定了。乙個序列通訊大概10bit,誤差是累積的。那麼大概頻率差異在5 左右就是可以接受的。所以,現在很多MC...

70年代,微控制器為什麼被設計出來?

老年性CACZ 這不是一念之差,而是歷史必然。分立元件計算機 單板機 微控制器 從需求上說,需要電路結構簡單 元器件少 體積小 成本低。所以,如果能夠把外圍期間整合到乙個封裝裡面就太好了,結構可以大大簡化 元器件數量可以大大減少,體積可以大大縮小,成本 可靠性也可以明顯提高。從供給上來說,隨著技術的...