專利名稱:一種基于cisc結(jié)構(gòu)的微處理器構(gòu)架及指令實現(xiàn)方式的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及半導體集成電路設(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ù)量最多,較有代表性的通用系統(tǒng)包括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ù)控制,導致設(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所示?!?”為系統(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í)行時序的正確性?!?”為系統(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ù)位?!?”是定時器/計數(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所示。“9”是程序存儲器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ù)。“13”是靜態(tài)數(shù)據(jù)存儲器RAM。參考圖4,本微處理器有512字節(jié)8位的RAM,其中前128字節(jié)為通用寄存器區(qū)域,包含16組8位通用寄存器。后384字節(jié)為數(shù)據(jù)緩存區(qū)域。堆棧可設(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ù)總線和地址總線、數(shù)據(jù)緩沖區(qū)、流水線指令結(jié)構(gòu)、通用算術(shù)邏輯單元、寄存器或者數(shù)據(jù)存儲器單元、指令讀取及譯碼器和系統(tǒng)控制模塊,所述數(shù)據(jù)總線分為各自分離的8位內(nèi)部數(shù)據(jù)總線和8位程序數(shù)據(jù)總線,所述系統(tǒng)控制模塊用于產(chǎn)生系統(tǒng)時鐘及各種讀寫控制電路,其特征在于,所述流水線指令結(jié)構(gòu)為單級四段流水線指令結(jié)構(gòu),該單級四段流水線指令結(jié)構(gòu)分為四個部分
指令讀取及譯碼電路,與系統(tǒng)控制模塊相連,用于通過所述8位程序數(shù)據(jù)總線從程序存儲器讀入指令,并對指令進行譯碼分解;
控制電路,用于根據(jù)譯碼結(jié)果讀取寄存器或者存儲器的內(nèi)容;
算術(shù)邏輯單元,與系統(tǒng)控制模塊相連,用于對指令讀取及譯碼電路輸出的運算類型操作碼和控制電路輸出的數(shù)據(jù)內(nèi)容進行運算;
寄存器或者數(shù)據(jù)存儲器單元,用于存儲運算結(jié)果。
2、根據(jù)權(quán)利要求1所述的基于CISC結(jié)構(gòu)的微控制器構(gòu)架,其特征在于還包括地址映射電路,用于將程序存儲器、數(shù)據(jù)隨機存儲器、特殊功能寄存器和數(shù)據(jù)緩沖區(qū)的地址映射在連續(xù)的空間上。
全文摘要
本發(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/22GK101299185SQ20071018721
公開日2008年11月5日 申請日期2003年8月18日 優(yōu)先權(quán)日2003年8月18日
發(fā)明者趙啟山 申請人:上海海爾集成電路有限公司