專利名稱:一種基于cisc結(jié)構(gòu)的微處理器構(gòu)架及指令實現(xiàn)方式的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及半導(dǎo)體集成電路設(shè)計領(lǐng)域的微控制器(MCU),尤其是涉及執(zhí)行復(fù)雜指令集的基于CISC結(jié)構(gòu)的微控制器。
背景技術(shù):
目前微控制器(MCU)一般以某一種微處理器內(nèi)核為核心,芯片內(nèi)部集成ROM/EPROM/EEPROM/FlashROM、RAM、總線、總線邏輯、定時/計數(shù)器、WatchDog、I/O、串行口、脈寬調(diào)制輸出、A/D、D/A、LCD驅(qū)動、UART、I2C等各種必要功能和外設(shè)。為適應(yīng)不同的應(yīng)用需求,一個系列的單片機具有多種衍生產(chǎn)品,每種衍生產(chǎn)品的處理器內(nèi)核都是一樣的,不同的是存儲器和外設(shè)的配置及封裝。這樣可以使單片機最大限度地和應(yīng)用需求相匹配。微控制器的最大特點是單片化,體積小,從而使功耗和成本下降,可靠性提高。微控制器是目前嵌入式系統(tǒng)工業(yè)的主流。微控制器的片上外設(shè)資源一般比較豐富,適合于各種應(yīng)用。
嵌入式微控制器目前的品種和數(shù)量最多,較有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300等。另外還有許多半通用系列如支持USB接口的MCU 8XC930/931、C540、C541;支持I2C、CAN-Bus、LCD及眾多專用MCU和兼容系列。目前MCU占嵌入式系統(tǒng)約70%的市場份額。
在MCU開發(fā)方面,以架構(gòu)而言,可分為兩大主流RISC和CISC。RISC指令集組成比較簡單,相對指令執(zhí)行速度較快,但完成一項任務(wù)可能需要多條指令組合而成,針對較復(fù)雜組合的工作便需要占用較多的編譯器時間來執(zhí)行,其總線結(jié)構(gòu)為哈佛型。
CISC的總線結(jié)構(gòu)是馮.諾依曼型,計算機在同一個存儲空間取指令和數(shù)據(jù),數(shù)據(jù)線和指令線分時復(fù)用。在流水線結(jié)構(gòu)方面,取指和執(zhí)行采用單指令流水線結(jié)構(gòu),它的指令集豐富,功能強大。
CISC體系是一種為了便于編程和提高內(nèi)存訪問效率而設(shè)計的體系。其主要特征是使用微代碼操作和具有豐富的指令集,便于設(shè)計新的處理器,能有效縮短新指令的微代碼設(shè)計時間。其豐富的指令集便于應(yīng)用工程師的編程使用。具有雙操作數(shù)格式、寄存器到寄存器、寄存器到內(nèi)存以及內(nèi)存到寄存器等的指令,尋址方式靈活。
屬于CISC結(jié)構(gòu)的單片機主要有Intel的MCS-51系列、Motorola的M68HC系列、Atmel的AT89系列、臺灣Winbond(華邦)W78系列、荷蘭Pilips的PCF80C51系列等;一般來說,控制關(guān)系較簡單的小家電,可以采用RISC型單片機;控制關(guān)系較復(fù)雜的場合,如大家電、通訊產(chǎn)品、工業(yè)控制系統(tǒng)應(yīng)采用CISC單片機在8位CISC微控制器芯片領(lǐng)域,標準體系架構(gòu)都是連續(xù)型的執(zhí)行,傳統(tǒng)的CISC占據(jù)了較大的市場份額,CISC大多有繁雜的指令集,運行效率較低,指令可擴展性較差,應(yīng)用復(fù)雜等缺點,難以滿足越來越快速的通信需求。
CISC單片機主要缺點在于①指令集龐雜,多數(shù)指令的利用率不高。②不同的指令,需要不同的時鐘周期來完成,每條指令要通過執(zhí)行一段解釋性微程序才能完成,需占用較多的CPU時間,執(zhí)行效率不是很高。③由于指令龐大,使編譯程序選擇目標指令的范圍很大,不便優(yōu)化編譯。④強調(diào)數(shù)據(jù)控制,導(dǎo)致設(shè)計復(fù)雜,研制周期長。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種新型的基于CISC的微處理器構(gòu)架及指令實現(xiàn)方式,其在傳統(tǒng)CISC的基礎(chǔ)上做了改進,提出一種有效的系統(tǒng)構(gòu)架,提高了指令運行效率。支持151條基本指令,采用單級四段流水線,運行效率提高,指令組合方便,可滿足各類嵌入式實時控制和通信的要求。
根據(jù)本發(fā)明的第一方面的基于CISC結(jié)構(gòu)的微控制器,該微控制器核包括程序存儲器,數(shù)據(jù)隨機存儲器,特殊功能寄存器堆,數(shù)據(jù)總線和地址總線,流水線指令結(jié)構(gòu),數(shù)據(jù)緩沖區(qū),通用算術(shù)邏輯單元,指令讀取及譯碼器和系統(tǒng)控制模塊,其中,所述的數(shù)據(jù)總線分為各自分離的的8位內(nèi)部數(shù)據(jù)總線和8位程序數(shù)據(jù)總線,所述的系統(tǒng)控制模塊用于產(chǎn)生系統(tǒng)時鐘、系統(tǒng)復(fù)位以及各種讀寫控制電路,所述的單級四段流水線指令處理結(jié)構(gòu)分為4個部分,首先是指令讀取及譯碼電路,即所述的指令讀取及譯碼器通過上述8位程序數(shù)據(jù)總線從程序存儲器讀入指令,并對指令進行譯碼分解;然后通過控制電路根據(jù)譯碼結(jié)果讀取寄存器或者存儲器的內(nèi)容;再通過算術(shù)邏輯單元進行運算;之后對運算的結(jié)果存入寄存器或者數(shù)據(jù)存儲器單元;當執(zhí)行調(diào)用、返回等指令時,會對程序指針進行壓棧和出棧操作,當執(zhí)行跳轉(zhuǎn)等指令時,有指針偏移操作,同時在每讀下一字節(jié)指令時,會對PC有加1的操作。
根據(jù)本發(fā)明的第二方面的基于CISC結(jié)構(gòu)的微控制器,其特征在于所述的數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM)、特殊功能寄存器和數(shù)據(jù)緩沖區(qū)域是空間獨立的,利用地址映射電路將它們的地址映射在連續(xù)的空間上,并可擴展。
根據(jù)本發(fā)明的第三方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于該微控制器的指令集共有151條基本指令,該微控制器支持各類常見的微處理器指令,包括數(shù)據(jù)傳送交換、算術(shù)邏輯運算、比較、乘除法、移位循環(huán)、半字節(jié)操作、位操作、跳轉(zhuǎn)、調(diào)用返回、進棧退棧、軟中斷以及空操作類指令,指令執(zhí)行周期最短的1個工作周期,最長的10個工作周期,指令可以進行相應(yīng)的擴展。
根據(jù)本發(fā)明的第四方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集包括25條數(shù)據(jù)傳送指令,每條指令有其唯一的操作碼識別,指令實現(xiàn)將源地址的數(shù)據(jù)傳送到目的地址中,由于源地址和目的地址可以是多種尋址方式,使得每條指令包含1-4個字節(jié)不等的指令編碼,產(chǎn)生一類控制信號控制完成1)控制有關(guān)寄存器將數(shù)據(jù)傳送至ALU(2)控制ALU完成地址的計算(3)控制從源地址提取數(shù)據(jù)(4)控制數(shù)據(jù)寫入目的地址。
根據(jù)本發(fā)明的第五方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括10條比較指令,每條指令有其唯一的操作碼識別,指令實現(xiàn)將源地址的數(shù)據(jù)與目的地址的數(shù)據(jù)進行比較,每條指令包含1-4個字節(jié)不等的指令編碼,產(chǎn)生一類控制信號控制完成(1)控制有關(guān)寄存器將地址數(shù)據(jù)傳送至ALU(2)控制ALU完成地址的計算(3)控制從源地址和目的地址提取數(shù)據(jù)傳送至ALU(4)控制ALU執(zhí)行減法操作(5)控制將減法的結(jié)果設(shè)置標志寄存器。
根據(jù)本發(fā)明的第六方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括50條算術(shù)邏輯運算指令,每條指令有其唯一的操作碼識別,指令實現(xiàn)將源地址的數(shù)據(jù)與目的地址的數(shù)據(jù)進行算術(shù)或邏輯運算,每條指令包含1-4個字節(jié)不等的指令編碼,產(chǎn)生一類控制信號控制完成(1)控制有關(guān)寄存器將地址數(shù)據(jù)傳送至ALU(2)控制ALU完成地址的計算(3)控制從源地址和目的地址提取數(shù)據(jù)傳送至ALU(4)控制ALU執(zhí)行指令要求的算術(shù)邏輯操作(5)控制將運算的結(jié)果寫入目的寄存器。
根據(jù)本發(fā)明的第七方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,,其特征在于所述的指令集還包括2條十進制調(diào)整指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,指令實現(xiàn)將寄存器中的16進制結(jié)果進行十進制調(diào)整,產(chǎn)生BCD碼,調(diào)整后的結(jié)果仍回寫到寄存器p。
根據(jù)本發(fā)明的第八方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括2條乘除法指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,指令實現(xiàn)寄存器w與累加器a中的無符號數(shù)相乘并回寫結(jié)果,指令實現(xiàn)寄存器對wa與寄存器c中的無符號數(shù)相除并回寫。
根據(jù)本發(fā)明的第九方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括13條循環(huán)移位和半字節(jié)操作指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,指令實現(xiàn)寄存器或者寄存器與內(nèi)存的數(shù)據(jù)的移位或者半字節(jié)移位。
根據(jù)本發(fā)明的第十方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括24條位操作指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,指令實現(xiàn)對寄存器或者內(nèi)存單元數(shù)據(jù)的位進行設(shè)置和運算。
根據(jù)本發(fā)明的第十一方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括11條跳轉(zhuǎn)指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,根據(jù)偏移量指令實現(xiàn)程序的跳轉(zhuǎn)。
根據(jù)本發(fā)明的第十二方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括8條調(diào)用、返回指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,根據(jù)不同的尋址方式,指令實現(xiàn)子程序的調(diào)用和返回。
根據(jù)本發(fā)明的第十三方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括4條進棧退棧指令,產(chǎn)生控制信號,指令實現(xiàn)對程序狀態(tài)字和寄存器內(nèi)容的壓棧和出棧。
根據(jù)本發(fā)明的第十四方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括1條軟中斷指令,產(chǎn)生控制信號,指令實現(xiàn)軟件中斷。
根據(jù)本發(fā)明的第十五方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括1條空操作指令,產(chǎn)生控制信號,指令實現(xiàn)空操作。
根據(jù)本發(fā)明的第十六方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于讀入的指令通過所述的指令讀取及譯碼器分解,按分解后的微指令碼進行譯碼,并執(zhí)行相應(yīng)的操作,根據(jù)尋址方式不同,譯碼后將操作數(shù)或者操作碼分別存儲于不同的操作數(shù)寄存器、微指令碼寄存器、內(nèi)存。
根據(jù)本發(fā)明的第十七方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于所述不同的尋址方式按尋址類型分別為立即數(shù)尋址、直接尋址、寄存器尋址、寄存器間接尋址、隱含尋址、相對尋址、變址尋址、絕對尋址、向量尋址、頁尋址和存儲器位尋址共11種類型。
根據(jù)本發(fā)明的第十八方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于指令執(zhí)行的順序是在時鐘的第一相讀入指令碼并譯碼,同時處理中斷等,第二相讀內(nèi)存單元或者寄存器的數(shù)據(jù)并存儲,第三相執(zhí)行ALU操作,完成指令要求的各種運算或者偏移量的計算,第四相將指令運算得的結(jié)果寫入內(nèi)存及相關(guān)寄存器,同時在每一相進行相關(guān)標志位的設(shè)置和指令周期存儲計算的操作。
根據(jù)本發(fā)明的第十九方面的基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于中斷處理的方式為當中斷請求發(fā)生時,置位中斷鎖存器,在指令執(zhí)行的第一相時鐘時檢測中斷鎖存器,響應(yīng)中斷,并清中斷使能標志和中斷鎖存器,PC在中斷程序執(zhí)行前后自動壓棧和出棧;所述的中斷的種類包括軟件中斷、外部中斷、定時器中斷、WDT中斷、串行接口中斷,中斷可嵌套,除軟件中斷和WDT中斷外可控制中斷源屏蔽。
圖1為本發(fā)明微處理器核的內(nèi)部結(jié)構(gòu)示意圖。
圖2為指令執(zhí)行硬件結(jié)構(gòu)示意圖。
圖3為指令執(zhí)行節(jié)拍流程示意圖。
圖4為內(nèi)存分配和地址映射示意圖。
圖5為本發(fā)明微控制器核的外圍模塊資源配置示意圖。
圖6為復(fù)位電路示意圖。
圖7為中斷處理過程示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的微處理器的構(gòu)架和實現(xiàn)方式做詳細說明。
本發(fā)明微處理器核的結(jié)構(gòu)如圖1所示。時鐘發(fā)生器產(chǎn)生基本時鐘,并分頻,提供內(nèi)部CPU核和外部外圍器件所需要的時鐘信號。程序存儲器與數(shù)據(jù)存儲器有各自的數(shù)據(jù)總線。執(zhí)行時,首先讀取指令碼,然后譯碼。譯碼是根據(jù)微碼的定義,以及尋址方式的不同,將操作數(shù)或者操作碼分別存儲于操作數(shù)寄存器、微指令碼寄存器、內(nèi)存或者特殊功能寄存器(不包括SR區(qū)域)。根據(jù)譯碼后得到的指令的類型,將操作數(shù)或者需要計算的地址送入ALU進行運算。然后,存儲運算的結(jié)果,寫入寄存器或者內(nèi)存單元。然后再讀入下一字節(jié)的指令,進行譯碼、ALU運算、回寫存儲數(shù)據(jù),以此類推,直到指令結(jié)束。由于本微處理器的指令集為變長的CISC指令,每條指令長度不同,指令周期從1個機器周期到10個機器周期不等。在指令執(zhí)行的過程中,要對每條指令所執(zhí)行到的機器周期和PC進行計數(shù),以控制指令的運行。
指令處理執(zhí)行部分的硬件結(jié)構(gòu)如圖2所示,首先根據(jù)復(fù)位向量找到程序的入口地址,PC指向程序存儲器的程序入口單元,從程序存儲器讀入指令,通過指令譯碼器進行譯碼。如果是操作碼,存入操作碼寄存器;如果是操作數(shù),根據(jù)對操作碼的判斷確定是寫入數(shù)據(jù)存儲器還是要做為立即數(shù)送入ALU進行運算。數(shù)據(jù)準備好后,即可進行ALU運算操作。運算的結(jié)果存入寄存器或者數(shù)據(jù)存儲器單元。當執(zhí)行調(diào)用、返回等指令時,會對程序指針進行壓棧和出棧操作;執(zhí)行跳轉(zhuǎn)等指令時,有指針偏移操作;同時在每讀下一字節(jié)指令時,會對PC有加1的操作。這些構(gòu)成PC的來源,也是保證程序正常執(zhí)行的關(guān)鍵因素之一。
指令處理的基本時序如圖3所示。由主時鐘分頻后獲得的四相時鐘(CLK1、CLK2、CLK3和CLK4)來控制。每個機器周期根據(jù)4相時鐘分為4個節(jié)拍,每一節(jié)拍對應(yīng)一相時鐘。對讀入的每個微碼在4相時鐘分別執(zhí)行以下操作CLK1取指譯碼(包括設(shè)置標志位和中斷處理)、CLK2讀所需要的寄存器中的數(shù)據(jù)、CLK3進行ALU運算、CLK4存儲運算結(jié)果(包括調(diào)整PC指針)。同時,根據(jù)微碼判斷并記錄當前指令總的周期數(shù),并在讀入指令下一個字節(jié)的時候遞減,調(diào)整PC,直至當前指令的最后一個周期,指向下一條指令,標志位清零,開放中斷,開始執(zhí)行下一條指令。如此循環(huán)操作,直到程序結(jié)束。
本微處理器包括軟件中斷、外部中斷、定時器中斷、WDT中斷等常用基本中斷??煽刂浦袛嘣雌帘?,其中軟件中斷和WDT中斷不可屏蔽和嵌套。當有中斷請求時,設(shè)置中斷請求標志并鎖存在中斷鎖存器中,同時自動PC壓棧。執(zhí)行完當前指令后,響應(yīng)中斷,設(shè)置中斷使能標志使響應(yīng)當前中斷過程中禁止可屏蔽中斷。中斷執(zhí)行完或復(fù)位后,開放鎖存。中斷處理過程見圖7所示。
本發(fā)明微處理器的指令集為復(fù)雜指令集,數(shù)據(jù)總線寬度為8位,采用單級流水線處理和執(zhí)行指令,可連續(xù)尋址64K字節(jié)的地址空間。這64K空間分成4個地址空間,分別為程序存儲器ROM、數(shù)據(jù)存儲器RAM、特殊功能寄存器SR和數(shù)據(jù)緩沖寄存器BR。使用內(nèi)存映射輸入/輸出系統(tǒng),所有的I/O寄存器都映射在SR或者BR地址空間。芯片內(nèi)部共有16組通用寄存器,每組8個,共128個通用寄存器,分配在RAM地址空間的前128個字節(jié)。內(nèi)存分配見圖4所示。
為了系統(tǒng)的安全和功耗管理,系統(tǒng)復(fù)位采用多源復(fù)位,如圖6所示。包括上電復(fù)位、軟件復(fù)位、時鐘檢測復(fù)位、地址陷阱復(fù)位、WDT復(fù)位。其中上電復(fù)位為大于4個時鐘周期的低電平復(fù)位;當PC指向RAM或者特殊寄存器SR區(qū)域時,產(chǎn)生地址陷阱復(fù)位信號,重新啟動系統(tǒng);WDT在允許工作狀態(tài)下,若CPU沒有按正常工作狀態(tài)清WDT,WDT計數(shù)溢出時會產(chǎn)生復(fù)位信號。
本發(fā)明處理器內(nèi)核可方便的擴展各類通用的外設(shè)和通訊接口,包括同步串行接口、高速串行輸出、I2C總線、LCD驅(qū)動器、A/D轉(zhuǎn)換器、定時器/計數(shù)器等等,同時也可根據(jù)微碼定義對151條指令進行擴展。一個微處理器配置外設(shè)資源的應(yīng)用示意圖見圖5所示。
本發(fā)明微處理器的一種典型實現(xiàn)方式如圖5所示。“1”為系統(tǒng)時鐘發(fā)生器,產(chǎn)生基本時鐘。其中包含一個時序發(fā)生器,經(jīng)分頻產(chǎn)生主系統(tǒng)時鐘和外圍設(shè)備的工作時鐘??奢敵鏊枰姆诸l脈沖到外部端口上,并產(chǎn)生基本定時、WDT、串口、釋放復(fù)位等系統(tǒng)所需要的各種時鐘?!?”是本微處理器的CPU核,是本發(fā)明的核心部分。參考圖1,包含指令譯碼器、指令寄存器、ALU、內(nèi)部堆棧、專用寄存器、中斷處理模塊以及讀寫控制電路。系統(tǒng)上電復(fù)位以后,根據(jù)復(fù)位指針從程序存儲器中找到程序的入口地址,以字節(jié)為單位讀入要執(zhí)行的指令并存儲。然后對指令進行譯碼。譯碼時根據(jù)微碼的定義,執(zhí)行相應(yīng)的操作。微碼的編碼分為兩大類,單字節(jié)編碼和雙字節(jié)編碼。表1是對每類編碼中每個字節(jié)微碼含義的解釋。
表1指令微碼定義表
本發(fā)明的微處理器的指令長度為1-4個字節(jié),執(zhí)行周期1-10個不等。根據(jù)譯碼結(jié)果,分為立即數(shù)尋址、直接尋址、寄存器尋址、寄存器間接尋址、隱含尋址、相對尋址、變址尋址、絕對尋址、向量尋址、頁尋址、存儲器位尋址共11種類型。如圖2所示,譯碼后提取出立即數(shù)或者寄存器信息或者RAM的直接地址,通過多路選擇器進入ALU進行運算,結(jié)果輸出到RAM或者相應(yīng)的寄存器單元。除常規(guī)的PC加1以外,根據(jù)不同的指令對PC指針進行調(diào)整,包括偏移量尋址、內(nèi)部堆棧的地址、跳轉(zhuǎn)指令的地址等。在譯碼器對讀入的微碼進行辨識以后,除了對當前操作碼或者立即數(shù)進行相應(yīng)的操作以外,還要判斷指令總的執(zhí)行周期數(shù)并記錄,以此作為標志判斷指令是否執(zhí)行完畢,是否需要清除或者設(shè)置相應(yīng)的標志寄存器,以保證系統(tǒng)執(zhí)行時序的正確性。“3”為系統(tǒng)的復(fù)位電路,包括時鐘檢測復(fù)位、地址陷阱復(fù)位、WDT復(fù)位、軟件復(fù)位及外部復(fù)位電路??蓞⒖紙D6所示。除外部上電復(fù)位外,當系統(tǒng)時鐘停止工作,或者PC指針指向非ROM區(qū)域,或者CPU工作不正常而沒有清WDT計數(shù)器時,會產(chǎn)生系統(tǒng)復(fù)位信號使系統(tǒng)復(fù)位。“4”是定時器/計數(shù)器,本系統(tǒng)包含兩個16位和兩個8位多功能定時器/計數(shù)器?!?”是輸入/輸出端口。為雙向端口,且端口可復(fù)用?!?”是ADC與數(shù)字邏輯部分的接口電路?!?”是ADC模塊,本系統(tǒng)為8位8通道的逐次逼近ADC?!?”是中斷控制器。當中斷請求發(fā)生并向CPU申請中斷響應(yīng)時,置位中斷鎖存器,在指令執(zhí)行的第一相時鐘時檢測中斷鎖存器,發(fā)現(xiàn)有中斷,響應(yīng)中斷,清中斷使能標志和中斷鎖存器,PC自動壓棧,根據(jù)向量地址表讀中斷服務(wù)程序的入口地址,寫入PC。然后執(zhí)行中斷服務(wù)程序。返回后,原來的PC指針自動出棧,繼續(xù)執(zhí)行主程序。其時序圖見圖7所示?!?”是程序存儲器ROM。本微處理器共有16K的EPROM,和數(shù)據(jù)存儲器以及特殊寄存器和數(shù)據(jù)緩沖區(qū)連續(xù)尋址,便于訪問?!?0”是監(jiān)視定時器WDT。在CPU工作不正常時產(chǎn)生中斷或者內(nèi)部復(fù)位信號,重啟系統(tǒng)使之正常工作,提高了系統(tǒng)可靠性?!?1”是基本定時器,提供定時,可產(chǎn)生基本定時器中斷?!?2”是時鐘同步串行接口,用于器件之間的通信,可連續(xù)傳送8個字節(jié)的數(shù)據(jù)?!?3”是靜態(tài)數(shù)據(jù)存儲器RAM。參考圖4,本微處理器有512字節(jié)8位的RAM,其中前128字節(jié)為通用寄存器區(qū)域,包含16組8位通用寄存器。后384字節(jié)為數(shù)據(jù)緩存區(qū)域。堆??稍O(shè)在RAM中通用寄存器以外的任意區(qū)域。當PC指向RAM區(qū)域時,會產(chǎn)生地址陷阱復(fù)位。這里的通用寄存器與特殊寄存器SR是分開的,另外還有數(shù)據(jù)緩沖寄存器BR和程序存儲器ROM。通過地址映射電路可以連續(xù)的尋址64K地址空間。
本微處理器為CISC結(jié)構(gòu),支持各類常見的微處理器指令。共包含151條基本指令,包括數(shù)據(jù)傳送交換、算術(shù)邏輯運算、比較、乘除法、移位、循環(huán)、半字節(jié)操作、位操作、跳轉(zhuǎn)、調(diào)用返回、進棧退棧、軟中斷以及空操作類指令。根據(jù)微碼的定義,指令可根據(jù)微碼擴展,使用靈活。以下是本發(fā)明的基本指令集。
1、指令mov(1)助記符mov p,q編碼0001 0***1110 10**操作p<-q影響標志位JF=1,ZF=z描述將寄存器q的值賦給寄存器p。JF置1;傳送給寄存器p的值為0x00H時ZF置1,否則清零。
(2)助記符mov p,(x)編碼0001 1111 1010 0***操作p<-(x)
影響標志位JF=1,ZF=z描述將內(nèi)存地址為x處的值賦給寄存器p。JF置1;傳送給寄存器p的值為0x00H時ZF置1,否則清零。
(3)助記符mov p,(HL+)編碼0001 1001 1010 0***操作p<-(HL),HL<-HL+1影響標志位JF=1,ZF=z描述將內(nèi)存地址為寄存器組HL內(nèi)容處的值賦給寄存器p,然后HL的內(nèi)容加1。JF置1;傳送給寄存器p的值為0x00H時ZF置1,否則清零。
(4)助記符mov p,(-HL)編碼0001 1000 1010 0***操作HL<-HL-1,p<-(HL)影響標志位JF=1,ZF=z描述先將HL的內(nèi)容減1,再將內(nèi)存地址為寄存器組HL內(nèi)容處的值賦給寄存器置1;傳送給寄存器p的值為0x00H時ZF置1,否則清零。
(5)助記符mov p,(HL+d)編碼0001 1011 1010 0***操作p<-(HL+d)影響標志位JF=1,ZF=z描述將內(nèi)存地址為寄存器組HL內(nèi)容加d處的值賦給寄存器p。JF置1;傳送給寄存器p的值為0x00H時ZF置1,否則清零。
(6)助記符mov pp,(x)編碼0001 1111 0001 10**操作pp<-(x+1,x)影響標志位JF=1描述將內(nèi)存地址為x和x+1處的值賦給寄存器組pp。JF置1。
(7)助記符mov pp,(HL+d)
編碼0001 1011 1110 10**操作pp<-(HL+d+1,HL+d)影響標志位JF=1描述將內(nèi)存地址為HL內(nèi)容加d+1和HL內(nèi)容加d處的值賦給寄存器組pp。JF置1。
(8)助記符mov (x),p編碼0000 1111 1010 1***操作(x)<-p影響標志位JF=1描述將寄存器p的值賦給內(nèi)存地址為x的內(nèi)存單元。JF置1。
(9)助記符mov (HL+),p編碼0000 1001 1010 1***操作(HL)<-p,HL<-HL+1影響標志位JF=1描述將寄存器p的值賦給內(nèi)存地址為HL值的內(nèi)存單元,然后HL的內(nèi)容加1。JF置1。
(10)助記符mov (-HL),p編碼0000 1000 1010 1***操作HL<-HL-1,(HL)<-p影響標志位JF=1描述先將HL的內(nèi)容減1,然后將寄存器p的值賦給內(nèi)存地址為HL值的內(nèi)存單元。JF置1。
(11)助記符mov (HL+d),p編碼0000 1011 1010 1***操作(HL+d)<-p影響標志位JF=1描述將寄存器p的值賦給內(nèi)存地址為HL+d值的內(nèi)存單元。JF置1。
(12)助記符mov (x),pp
編碼0000 1111 1110 11**操作(x+1,x)<-pp影響標志位JF=1描述將寄存器pp的值賦給內(nèi)存地址為x+1和x的內(nèi)存單元。JF置1。
(13)助記符mov (HL+d),pp編碼0000 1011 1110 11**操作(HL+d+1,HL+d)<-pp影響標志位JF=1描述將寄存器pp的值賦給內(nèi)存地址為HL內(nèi)容加d+1和HL內(nèi)容加d的內(nèi)存單元。JF置1。
(14)助記符mov (x),(y)編碼1101 1001操作(x)<-(y)影響標志位JF=1,ZF=z描述將內(nèi)存地址為y的內(nèi)存單元值賦給內(nèi)存地址為x的內(nèi)存單元。JF置1;如果傳送的數(shù)據(jù)是0x00H,則ZF置1,否則清零。
(15)助記符mov (x),(HL+d)編碼0001 1011 1101 1001操作(x)<-(HL+d)影響標志位JF=1描述將內(nèi)存地址為HL內(nèi)容加d的內(nèi)存單元值賦給內(nèi)存地址為x的內(nèi)存單元。JF置1。
(16)助記符mov (HL),(x)編碼0001 1111 1101 1000操作(HL)<-(x)影響標志位JF=1;ZF=z
描述將內(nèi)存地址為x的內(nèi)存單元值賦給的內(nèi)存地址為HL內(nèi)容加d的內(nèi)存單元。JF置1;如果傳送的數(shù)據(jù)是0x00H,則ZF置1,否則清零。
(17)助記符mov (HL),(HL+d)編碼0001 1011 1101 1000操作(HL)<-(HL+d)影響標志位JF=1;ZF=z描述將內(nèi)存地址為x的內(nèi)存單元值賦給的內(nèi)存地址為HL內(nèi)容加d的內(nèi)存單元。JF置1;如果傳送的數(shù)據(jù)是0x00H,則ZF置1,否則清零。
(18)助記符mov p,n編碼1100 1***操作p<-n影響標志位JF=1描述將立即數(shù)n賦給寄存器p。JF置1。
(19)助記符mov SP,mn編碼0000 0101操作SP<-mn影響標志位JF=1描述將立即數(shù)mn賦給堆棧指針寄存器SP。JF置1。
(20)助記符mov RBS,n編碼1111 0000 1111操作RBS<-n影響標志位JF=1描述將立即數(shù)n賦給寄存器RBS。JF置1。
(21)助記符mov (x),n編碼1101 0011操作(x)<-n影響標志位JF=1
描述將立即數(shù)n賦給內(nèi)存地址為x的內(nèi)存單元。JF置1。
(22)助記符mov (HL),n編碼1101 0010操作(HL)<-n影響標志位JF=1描述將立即數(shù)n賦給內(nèi)存地址為HL值的內(nèi)存單元。JF置1。
(23)助記符mov (HL+),n編碼0000 1001 1101 0011操作(HL)<-n;HL<-HL+1影響標志位JF=1描述將立即數(shù)n賦給內(nèi)存地址為HL值的內(nèi)存單元,然后HL的內(nèi)容加1。JF置1。
(24)助記符mov (-HL),n編碼0000 1001 1101 0011操作HL<-HL-1;(HL)<-n影響標志位JF=1描述先將HL的內(nèi)容減1,然后將立即數(shù)n賦給內(nèi)存地址為HL值的內(nèi)存單元。JF置1。
(25)助記符mov (HL+d),n編碼0000 1011 1101 0011操作(HL+d)<-n影響標志位JF=1描述將立即數(shù)n賦給內(nèi)存地址為HL值加上d的內(nèi)存單元。JF置1。
2、指令cmp(1)助記符cmp A,(x)編碼1000 0000操作A-(x)影響標志位JF=z;ZF=z;CF=c;HF=h
描述比較寄存器A和內(nèi)存地址為x的內(nèi)存單元中的值。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(2)助記符cmp A,(HL+)編碼0001 1001 1000 0000操作A-(HL);HL<-HL+1影響標志位JF=z;ZF=z;CF=c;HF=h描述比較寄存器A和內(nèi)存地址為HL的內(nèi)存單元中的值,然后HL內(nèi)容加1。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(3)助記符cmp A,(-HL)編碼0001 1000 1000 0000操作HL<-HL-1;A-(HL)影響標志位JF=z;ZF=z;CF=c;HF=h描述先將HL內(nèi)容減1,再比較寄存器A和內(nèi)存地址為HL的內(nèi)存單元中的值。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(4)助記符cmp A,(HL+d)編碼0001 1011 1000 0000操作A-(HL+d)影響標志位JF=z;ZF=z;CF=c;HF=h描述比較寄存器A和內(nèi)存地址為HL加d的內(nèi)存單元中的值。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(5)助記符cmp (x),(HL)編碼0001 1111 1001 1000操作(x)-(HL)影響標志位JF=z;ZF=z;CF=c;HF=h
描述比較內(nèi)存地址為x和內(nèi)存地址為HL值的內(nèi)存單元中的值。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(6)助記符cmp (HL+d),(HL)編碼00]01 1011 1001 1000操作(HL+d)-(HL)影響標志位JF=z;ZF=z;CF=c;HF=h描述比較內(nèi)存地址為HL值加d和內(nèi)存地址為HL值的內(nèi)存單元中的值。JF結(jié)果同ZF;如做減法結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(7)助記符cmp (x),n編碼0001 1111 1000 1000操作(x)-n影響標志位JF=z;ZF=z;CF=c;HF=h描述比較內(nèi)存地址為x內(nèi)存單元中的值和立即數(shù)n。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(8)助記符cmp (HL+),n編碼0001 1001 1000 1000操作(HL+)-n;HL<-HL+1影響標志位JF=z;ZF=z;CF=c;HF=h描述比較內(nèi)存地址為HL值的內(nèi)存單元中的值和立即數(shù)n,然后HL的內(nèi)容加1。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(9)助記符cmp (-HL),n編碼0001 1000 1000 1000操作HL<-HL-1;(HL)-n影響標志位JF=z;ZF=z;CF=c;HF=h
描述先將HL內(nèi)容減1,再比較內(nèi)存地址為HL值的內(nèi)存單元中的值和立即數(shù)n。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第3位借位時HF置1。
(10)助記符cmp (HL+d),n編碼0001 1011 1000 1000操作(HL+d)-n影響標志位JF=z;ZF=z;CF=c;HF=h描述比較內(nèi)存地址為HL加d值的內(nèi)存單元中的值和立即數(shù)n。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
3、指令add(1)助記符add A,(x)編碼1000 0110操作A<-A+(x)影響標志位JF=c;ZF=z;CF=c;HF=h描述內(nèi)存地址為x的內(nèi)存單元中的值加上寄存器A中的值,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在向第4位進位時HF置1。
(2)助記符add A,(HL+)編碼0001 1001 1000 0000操作A<-A+(HL);HL<-HL+1影響標志位JF=c;ZF=z;CF=c;HF=h描述內(nèi)存地址為HL內(nèi)存單元中的值加上寄存器A中的值,結(jié)果存放在寄存器A中,然后HL內(nèi)容加1。JF結(jié)果同CF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
(3)助記符add A,(-HL)編碼0001 1000 1000 0110操作HL<-HL-1;A<-A+(HL)
影響標志位JF=c;ZF=z;CF=c;HF=h描述先將HL內(nèi)容減1,再將內(nèi)存地址為HL內(nèi)存單元中的值加上寄存器A中的值,結(jié)果存放在寄存器A中。JF結(jié)果同CF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
(4)助記符add A,(HL+d)編碼0001 1011 1000 0110操作A<-A+(HL+d)影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為HL加d的內(nèi)存單元中的值加寄存器A的值,結(jié)果存放在寄存器A中。JF結(jié)果同CF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
(5)助記符add (x),(HL)編碼0001 1111 1001 1110操作(x)<-(x)+(HL)影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為x和內(nèi)存地址為HL內(nèi)存單元中的值相加,結(jié)果存放在內(nèi)存地址為x的內(nèi)存單元中。JF結(jié)果同CF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
(6)助記符add (HL+d),(HL)編碼0001 1011 1001 1110操作(HL+d)<-(HL+d)+(HL)影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為x和內(nèi)存地址為HL加d的內(nèi)存單元中的值相加,結(jié)果存放在內(nèi)存地址為HL加d的內(nèi)存單元中。JF結(jié)果同CF;如做加法結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
(7)助記符add (x),n
編碼0001 1111 1000 1110操作(x)-n影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為x內(nèi)存單元中的值和立即數(shù)n相加,結(jié)果存放在內(nèi)存地址為x內(nèi)存單元中。JF結(jié)果同CF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
(8)助記符add (HL+),n編碼0001 1001 1000 1110操作(HL)<-(HL)+n;HL<-HL+1影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為HL值的內(nèi)存單元中的值和立即數(shù)n相加,結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中,然后HL的內(nèi)容加1。JF結(jié)果同CF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
(9)助記符add (-HL),n編碼0001 1000 1000 1000操作HL<-HL-1;(HL)<-(HL)+n影響標志位JF=c;ZF=z;CF=c;HF=h描述先將HL內(nèi)容減1,然后將內(nèi)存地址為HL值的內(nèi)存單元中的值和立即數(shù)n相加,結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同CF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
(10)助記符add (HL+d),n編碼0001 1011 1000 1000操作(HL+d)<-(HL)+n影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為HL加d的內(nèi)存單元中的值和立即數(shù)n相加,其結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同CF;當做加法,結(jié)果為0x00H時ZF置1;最高位存在進位CF置1;存在從第3位進位時HF置1。
4、指令sub(1)助記符sub A,(x)編碼1000 0100操作A<-A-(x)影響標志位JF=c;ZF=z;CF=c;HF=h描述寄存器A中的值減去內(nèi)存地址為x的內(nèi)存單元中的值,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在向第4位借位時HF置1。
(2)助記符sub A,(HL+)編碼0001 1001 1000 0100操作A<-A-(HL);HL<-HL+1影響標志位JF=c;ZF=z;CF=c;HF=h描述寄存器A中的值減去內(nèi)存地址為HL的內(nèi)存單元中的值,結(jié)果存放在寄存器A中,然后HL內(nèi)容加1。JF結(jié)果同CF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(3)助記符sub A,(-HL)編碼0001 1000 1000 0100操作HL<-HL-1;A<-A-(HL)影響標志位JF=c;ZF=z;CF=c;HF=h描述先將HL內(nèi)容減1,然后將寄存器A中的值減去內(nèi)存地址為HL的內(nèi)存單元中的值,結(jié)果存放在寄存器A中。JF結(jié)果同CF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(4)助記符sub A,(HL+d)編碼0001 1011 1000 0100操作A<-A-(HL+d)
影響標志位JF=c;ZF=z;CF=c;HF=h描述寄存器A的值減去內(nèi)存地址為HL加d的內(nèi)存單元中的值,結(jié)果存放在寄存器A中。JF結(jié)果同CF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(5)助記符sub (x),(HL)編碼0001 1111 1001 1100操作(x)<-(x)-(HL)影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為x的內(nèi)存單元值減去內(nèi)存地址為HL內(nèi)存單元中值,結(jié)果存放在內(nèi)存地址為x的內(nèi)存單元中。JF結(jié)果同CF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(6)助記符sub (HL+d),(HL)編碼0001 1011 1001 1100操作(HL+d)<-(HL+d)-(HL)影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為x的內(nèi)存單元值減去內(nèi)存地址為HL加d的內(nèi)存單元中的值,結(jié)果存放在內(nèi)存地址為HL加d的內(nèi)存單元中。JF結(jié)果同CF;如做減法結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(7)助記符sub (x),n編碼0001 1111 1000 1100操作(x)<-(x)-n影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為x內(nèi)存單元中的值減去立即數(shù)n,結(jié)果存放在內(nèi)存地址為x內(nèi)存單元中。JF結(jié)果同CF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(8)助記符sub (HL+),n編碼0001 1001 1000 1100
操作(HL)<-(HL)-n;HL<-HL+1影響標志位JF=c;ZF=z;CF=c;HF=h描述將內(nèi)存地址為HL值的內(nèi)存單元值減去立即數(shù)n,結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中,然后HL的內(nèi)容加1。JF結(jié)果同CF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(9)助記符sub (-HL),n編碼0001 1000 1000 1100操作HL<-HL-1;(HL)<-(HL)-n影響標志位JF=c;ZF=z;CF=c;HF=h描述先將HL內(nèi)容減1,然后將內(nèi)存地址為HL值的內(nèi)存單元值減去立即數(shù)n,結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同CF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
(10)助記符sub (HL+d),n編碼0001 1011 1000 1100操作(HL+d)<-(HL)-n影響標志位JF=c;ZF=z;CF=c;HF=h描述內(nèi)存地址為HL加d的內(nèi)存單元值減去立即數(shù)n,其結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同CF;當做減法,結(jié)果為0x00H時ZF置1;最高位存在借位CF置1;存在從第4位借位時HF置1。
5、指令and(1)助記符and A,(x)編碼1000 0011操作A<-A&(x)影響標志位JF=z;ZF=z;
描述寄存器A中的值和內(nèi)存地址為x的內(nèi)存單元中的值相與,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(2)助記符and A,(HL+)編碼0001 1001 1000 0011操作A<-A&(HL);HL<-HL+1影響標志位JF=z;ZF=z;描述寄存器A中的值和內(nèi)存地址為HL的內(nèi)存單元中的值相與,結(jié)果存放在寄存器A中,然后HL內(nèi)容加1。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(3)助記符and A,(-HL)編碼0001 1000 1000 0011操作HL<-HL-1;A<-A&(HL)影響標志位JF=z;ZF=z;描述先將HL內(nèi)容減1,然后將寄存器A中的值和內(nèi)存地址為HL的內(nèi)存單元中的值相與,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(4)助記符and A,(HL+d)編碼0001 1011 1000 0011操作A<-A&(HL+d)影響標志位JF=z;ZF=z;描述寄存器A的值和內(nèi)存地址為HL加d內(nèi)存單元中的值相與,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(5)助記符and (x),(HL)編碼0001 1111 1001 1011操作(x)<-(x)&(HL)影響標志位JF=z;ZF=z;
描述將內(nèi)存地址為x的內(nèi)存單元值和內(nèi)存地址為HL內(nèi)存單元中值相與,結(jié)果存放在內(nèi)存地址為x的內(nèi)存單元中。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(6)助記符and (HL+d),(HL)編碼0001 1011 1001 1011操作(HL+d)<-(HL+d)&(HL)影響標志位JF=z;ZF=z;描述將內(nèi)存地址為x的內(nèi)存單元值和內(nèi)存地址為HL加d的內(nèi)存單元中的值相與,結(jié)果存放在內(nèi)存地址為HL加d的內(nèi)存單元中。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(7)助記符and (x),n編碼0001 1111 1000 1011操作(x)<-(x)&n影響標志位JF=z;ZF=z;描述將內(nèi)存地址為x內(nèi)存單元中的值和立即數(shù)n相與,結(jié)果存放在內(nèi)存地址為x內(nèi)存單元中。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(8)助記符and (HL+),n編碼0001 1001 1000 1011操作(HL)<-(HL)&n;HL<-HL+1影響標志位JF=z;ZF=z;描述將內(nèi)存地址為HL值的內(nèi)存單元值和立即數(shù)n相與,結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中,然后HL的內(nèi)容加1。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(9)助記符and (-HL),n編碼0001 1000 1000 1011操作HL<-HL-1;(HL)<-(HL)&n影響標志位JF=z;ZF=z;
描述先將HL內(nèi)容減1,然后將內(nèi)存地址為HL值的內(nèi)存單元值和立即數(shù)n相與,其結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
(10)助記符and (HL+d),n編碼0001 1011 1000 1011操作(HL+d)<-(HL)&n影響標志位JF=z;ZF=z;描述將內(nèi)存地址為HL加d的內(nèi)存單元值和立即數(shù)n相與,其結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同ZF;相與的結(jié)果為0x00H時ZF置1,否則清零。
6、指令or(1)助記符or A,(x)編碼1000 0001操作A<-A|(x)影響標志位JF=z;ZF=z;描述寄存器A中的值和內(nèi)存地址為x的內(nèi)存單元中的值相或,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(2)助記符or A,(HL+)編碼0001 1001 1000 0001操作A<-A|(HL);HL<-HL+1影響標志位JF=z;ZF=z;描述寄存器A中的值和內(nèi)存地址為HL的內(nèi)存單元中的值相或,結(jié)果存放在寄存器A中,然后HL內(nèi)容加1。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(3)助記符or A,(-HL)編碼0001 1000 1000 0001操作HL<-HL-1;A<-A|(HL)影響標志位JF=z;ZF=z;
描述先將HL內(nèi)容減1,然后將寄存器A中的值和內(nèi)存地址為HL的內(nèi)存單元中的值相或,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(4)助記符or A,(HL+d)編碼0001 1011 1000 0001操作A<-A|(HL+d)影響標志位JF=z;ZF=z;描述寄存器A的值和內(nèi)存地址為HL加d內(nèi)存單元中的值相或,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(5)助記符or (x),(HL)編碼0001 1111 1001 1001操作(x)<-(x)|(HL)影響標志位JF=z;ZF=z;描述將內(nèi)存地址為x的內(nèi)存單元值和內(nèi)存地址為HL內(nèi)存單元中值相或,結(jié)果存放在內(nèi)存地址為x的內(nèi)存單元中。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(6)助記符or (HL+d),(HL)編碼0001 1011 1001 1001操作(HL+d)<-(HL+d)|(HL)影響標志位JF=z;ZF=z;描述將內(nèi)存地址為x的內(nèi)存單元值和內(nèi)存地址為HL加d的內(nèi)存單元中的值相或,結(jié)果存放在內(nèi)存地址為HL加d的內(nèi)存單元中。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(7)助記符or (x),n編碼0001 1111 1000 1001操作(x)<-(x)|n影響標志位JF=z;ZF=z;
描述將內(nèi)存地址為x內(nèi)存單元中的值和立即數(shù)n相或,結(jié)果存放在內(nèi)存地址為x內(nèi)存單元中。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(8)助記符or (HL+),n編碼0001 1001 1000 1001操作(HL)<-(HL)|n;HL<-HL+1影響標志位JF=z;ZF=z;描述將內(nèi)存地址為HL值的內(nèi)存單元值和立即數(shù)n相或,結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中,然后HL的內(nèi)容加1。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(9)助記符or (-HL),n編碼0001 1000 1000 1001操作HL<-HL-1;(HL)<-(HL)|n影響標志位JF=z;ZF=z;描述先將HL內(nèi)容減1,然后將內(nèi)存地址為HL值的內(nèi)存單元值和立即數(shù)n相或,其結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
(10)助記符or (HL+d),n編碼0001 1011 1000 1001操作(HL+d)<-(HL)|n影響標志位JF=z;ZF=z;描述將內(nèi)存地址為HL加d的內(nèi)存單元值和立即數(shù)n相或,其結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同ZF;相或的結(jié)果為0x00H時ZF置1,否則清零。
7、指令xor(1)助記符xor A,(x)編碼1000 0010操作A<-A xor(x)影響標志位JF=z;ZF=z;
描述寄存器A中的值和內(nèi)存地址為x內(nèi)存單元中的值相異或,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(2)助記符xor A,(HL+)編碼0001 1001 1000 0010操作A<-A xor(HL);HL<-HL+1影響標志位JF=z;ZF=z;描述寄存器A中的值和內(nèi)存地址為HL內(nèi)存單元中的值相異或,結(jié)果存放在寄存器A中,然后HL內(nèi)容加1。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(3)助記符xor A,(-HL)編碼0001 1000 1000 0010操作HL<-HL-1;A<-A xor(HL)影響標志位JF=z;ZF=z;描述先將HL內(nèi)容減1,然后將寄存器A中的值和內(nèi)存地址為HL的內(nèi)存單元中的值相異或,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(4)助記符xor A,(HL+d)編碼0001 1011 1000 0010操作A<-A xor(HL+d)影響標志位JF=z;ZF=z;描述寄存器A的值和內(nèi)存地址為HL加d內(nèi)存單元的值相異或,結(jié)果存放在寄存器A中。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(5)助記符xor (x),(HL)編碼0001 1111 1001 1010操作(x)<-(x)xor(HL)影響標志位JF=z;ZF=z;
描述將內(nèi)存地址為x的內(nèi)存單元值和內(nèi)存地址為HL內(nèi)存單元中值相異或,結(jié)果存放在內(nèi)存地址為x的內(nèi)存單元中。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(6)助記符xor (HL+d),(HL)編碼0001 1011 1001 1010操作(HL+d)<-(HL+d)xor(HL)影響標志位JF=z;ZF=z;描述將內(nèi)存地址為x的內(nèi)存單元值和內(nèi)存地址為HL加d的內(nèi)存單元中的值相異或,結(jié)果存放在內(nèi)存地址為HL加d的內(nèi)存單元中。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(7)助記符xor (x),n編碼0001 1111 1000 1010操作(x)<-(x)xor n影響標志位JF=z;ZF=z;描述將內(nèi)存地址為x內(nèi)存單元中的值和立即數(shù)n相異或,結(jié)果存放在內(nèi)存地址為x內(nèi)存單元中。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(8)助記符xor (HL+),n編碼0001 1001 1000 1010操作(HL)<-(HL)xor n;HL<-HL+1影響標志位JF=z;ZF=z;描述將內(nèi)存地址為HL值的內(nèi)存單元值和立即數(shù)n相異或,結(jié)果存放在內(nèi)存地址為HL的內(nèi)存單元中,然后HL內(nèi)容加1。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(9)助記符xor (-HL),n編碼0001 1000 1000 1010操作HL<-HL-1;(HL)<-(HL)xor n影響標志位JF=z;ZF=z;
描述先將HL內(nèi)容減1,然后將內(nèi)存地址為HL值的內(nèi)存單元值和立即數(shù)n相異或,其結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
(10)助記符xor (HL+d),n編碼0001 1011 1000 1010操作(HL+d)<-(HL)xor n影響標志位JF=z;ZF=z;描述將內(nèi)存地址為HL加d的內(nèi)存單元值和立即數(shù)n相異或,結(jié)果存放在內(nèi)存地址為HL值的內(nèi)存單元中。JF結(jié)果同ZF;相異或的結(jié)果為0x00H時ZF置1,否則清零。
8、指令daa(1)助記符daa p編碼0001 0*** 1111 0101操作加法指令結(jié)果的16進制->BCD碼影響標志位JF=c,ZF=z,CF=c,HF=h描述執(zhí)行完加法指令后,把寄存器p中的16進制結(jié)果進行十進制調(diào)整,產(chǎn)生BCD碼。調(diào)整后的結(jié)果仍回寫到寄存器p。
9、指令dsa(1)助記符dsa p編碼0001 0*** 1111 0100操作減法指令結(jié)果的16進制->BCD碼影響標志位JF=c,ZF=z,CF=c,HF=h描述執(zhí)行完減法指令后,把寄存器p中的16進制結(jié)果進行十進制調(diào)整,產(chǎn)生BCD碼。調(diào)整后的結(jié)果仍回寫到寄存器p。
10、指令mul(1)助記符mul w,a編碼1111 1101操作w*a->wa影響標志位JF=z,ZF=z
描述寄存器w與累加器a中的無符號數(shù)相乘,結(jié)果的高字節(jié)回寫到w,低字節(jié)回寫到a。當高字節(jié)為0時,標志JF和ZF置1;否則清0。
11、指令div(1)助記符div wa,c編碼1111 1100操作wa÷c(商)->a,余數(shù)->w影響標志位JF=z,ZF=z,CF=c描述寄存器對wa與寄存器c中的無符號數(shù)相除,商寫到a,余數(shù)寫到w。余數(shù)為0時,標志JF和ZF置1;否則清0。如果除數(shù)寄存器c中的數(shù)據(jù)為0,或者相除后商大于100H,標志CF置1;否則清0。
12、指令shlcf(1)助記符shlcf p編碼0001 0*** 1110 0011操作參見下列描述影響標志位JF=p[7],ZF=z,CF=p[7]描述寄存器p中的數(shù)據(jù)左移一位,原最高位p[7]寫到標志位CF中,最低位補0。具體操作參見附圖M-1。標志JF和CF等于寄存器原數(shù)據(jù)的最高位。如果移位后寄存器中的數(shù)據(jù)為0,則標志ZF置1,否則清0。
13、指令shrcf(1)助記符shrcf p編碼0001 0*** 1110 0010操作參見下列描述影響標志位JF=p
,ZF=z,CF=p
描述寄存器p中的數(shù)據(jù)右移一位,原最低位p
寫到標志位CF中,最高位補0。具體操作參見附圖M-2。標志JF和CF等于寄存器原數(shù)據(jù)的最低位。如果移位后寄存器中的數(shù)據(jù)為0,則標志ZF置1,否則清0。
14、指令rshlcf(1)助記符rshlcf p編碼0001 0*** 1110 0001操作參見下列描述影響標志位JF=p[7],ZF=z,CF=p[7]描述寄存器p中的數(shù)據(jù)和標志位CF循環(huán)左移一位,寄存器原最高位p[7]寫到標志位CF中,原標志位CF寫到寄存器最低位p
。具體操作參見附圖M-3。標志JF和CF等于寄存器原數(shù)據(jù)的最高位。如果移位后寄存器中的數(shù)據(jù)為0,則標志ZF置1,否則清0。
15、指令rshrcf(1)助記符rshrcf p編碼0001 0*** 1110 0000操作參見下列描述影響標志位JF=p
,ZF=z,CF=p
描述寄存器p中的數(shù)據(jù)和標志位CF循環(huán)右移一位,寄存器原最低位p
寫到標志位CF中,原標志位CF寫到寄存器最高位p[7]。具體操作參見附圖M-4。標志JF和CF等于寄存器原數(shù)據(jù)的最低位。如果移位后寄存器中的數(shù)據(jù)為0,則標志ZF置1,否則清0。
16、指令swap(1)助記符swap p編碼0001 0*** 1111 1110操作 影響標志位JF=1描述寄存器p中的高、低半位元組交換位置。標志JF置1。
17、指令rshlm(1)助記符rshlm a,(x)編碼0001 1111 1111 0111
操作參見下列描述影響標志位JF=1描述累加器a的低半位元組和直接尋址單元數(shù)據(jù)的高、低半位元組循環(huán)左移,具體操作參見附圖M-5。標志JF置1。
(2)助記符rshlm a,(HL+)編碼0001 1001 1111 0111操作參見下列描述影響標志位JF=1描述累加器a的低半位元組和由HL間接尋址單元數(shù)據(jù)的高、低半位元組循環(huán)左移,具體操作參見附圖M-6。移位操作完成后,HL的內(nèi)容累加1。標志JF置1。
(3)助記符rshlm a,(-HL)編碼0001 1000 1111 0111操作參見下列描述影響標志位JF=1描述HL的內(nèi)容遞減1。累加器a的低半位元組和由HL遞減后間接尋址單元數(shù)據(jù)的高、低半位元組循環(huán)左移,具體操作參見附圖M-7。標志JF置1。
(4)助記符rshlm a,(HL+d)編碼0001 1011 1111 0111操作參見下列描述影響標志位JF=1描述累加器a的低半位元組和由HL帶偏移量間接尋址單元數(shù)據(jù)的高、低半位元組循環(huán)左移,具體操作參見附圖M-8。標志JF置1。
18、指令rshrm(1)助記符rshrm a,(x)編碼0001 1111 1111 0110操作參見下列描述影響標志位JF=1
描述累加器a的低半位元組和直接尋址單元數(shù)據(jù)的高、低半位元組循環(huán)右移,具體操作參見附圖M-9。標志JF置1。
(2)助記符rshrm a,(HL+)編碼0001 1001 1111 0110操作參見下列描述影響標志位JF=1描述累加器a的低半位元組和由HL間接尋址單元數(shù)據(jù)的高、低半位元組循環(huán)右移,具體操作參見附圖M-10。移位操作完成后,HL的內(nèi)容累加1。標志JF置1。
(3)助記符rshrm a,(-HL)編碼0001 1000 1111 0110操作參見下列描述影響標志位JF=1描述HL的內(nèi)容遞減1。累加器a的低半位元組和由HL遞減后間接尋址單元數(shù)據(jù)的高、低半位元組循環(huán)右移,具體操作參見附圖M-11。標志JF置1。
(4)助記符rshrm a,(HL+d)編碼0001 1011 1111 0110操作參見下列描述影響標志位JF=1描述累加器a的低半位元組和由HL帶偏移量間接尋址單元數(shù)據(jù)的高、低半位元組循環(huán)右移,具體操作參見附圖M-12。標志JF置1。
19、指令clrb(1)助記符clrb (x).b編碼1011 0***操作(x).b->ZF,0->(x).b影響標志位JF=z,ZF=(x).b
描述將直接尋址單元的b位取反后寫到標志ZF,之后將該位清0。標志JF同ZF。
(2)助記符clrb (HL+).b編碼0001 1001 1011 0***操作(HL).b->ZF,0->(HL).b,HL+1->HL影響標志位JF=z,ZF=(HL).b描述將寄存器對HL間接尋址單元的b位取反后寫到標志ZF,之后將該位清0,最后把寄存器對HL中的數(shù)據(jù)累加1。標志JF同ZF。
(3)助記符clrb (-HL).b編碼0001 1000 1011 0***操作HL-1->HL,(HL).b->ZF,0->(HL).b影響標志位JF=z,ZF=(HL-1).b描述先把寄存器對HL中的數(shù)據(jù)遞減1,再將寄存器對HL間接尋址單元的b位取反后寫到標志ZF,之后將該位清0。標志JF同ZF。
(4)助記符clrb (HL+d).b編碼0001 1011 1011 0***操作(HL+d).b->ZF,0->(HL+d).b影響標志位JF=z,ZF=(HL+d).b描述將寄存器對HL帶偏移量間接尋址單元的b位取反后寫到標志ZF,之后將該位清0。標志JF同ZF。
20、指令setb(1)助記符setb (x).b編碼1011 1***操作(x).b->ZF,1->(x).b影響標志位JF=z,ZF=(x).b描述將直接尋址單元的b位取反后寫到標志ZF,之后將該位置1。標志JF同ZF。
(2)助記符setb (HL+).b編碼0001 1001 1011 1***
操作(HL).b->ZF,1->(HL).b,HL+1->HL影響標志位JF=z,ZF=(HL).b描述將寄存器對HL間接尋址單元的b位取反后寫到標志ZF,之后將該位置1,最后把寄存器對HL中的數(shù)據(jù)累加1。標志JF同ZF。
(3)助記符setb (-HL).b編碼0001 1000 1011 1***操作HL-1->HL,(HL).b->ZF,1->(HL).b影響標志位JF=z,ZF=(HL-1).b描述先把寄存器對HL中的數(shù)據(jù)遞減1,再將寄存器對HL間接尋址單元的b位取反后寫到標志ZF,之后將該位置1。標志JF同ZF。
(4)助記符setb (HL+d).b編碼0001 1011 1011 1***操作(HL+d).b->ZF,1->(HL+d).b影響標志位JF=z,ZF=(HL+d).b描述將寄存器對HL帶偏移量間接尋址單元的b位取反后寫到標志ZF,之后將該位置1。標志JF同ZF。
21、指令cplb(1)助記符cplb (x).b編碼0001 1111 0011 1***操作(x).b->ZF,(x).b->(x).b影響標志位JF=z,ZF=(x).b描述將直接尋址單元的b位取反后寫到標志ZF,并將該位取反后回寫。標志JF同ZF。
(2)助記符cplb (HL+).b編碼0001 1001 0011 1***操作(HL).b->ZF,(HL).b->(HL).b,HL+1->HL影響標志位JF=z,ZF=(HL).b
描述將寄存器對HL間接尋址單元的b位取反后寫到標志ZF,并將該位取反后回寫,最后把寄存器對HL中的數(shù)據(jù)累加1。標志JF同ZF。
(3)助記符cplb (-HL).b編碼0001 1000 0011 1***操作HL-1->HL,(HL).b->ZF,(HL).b->(HL).b影響標志位JF=z,ZF=(HL-1).b描述先把寄存器對HL中的數(shù)據(jù)遞減1,再將寄存器對HL間接尋址單元的b位取反后寫到標志ZF,并將該位取反后回寫。標志JF同ZF。
(4)助記符cplb (HL+d).b編碼0001 1011 0011 1***操作(HL+d).b->ZF,(HL+d).b->(HL+d).b影響標志位JF=z,ZF=(HL+d).b描述將寄存器對HL帶偏移量間接尋址單元的b位取反后寫到標志ZF,并將該位取反后回寫。標志JF同ZF。
22、指令movb(1)助記符movb cf,(x).b編碼0010 0***操作(x).b->CF影響標志位JF=c,CF=(x).b描述將直接尋址單元的b位寫到標志CF。標志JF與CF相反。
(2)助記符movb cf,(HL+).b編碼0001 1001 0010 0***操作(HL).b->CF,HL+1->HL影響標志位JF=c,CF=(HL).b描述將寄存器對HL間接尋址單元的b位寫到標志CF,并把寄存器對HL中的數(shù)據(jù)累加1。標志JF與CF相反。
(3)助記符movb cf,(-HL).b
編碼0001 1000 0010 0***操作HL-1->HL,(HL).b->CF影響標志位JF=c,CF=(HL-1).b描述先把寄存器對HL中的數(shù)據(jù)遞減1,再將寄存器對HL間接尋址單元的b位寫到標志CF,標志JF與CF相反。
(4)助記符movb cf,(HL+d).b編碼0001 1011 0010 0***操作(HL+d).b->CF影響標志位JF=c,CF=(HL+d).b描述將寄存器對HL帶偏移量間接尋址單元的b位寫到標志CF。標志JF與CF相反。
(5)助記符movb (x).b,cf編碼0001 1111 0011 0***操作CF->(x).b影響標志位JF=1描述將標志CF寫到直接尋址單元的b位。標志JF置1。
(6)助記符movb (HL+).b,cf編碼0001 1001 0011 0***操作CF->(HL).b,HL+1->HL影響標志位JF=1描述將標志CF寫到寄存器對HL間接尋址單元的b位,并把寄存器對HL中的數(shù)據(jù)累加1。標志JF置1。
(7)助記符movb (-HL).b,cf編碼0001 1000 0011 0***操作HL-1->HL,CF->(HL).b影響標志位JF=1描述先把寄存器對HL中的數(shù)據(jù)遞減1,再將標志CF寫到寄存器對HL間接尋址單元的b位,標志JF置1。
(8)助記符movb (HL+d).b,cf
編碼0001 1011 0011 0***操作CF->(HL+d).b影響標志位JF=1描述將標志CF寫到寄存器HL帶偏移量間接尋址單元的b位,標志JF置1。
23、指令xorb(1)助記符xorb cf,(x).b編碼0001 1111 0010 1***操作CF XOR(x).b->CF影響標志位JF=c,CF=CF XOR(x).b描述將標志CF與直接尋址單元的b位相異或,結(jié)果回寫到標志CF。標志JF與CF相反。
(2)助記符xorb cf,(HL+).b編碼0001 1001 0010 1***操作CF XOR(HL).b->CF,HL+1->HL影響標志位JF=c,CF=CF XOR(HL).b描述將標志CF與寄存器對HL間接尋址單元的b位相異或,結(jié)果回寫到標志CF,并把寄存器對HL中的數(shù)據(jù)累加1。標志JF與CF相反。
(3)助記符xorb cf,(-HL).b編碼0001 1000 0010 1***操作HL-1->HL,CF XOR(HL).b->CF影響標志位JF=c,CF=CF XOR(HL-1).b描述先把寄存器對HL中的數(shù)據(jù)遞減1,再將標志CF與寄存器對HL間接尋址單元的b位相異或,結(jié)果回寫到標志CF,標志JF與CF相反。
(4)助記符xorb cf,(HL+d).b編碼0001 1011 0010 1***操作CF XOR(HL+d).b->CF
影響標志位JF=c,CF=CF XOR(HL+d).b描述將標志CF與寄存器對HL帶偏移量間接尋址單元的b位相異或,結(jié)果回寫到標志CF。標志JF與CF相反。
24、指令sjt(1)助記符sjt d編碼011* ****操作參見下列描述影響標志位JF=1描述該指令跳轉(zhuǎn)范圍是向前15字節(jié)或退回16字節(jié)。如果標志JF為1,則程序跳轉(zhuǎn)到當前指令首地址的d+2偏移量處,即程序計數(shù)器PC增加d;否則程序無跳轉(zhuǎn)。標志JF置1。
25、指令sjf(1)助記符sjf d編碼010* ****操作參見下列描述影響標志位JF=1描述該指令跳轉(zhuǎn)范圍是向前15字節(jié)或退回16字節(jié)。如果標志JF為0,則程序跳轉(zhuǎn)到當前指令首地址的d+2偏移量處,即程序計數(shù)器PC增加d;否則程序無跳轉(zhuǎn)。標志JF置1。
26、指令jt(1)助記符jt d編碼0010 1001操作參見下列描述影響標志位JF=1描述該指令跳轉(zhuǎn)范圍是向前127字節(jié)或退回128字節(jié)。如標志JF為1,則程序跳轉(zhuǎn)到當前指令首地址的d+2偏移量處,即程序計數(shù)器PC增加d;否則程序無跳轉(zhuǎn)。標志JF置1。
27、指令jf(1)助記符jf d
編碼0010 1000操作參見下列描述影響標志位JF=1描述該指令跳轉(zhuǎn)范圍是向前127字節(jié)或退回128字節(jié)。如標志JF為0,則程序跳轉(zhuǎn)到當前指令首地址的d+2偏移量處,即程序計數(shù)器PC增加d;否則程序無跳轉(zhuǎn)。標志JF置1。
28、指令jz(1)助記符jz d編碼0010 1111操作參見下列描述影響標志位JF=1描述該指令跳轉(zhuǎn)范圍是向前127字節(jié)或退回128字節(jié)。如標志ZF為1,則程序跳轉(zhuǎn)到當前指令首地址的d+2偏移量處,即程序計數(shù)器PC增加d;否則程序無跳轉(zhuǎn)。標志JF置1。
29、指令jnz(1)助記符jnz d編碼0010 1110操作參見下列描述影響標志位JF=1描述該指令跳轉(zhuǎn)范圍是向前127字節(jié)或退回128字節(jié)。如標志ZF為0,則程序跳轉(zhuǎn)到當前指令首地址的d+2偏移量處,即程序計數(shù)器PC增加d;否則程序無跳轉(zhuǎn)。標志JF置1。
30、指令jc(1)助記符jc d編碼0010 1101操作參見下列描述影響標志位JF=1
描述該指令跳轉(zhuǎn)范圍是向前127字節(jié)或退回128字節(jié)。如標志CF為1,則程序跳轉(zhuǎn)到當前指令首地址的d+2偏移量處,即程序計數(shù)器PC增加d;否則程序無跳轉(zhuǎn)。標志JF置1。
31、指令jnc(1)助記符jnc d編碼0010 1100操作參見下列描述影響標志位JF=1描述該指令跳轉(zhuǎn)范圍是向前127字節(jié)或退回128字節(jié)。如標志CF為0,則程序跳轉(zhuǎn)到當前指令首地址的d+2偏移量處,即程序計數(shù)器PC增加d;否則程序無跳轉(zhuǎn)。標志JF置1。
32、指令jmp(1)助記符jmp xy編碼0000 0001操作xy->PC影響標志位JF=1描述程序跳轉(zhuǎn)到地址為16位立即數(shù)xy的指令存貯單元。即將立即數(shù)xy賦值給程序計數(shù)器PC。標志JF置1。
(2)助記符jmp(x)編碼0001 1111 0000 0001操作(x+1,x)->PC影響標志位JF=1描述程序跳轉(zhuǎn)到地址為內(nèi)存單元(x+1,x)內(nèi)容的指令存貯單元。即將內(nèi)存單元(x+1,x)中的數(shù)據(jù)賦值給程序計數(shù)器PC。標志JF置1。
(3)助記符jmp (hl+d)編碼0001 1011 0000 0001操作(hl+d+1,hl+d)->PC影響標志位JF=1
描述程序跳轉(zhuǎn)到地址為存貯單元(hl+d+1,hl+d)內(nèi)容的指令存貯單元。即將存貯單元(hl+d+1,hl+d)中的數(shù)據(jù)賦值給程序計數(shù)器PC。標志JF置1。
33、指令calv(1)助記符calv d編碼0011 ****操作PC-1->(SP,SP-1),SP-2->SP,(FFC1+d*2,F(xiàn)FC0+d*2)->PC影響標志位無描述該指令為矢量調(diào)用指令,可訪問16個不同的子程序。首先將程序計數(shù)器PC的當前值減1后壓棧,同時把棧頂指針減2,然后將矢量表單元對(d*2+FFC1,d*2+FFC0)中的16位數(shù)據(jù)賦給PC,程序跳轉(zhuǎn)到此時PC指向的地址,即所調(diào)用子程序的首地址。
34、指令calp(1)助記符calp d編碼0000 0010操作PC->(SP,SP-1),SP-2->SP,F(xiàn)F00+d->PC影響標志位無描述該指令為頁面調(diào)用指令。首先將程序計數(shù)器PC的當前值壓棧,同時棧頂指針減2,然后將頁面首地址FF00加上偏移量d賦給PC,程序跳轉(zhuǎn)到此時PC指向的地址,即所調(diào)用子程序的首地址。
35、指令cal(1)助記符cal xy編碼0000 0011操作PC+1->(SP,SP-1),SP-2->SP,xy->PC影響標志位無描述首先將程序計數(shù)器PC的當前值加1后壓棧,同時棧頂指針減2,然后將16位數(shù)據(jù)xy賦給PC,程序跳轉(zhuǎn)到此時PC指向的地址,即所調(diào)用子程序的首地址。
(2)助記符cal (x)
編碼0001 1111 0000 0011操作PC+1->(SP,SP-1),SP-2->SP,(x+1,x)->PC影響標志位無描述首先將程序計數(shù)器PC的當前值加1后壓棧,同時棧頂指針減2,然后將內(nèi)存單元(x+1,x)中的16位數(shù)據(jù)賦給PC,程序跳轉(zhuǎn)到此時PC指向的地址,即所調(diào)用子程序的首地址。
(3)助記符cal (hl+d)編碼0001 1011 0000 0011操作PC+1->(SP,SP-1),SP-2->SP,(hl+d+1,hl+d)->PC影響標志位無描述首先將程序計數(shù)器PC的當前值加1后壓棧,同時棧頂指針減2,然后將存貯單元(hl+d+1,hl+d)中的16位數(shù)據(jù)賦給PC,程序跳轉(zhuǎn)到此時PC指向的地址,即所調(diào)用子程序的首地址。
36、指令ret(1)助記符ret編碼1111 1010操作SP+2->SP,(SP,SP-1)->PC影響標志位無描述該指令為子程序調(diào)用返回指令。首先將棧頂指針加2,然后將堆棧單元(SP,SP-1)中的數(shù)據(jù)賦給PC,程序跳轉(zhuǎn)到此時PC指向的地址,即執(zhí)行調(diào)用子程序指令的下一條指令。
37、指令reti(1)助記符reti編碼1111 1011操作SP+3->SP,(SP-1,SP-2)->PC,(SP)->PSW影響標志位參見下列描述描述該指令為可屏蔽中斷服務(wù)程序返回指令。首先將棧頂指針加3,然后將堆棧單元(SP-1,SP-2)中的數(shù)據(jù)賦給PC,同時將堆棧單元(SP)中的數(shù)據(jù)賦給程序狀態(tài)字PSW,程序跳轉(zhuǎn)到此時PC指向的地址,即執(zhí)行中斷發(fā)生時將要執(zhí)行的下一條指令。此時各狀態(tài)標志位(JF,ZF,CF,HF)恢復(fù)為中斷服務(wù)程序執(zhí)行前的數(shù)值。
38、指令retn(1)助記符retn編碼0001 0111 1111 1011操作SP+3->SP,(SP-1,SP-2)->PC,(SP)->PSW影響標志位參見下列描述描述該指令為不可屏蔽中斷服務(wù)程序返回指令。首先將棧頂指針加3,然后將堆棧單元(SP-1,SP-2)中的數(shù)據(jù)賦給PC,同時將堆棧單元(SP)中的數(shù)據(jù)賦給程序狀態(tài)字PSW,程序跳轉(zhuǎn)到此時PC指向的地址,即執(zhí)行中斷發(fā)生時將要執(zhí)行的下一條指令。此時各狀態(tài)標志位(JF,ZF,CF,HF)恢復(fù)為中斷服務(wù)程序執(zhí)行前的數(shù)值。
39、指令push(1)助記符push PSW編碼1111 1000操作(PSW)->(SP),SP-1->SP影響標志位無描述將程序狀態(tài)字PSW壓棧,同時將棧頂指針減1。
(2)助記符push pp編碼0001 01** 1111 1000操作pp->(SP,SP-1),SP-2->SP影響標志位無描述將寄存器對pp中的數(shù)據(jù)壓棧,同時將棧頂指針減2。
40、指令pop(1)助記符pop PSW編碼1111 1001操作SP+1->SP,(SP)->PSW影響標志位參見下列描述描述將棧頂指針加1,然后將堆棧單元(SP)中的數(shù)據(jù)賦給程序狀態(tài)字PSW。此時各狀態(tài)標志位(JF,ZF,CF,HF)恢復(fù)為最近一條壓棧指令執(zhí)行前的數(shù)值。
(2)助記符pop pp編碼0001 01** 1111 1001操作SP+2->SP,(SP,SP-1)->pp影響標志位無描述將棧頂指針加2,然后將堆棧單元(SP,SP-1)中的數(shù)據(jù)賦給寄存器對pp。
41、指令swi(1)助記符swi編碼0000 0000操作PSW->(SP),PC-1->(SP-1,SP-2),SP-3->SP,0->IEN,(FFFD,F(xiàn)FFC)->PC影響標志位無描述該指令為軟件中斷指令。先將程序狀態(tài)字PSW壓棧到堆棧單元(SP),再將程序計數(shù)器遞減后壓棧到堆棧單元(SP-1,SP-2),同時棧頂指針減3,并將中斷使能總標志IEN清0。禁止對所有可屏蔽中斷的響應(yīng)。最后將中斷入口地址存貯單元(FFFD,F(xiàn)FFC)中的數(shù)據(jù)賦給程序計數(shù)器PC,從而執(zhí)行軟件中斷服務(wù)程序。
42、指令nop(1)助記符nop編碼1111 1111操作無影響標志位無描述該指令為空操作指令。
權(quán)利要求
1.一種基于CISC結(jié)構(gòu)的微控制器構(gòu)架,該微控制器核包括程序存儲器,數(shù)據(jù)隨機存儲器,特殊功能寄存器堆,數(shù)據(jù)總線和地址總線,流水線指令結(jié)構(gòu),數(shù)據(jù)緩沖區(qū),通用算術(shù)邏輯單元,指令讀取及譯碼器和系統(tǒng)控制模塊,其中,所述的數(shù)據(jù)總線分為各自分離的8位內(nèi)部數(shù)據(jù)總線和8位程序數(shù)據(jù)總線,所述的系統(tǒng)控制模塊用于產(chǎn)生系統(tǒng)時鐘、系統(tǒng)復(fù)位以及各種讀寫控制電路,所述的流水線指令結(jié)構(gòu)為單級四段流水線指令結(jié)構(gòu),該單級四段流水線指令處理結(jié)構(gòu)分為4個部分,首先是指令讀取及譯碼電路,該指令讀取及譯碼器通過上述8位程序數(shù)據(jù)總線從程序存儲器讀入指令,并對指令進行譯碼分解;然后通過控制電路根據(jù)譯碼結(jié)果讀取寄存器或者存儲器的內(nèi)容;再通過算術(shù)邏輯單元進行運算;之后對運算的結(jié)果存入寄存器或者數(shù)據(jù)存儲器單元;當執(zhí)行調(diào)用、返回等指令時,會對程序指針進行壓棧和出棧操作,當執(zhí)行跳轉(zhuǎn)等指令時,有指針偏移操作,同時在每讀下一字節(jié)指令時,會對PC有加1的操作。
2.根據(jù)權(quán)利要求1所述的基于CISC結(jié)構(gòu)的微控制器構(gòu)架,其特征在于所述的數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM)、特殊功能寄存器和數(shù)據(jù)緩沖區(qū)域是空間獨立的,利用地址映射電路將它們的地址映射在連續(xù)的空間上,并可擴展。
3.一種基于CISC結(jié)構(gòu)的微控制器的指令實現(xiàn)方式,其特征在于該微控制器的指令集共有151條基本指令,該微控制器支持各類常見的微處理器指令,包括數(shù)據(jù)傳送交換、算術(shù)邏輯運算、比較、乘除法、移位循環(huán)、半字節(jié)操作、位操作、跳轉(zhuǎn)、調(diào)用返回、進棧退棧、軟中斷以及空操作類指令,指令執(zhí)行周期最短的1個工作周期,最長的10個工作周期,指令可以進行相應(yīng)的擴展。
4.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集包括25條數(shù)據(jù)傳送指令,每條指令有其唯一的操作碼識別,指令實現(xiàn)將源地址的數(shù)據(jù)傳送到目的地址中,由于源地址和目的地址可以是多種尋址方式,使得每條指令包含1-4個字節(jié)不等的指令編碼,產(chǎn)生一類控制信號控制完成1)控制有關(guān)寄存器將數(shù)據(jù)傳送至通用算術(shù)邏輯單元(2)控制通用算術(shù)邏輯單元完成地址的計算(3)控制從源地址提取數(shù)據(jù)(4)控制數(shù)據(jù)寫入目的地址。
5.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括10條比較指令,每條指令有其唯一的操作碼識別,指令實現(xiàn)將源地址的數(shù)據(jù)與目的地址的數(shù)據(jù)進行比較,每條指令包含1-4個字節(jié)不等的指令編碼,產(chǎn)生一類控制信號控制完成(1)控制有關(guān)寄存器將地址數(shù)據(jù)傳送至通用算術(shù)邏輯單元(2)控制通用算術(shù)邏輯單元完成地址的計算(3)控制從源地址和目的地址提取數(shù)據(jù)傳送至通用算術(shù)邏輯單元(4)控制通用算術(shù)邏輯單元執(zhí)行減法操作(5)控制將減法的結(jié)果設(shè)置標志寄存器。
6.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括50條算術(shù)邏輯運算指令,每條指令有其唯一的操作碼識別,指令實現(xiàn)將源地址的數(shù)據(jù)與目的地址的數(shù)據(jù)進行算術(shù)或邏輯運算,每條指令包含1-4個字節(jié)不等的指令編碼,產(chǎn)生一類控制信號控制完成(1)控制有關(guān)寄存器將地址數(shù)據(jù)傳送至通用算術(shù)邏輯單元(2)控制通用算術(shù)邏輯單元完成地址的計算(3)控制從源地址和目的地址提取數(shù)據(jù)傳送至通用算術(shù)邏輯單元(4)控制通用算術(shù)邏輯單元執(zhí)行指令要求的算術(shù)邏輯操作(5)控制將運算的結(jié)果寫入目的寄存器。
7.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括2條十進制調(diào)整指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,指令實現(xiàn)將寄存器中的16進制結(jié)果進行十進制調(diào)整,產(chǎn)生BCD碼,調(diào)整后的結(jié)果仍回寫到寄存器p。
8.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括2條乘除法指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,指令實現(xiàn)寄存器w與累加器a中的無符號數(shù)相乘并回寫結(jié)果,指令實現(xiàn)寄存器對wa與寄存器c中的無符號數(shù)相除并回寫。
9.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括13條循環(huán)移位和半字節(jié)操作指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,指令實現(xiàn)寄存器或者寄存器與內(nèi)存的數(shù)據(jù)的移位或者半字節(jié)移位。
10.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括24條位操作指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,指令實現(xiàn)對寄存器或者內(nèi)存單元數(shù)據(jù)的位進行設(shè)置和運算。
11.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括11條跳轉(zhuǎn)指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,根據(jù)偏移量指令實現(xiàn)程序的跳轉(zhuǎn)。
12.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括8條調(diào)用、返回指令,每條指令有其唯一的操作碼識別,根據(jù)不同的尋址方式,產(chǎn)生控制信號,根據(jù)不同的尋址方式,指令實現(xiàn)子程序的調(diào)用和返回。
13.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括4條進棧退棧指令,產(chǎn)生控制信號,指令實現(xiàn)對程序狀態(tài)字和寄存器內(nèi)容的壓棧和出棧。
14.如權(quán)利要求3所述的微控制器,其特征在于所述的指令集還包括1條軟中斷指令,產(chǎn)生控制信號,指令實現(xiàn)軟件中斷。
15.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于所述的指令集還包括1條空操作指令,產(chǎn)生控制信號,指令實現(xiàn)空操作。
16.如權(quán)利要求3至15任一項所述的微控制器的指令實現(xiàn)方式,其特征在于讀入的指令通過所述的指令讀取及譯碼器分解,按分解后的微指令碼進行譯碼,并執(zhí)行相應(yīng)的操作,根據(jù)尋址方式不同,譯碼后將操作數(shù)或者操作碼分別存儲于不同的操作數(shù)寄存器、微指令碼寄存器、內(nèi)存或者特殊的寄存器。
17.如權(quán)利要求16所述的微控制器的指令實現(xiàn)方式,其特征在于所述不同的尋址方式按尋址類型分別為立即數(shù)尋址、直接尋址、寄存器尋址、寄存器間接尋址、隱含尋址、相對尋址、變址尋址、絕對尋址、向量尋址、頁尋址和存儲器位尋址共11種類型。
18.如權(quán)利要求3至15任一項所述的微控制器的指令實現(xiàn)方式,其特征在于指令執(zhí)行的順序是在時鐘的第一相讀入指令碼并譯碼,同時處理中斷等,第二相讀內(nèi)存單元或者寄存器的數(shù)據(jù)并存儲,第三相執(zhí)行通用算術(shù)邏輯單元操作,完成指令要求的各種運算或者偏移量的計算,第四相將指令運算得的結(jié)果寫入內(nèi)存及相關(guān)寄存器,同時在每一相進行相關(guān)標志位的設(shè)置和指令周期存儲計算的操作。
19.如權(quán)利要求3所述的微控制器的指令實現(xiàn)方式,其特征在于中斷處理的方式為當中斷請求發(fā)生時,置位中斷鎖存器,在指令執(zhí)行的第一相時鐘時檢測中斷鎖存器,響應(yīng)中斷,并清中斷使能標志和中斷鎖存器,PC在中斷程序執(zhí)行前后自動壓棧和出棧;所述的中斷的種類包括軟件中斷、外部中斷、定時器中斷、WDT中斷、串行接口中斷,中斷可嵌套,除軟件中斷和WDT中斷外可控制中斷源屏蔽。
全文摘要
本發(fā)明是一種微處理器構(gòu)架及其實現(xiàn)方式,其簡化了CISC微處理器龐雜的指令集,內(nèi)部指令實現(xiàn)方式做了改進,數(shù)據(jù)線和指令線分離,使指令處理的速度加快,在一定程度上彌補了CISC微處理器指令集龐大、執(zhí)行效率低的缺點。指令集共有151條指令,支持常見典型各類指令,包括數(shù)據(jù)傳送交換、算術(shù)邏輯運算、比較、乘除法、移位、循環(huán)、半字節(jié)操作、位操作、跳轉(zhuǎn)、調(diào)用返回、進棧退棧、軟中斷以及空操作類指令。本發(fā)明的微處理器可配置適當?shù)耐鈬Y源,其端口多,資源豐富,適用于實時控制各類嵌入式、SOC系統(tǒng),具有高速、高性能、低功耗、低噪聲等特性,抗干擾能力強,是一款適用于家電、民用通信等消費類電子產(chǎn)品的微控制器。
文檔編號G06F9/22GK1584824SQ0315040
公開日2005年2月23日 申請日期2003年8月18日 優(yōu)先權(quán)日2003年8月18日
發(fā)明者劉艷軍, 趙啟山, 賀理, 黃繼頗, 張文, 朱建國 申請人:上海海爾集成電路有限公司, 海爾集團公司