5.基址加變址定址
6.相對定址
7.位定址
立即定址就是不定址,直接把被操作的資料(立即數)寫在指令當中。在指令**中,需要在立即數前面加上 #,表示立即定址。
例如:把資料40h傳送到累加器acc中。
指令
執行第三步程式時,暫存器a內資料變為十六進製制0x40。
直接定址就是將被操作的資料在儲存器中的位址寫在指令**當中。也就是將運算元的位址寫在指令當中。
例如:位址40h中的資料為5bh,將40h中的資料傳入累加器acc中。
指令:
這條指令中的40h,與立即定址中的#40h意義不同,這裡的40h表示資料#5bh的位址。
單步執行到第4行指令時,累加器中的資料變為0x5b。
暫存器定址就是將運算元(被操作的資料)存放在暫存器中。能夠實現暫存器定址的暫存器有a、b、dptr、r0 ~ r7。
例如:
在第3行指令中,對於目的運算元來說就是暫存器定址,對於源運算元來說就是立即定址。
在第4行指令中,目的運算元和源運算元都是暫存器,那麼二者都是暫存器定址。
與暫存器定址相似,在暫存器定址時,暫存器中存放的是運算元,而寄存機間接定址時,暫存器中存放的是運算元的位址。只用r0、r1、dptr可以實現暫存器間接定址
例如:
暫存器r0中存放的是資料3fh的位址40h,這樣暫存器間接定址可以將資料3fh傳到累加器acc中。
累加器的資料變為0x3f。
4.1記錄一下除錯程式過程中遇到的乙個錯誤
如果程式這樣寫,會有什麼錯誤。除錯一下。
a中的資料沒有變,可以看見r0中是0x3f,這時候a通過暫存器間接定址得到的是位址3fh中的資料0x00。
基址暫存器只能是pc和dptr,變址暫存器為累加器a。這種定址方式是將pc或dptr中得值與a中的值相加,得到的結果是運算元的位址。注意:是運算元的位址,不是運算元本身。
例如:movc a, @a+dptr
這條指令是把a和dptr中的值相加,得到運算元的位址,存到a中,然後a在根據位址去找到運算元。
movc a,@a+pc
同理,這條只是將dptr換為pc。
相對定址就是pc指標當前指向的值,與設定的jc偏移量相加得到的值作為目標位址,其中偏移量是自己設定的。
jc 80h
假如這條指令存放在1005h,取出操作碼後pc指向1006h,取出偏移量後pc指向1007h,那麼目標位址就是1007h + 80h,但是偏移量是有符號數,80h是-128的補碼,因此最後的目標位址是0f87h。
微控制器中21個特殊功能暫存器,其中有11個是可位定址的(acc、b、ip、ie、psw、scon、tcon、p0 ~ p3)
一共有四種表示形式,以psw為例
直接使用位位址
位名稱單元位址加位
特殊功能暫存器名稱加位
mov c, 0d2h
mov c, ov
mov c, 0d0h.2
mov c, psw.2
微控制器指令系統 1
本篇部落格主要列出了微控制器的主要指令,供開發人員參考。作為乙個微控制器初學者,記住指令特別的痛苦,不過主要還是要理解,多練習指令,寫多了就記住了,這是乙個很自然的過程。目錄 一 定址方式 二 指令分類 1 資料傳送類指令 2 算術運算類指令 定址方式有七種 1.立即定址 如 mov a,3ah 2...
微控制器及微控制器系統
微控制器及微控制器系統 1 什麼是微控制器?微控制器是將 處理器 cpu 隨機儲存器 ram 唯讀儲存器 rom或eprom 定時器晶元和一些輸入 輸出介面電路整合在乙個晶元上的微控制器 microcontroller 處理器包括運算器 控制器和暫存器3個主要部分,是微控制器的核心。儲存器按工作方式...
單片微控制器
微控制器又稱單片微控制器,它不是完成某乙個邏輯功能的晶元,而是把乙個計算機系統整合到乙個晶元上。相當於乙個微型的計算機,和計算機相比,微控制器只缺少了i o裝置。概括的講 一塊晶元就成了一台計算機。它的體積小 質量輕 便宜 為學習 應用和開發提供了便利條件。同時,學習使用微控制器是了解計算機原理與結...