一种基于cisc结构的微处理器构架及指令实现方式的制作方法

文档序号:6614373阅读:157来源:国知局
专利名称:一种基于cisc结构的微处理器构架及指令实现方式的制作方法
技术领域
本发明涉及半导体集成电路设计领域的微控制器(MCU),尤其是涉及执行复杂指令集的基于CISC结构的微控制器。

背景技术
目前微控制器(MCU)一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM/EEPROM/FlashROM/、RAM、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A、LCD驱动、UART、I2C等各种必要功能和外设。为适应不同的应用需求,一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应用需求相匹配。微控制器的最大特点是单片化,体积小,从而使功耗和成本下降,可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合于各种应用。
嵌入式微控制器目前的品种和数量最多,较有代表性的通用系统包括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占嵌入式系统约70%的市场份额。
在MCU开发方面,以架构而言,可分为两大主流;RISC和CISC。RISC指令集组成比较简单,相对指令执行速度较快,但完成一项任务可能需要多条指令组合而成,针对较复杂组合的工作便需要占用较多的编译器时间来执行,其总线结构为哈佛型。
CISC的总线结构是冯·诺依曼型,计算机在同一个存储空间取指令和数据,数据线和指令线分时复用。在流水线结构方面,取指和执行采用单指令流水线结构,它的指令集丰富,功能强大。
CISC体系是一种为了便于编程和提高内存访问效率而设计的体系。其主要特征是使用微代码操作和具有丰富的指令集,便于设计新的处理器,能有效缩短新指令的微代码设计时间。其丰富的指令集便于应用工程师的编程使用。具有双操作数格式、寄存器到寄存器、寄存器到内存以及内存到寄存器等的指令,寻址方式灵活。
属于CISC结构的单片机主要有Intel的MCS-51系列、Motorola的M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列等;一般来说,控制关系较简单的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如大家电、通讯产品、工业控制系统应采用CISC单片机 在8位CISC微控制器芯片领域,标准体系架构都是连续型的执行,传统的CISC占据了较大的市场份额,CISC大多有繁杂的指令集,运行效率较低,指令可扩展性较差,应用复杂等缺点,难以满足越来越快速的通信需求。
CISC单片机主要缺点在于①指令集庞杂,多数指令的利用率不高。②不同的指令,需要不同的时钟周期来完成,每条指令要通过执行一段解释性微程序才能完成,需占用较多的CPU时间,执行效率不是很高。③由于指令庞大,使编译程序选择目标指令的范围很大,不便优化编译。④强调数据控制,导致设计复杂,研制周期长。


发明内容
本发明的目的在于提出一种新型的基于CISC的微处理器构架及指令实现方式,其在传统CISC的基础上做了改进,提出一种有效的系统构架,提高了指令运行效率。支持151条基本指令,采用单级四段流水线,运行效率提高,指令组合方便,可满足各类嵌入式实时控制和通信的要求。
根据本发明的第一方面的基于CISC结构的微控制器,该微控制器核包括程序存储器,数据随机存储器,特殊功能寄存器堆,数据总线和地址总线,流水线指令结构,数据缓冲区,通用算术逻辑单元,指令读取及译码器和系统控制模块,其中,所述的数据总线分为各自分离的的8位内部数据总线和8位程序数据总线,所述的系统控制模块用于产生系统时钟、系统复位以及各种读写控制电路,所述的单级四段流水线指令处理结构分为4个部分,首先是指令读取及译码电路,即所述的指令读取及译码器通过上述8位程序数据总线从程序存储器读入指令,并对指令进行译码分解;然后通过控制电路根据译码结果读取寄存器或者存储器的内容;再通过算术逻辑单元进行运算;之后对运算的结果存入寄存器或者数据存储器单元;当执行调用、返回等指令时,会对程序指针进行压栈和出栈操作,当执行跳转等指令时,有指针偏移操作,同时在每读下一字节指令时,会对PC有加1的操作。
根据本发明的第二方面的基于CISC结构的微控制器,其特征在于所述的数据存储器(RAM)、程序存储器(ROM)、特殊功能寄存器和数据缓冲区域是空间独立的,利用地址映射电路将它们的地址映射在连续的空间上,并可扩展。
根据本发明的第三方面的基于CISC结构的微控制器的指令实现方式,其特征在于该微控制器的指令集共有151条基本指令,该微控制器支持各类常见的微处理器指令,包括数据传送交换、算术逻辑运算、比较、乘除法、移位循环、半字节操作、位操作、跳转、调用返回、进栈退栈、软中断以及空操作类指令,指令执行周期最短的1个工作周期,最长的10个工作周期,指令可以进行相应的扩展。
根据本发明的第四方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集包括25条数据传送指令,每条指令有其唯一的操作码识别,指令实现将源地址的数据传送到目的地址中,由于源地址和目的地址可以是多种寻址方式,使得每条指令包含1-4个字节不等的指令编码,产生一类控制信号控制完成1)控制有关寄存器将数据传送至ALU(2)控制ALU完成地址的计算(3)控制从源地址提取数据(4)控制数据写入目的地址。
根据本发明的第五方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括10条比较指令,每条指令有其唯一的操作码识别,指令实现将源地址的数据与目的地址的数据进行比较,每条指令包含1-4个字节不等的指令编码,产生一类控制信号控制完成(1)控制有关寄存器将地址数据传送至ALU(2)控制ALU完成地址的计算(3)控制从源地址和目的地址提取数据传送至ALU(4)控制ALU执行减法操作(5)控制将减法的结果设置标志寄存器。
根据本发明的第六方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括50条算术逻辑运算指令,每条指令有其唯一的操作码识别,指令实现将源地址的数据与目的地址的数据进行算术或逻辑运算,每条指令包含1-4个字节不等的指令编码,产生一类控制信号控制完成(1)控制有关寄存器将地址数据传送至ALU(2)控制ALU完成地址的计算(3)控制从源地址和目的地址提取数据传送至ALU(4)控制ALU执行指令要求的算术逻辑操作(5)控制将运算的结果写入目的寄存器。
根据本发明的第七方面的基于CISC结构的微控制器的指令实现方式,,其特征在于所述的指令集还包括2条十进制调整指令,每条指令有其唯一的操作码识别,根据不同的寻址方式,产生控制信号,指令实现将寄存器中的16进制结果进行十进制调整,产生BCD码,调整后的结果仍回写到寄存器p。
根据本发明的第八方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括2条乘除法指令,每条指令有其唯一的操作码识别,根据不同的寻址方式,产生控制信号,指令实现寄存器w与累加器a中的无符号数相乘并回写结果,指令实现寄存器对wa与寄存器c中的无符号数相除并回写。
根据本发明的第九方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括13条循环移位和半字节操作指令,每条指令有其唯一的操作码识别,根据不同的寻址方式,产生控制信号,指令实现寄存器或者寄存器与内存的数据的移位或者半字节移位。
根据本发明的第十方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括24条位操作指令,每条指令有其唯一的操作码识别,根据不同的寻址方式,产生控制信号,指令实现对寄存器或者内存单元数据的位进行设置和运算。
根据本发明的第十一方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括11条跳转指令,每条指令有其唯一的操作码识别,根据不同的寻址方式,产生控制信号,根据偏移量指令实现程序的跳转。
根据本发明的第十二方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括8条调用、返回指令,每条指令有其唯一的操作码识别,根据不同的寻址方式,产生控制信号,根据不同的寻址方式,指令实现子程序的调用和返回。
根据本发明的第十三方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括4条进栈退栈指令,产生控制信号,指令实现对程序状态字和寄存器内容的压栈和出栈。
根据本发明的第十四方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括1条软中断指令,产生控制信号,指令实现软件中断。
根据本发明的第十五方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述的指令集还包括1条空操作指令,产生控制信号,指令实现空操作。
根据本发明的第十六方面的基于CISC结构的微控制器的指令实现方式,其特征在于读入的指令通过所述的指令读取及译码器分解,按分解后的微指令码进行译码,并执行相应的操作,根据寻址方式不同,译码后将操作数或者操作码分别存储于不同的操作数寄存器、微指令码寄存器、内存。
根据本发明的第十七方面的基于CISC结构的微控制器的指令实现方式,其特征在于所述不同的寻址方式按寻址类型分别为立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、隐含寻址、相对寻址、变址寻址、绝对寻址、向量寻址、页寻址和存储器位寻址共11种类型。
根据本发明的第十八方面的基于CISC结构的微控制器的指令实现方式,其特征在于指令执行的顺序是在时钟的第一相读入指令码并译码,同时处理中断等,第二相读内存单元或者寄存器的数据并存储,第三相执行ALU操作,完成指令要求的各种运算或者偏移量的计算,第四相将指令运算得的结果写入内存及相关寄存器,同时在每一相进行相关标志位的设置和指令周期存储计算的操作。
根据本发明的第十九方面的基于CISC结构的微控制器的指令实现方式,其特征在于中断处理的方式为当中断请求发生时,置位中断锁存器,在指令执行的第一相时钟时检测中断锁存器,响应中断,并清中断使能标志和中断锁存器,PC在中断程序执行前后自动压栈和出栈;所述的中断的种类包括软件中断、外部中断、定时器中断、WDT中断、串行接口中断,中断可嵌套,除软件中断和WDT中断外可控制中断源屏蔽。



图1为本发明微处理器核的内部结构示意图。
图2为指令执行硬件结构示意图。
图3为指令执行节拍流程示意图。
图4为内存分配和地址映射示意图。
图5为本发明微控制器核的外围模块资源配置示意图。
图6为复位电路示意图。
图7为中断处理过程示意图。

具体实施例方式 下面结合附图对本发明的微处理器的构架和实现方式做详细说明。
本发明微处理器核的结构如图1所示。时钟发生器产生基本时钟,并分频,提供内部CPU核和外部外围器件所需要的时钟信号。程序存储器与数据存储器有各自的数据总线。执行时,首先读取指令码,然后译码。译码是根据微码的定义,以及寻址方式的不同,将操作数或者操作码分别存储于操作数寄存器、微指令码寄存器、内存或者特殊功能寄存器(不包括SR区域)。根据译码后得到的指令的类型,将操作数或者需要计算的地址送入ALU进行运算。然后,存储运算的结果,写入寄存器或者内存单元。然后再读入下一字节的指令,进行译码、ALU运算、回写存储数据,以此类推,直到指令结束。由于本微处理器的指令集为变长的CISC指令,每条指令长度不同,指令周期从1个机器周期到10个机器周期不等。在指令执行的过程中,要对每条指令所执行到的机器周期和PC进行计数,以控制指令的运行。
指令处理执行部分的硬件结构如图2所示,首先根据复位向量找到程序的入口地址,PC指向程序存储器的程序入口单元,从程序存储器读入指令,通过指令译码器进行译码。如果是操作码,存入操作码寄存器;如果是操作数,根据对操作码的判断确定是写入数据存储器还是要做为立即数送入ALU进行运算。数据准备好后,即可进行ALU运算操作。运算的结果存入寄存器或者数据存储器单元。当执行调用、返回等指令时,会对程序指针进行压栈和出栈操作;执行跳转等指令时,有指针偏移操作;同时在每读下一字节指令时,会对PC有加1的操作。这些构成PC的来源,也是保证程序正常执行的关键因素之一。
指令处理的基本时序如图3所示。由主时钟分频后获得的四相时钟(CLK1、CLK2、CLK3和CLK4)来控制。每个机器周期根据4相时钟分为4个节拍,每一节拍对应一相时钟。对读入的每个微码在4相时钟分别执行以下操作CLK1取指译码(包括设置标志位和中断处理)、CLK2读所需要的寄存器中的数据、CLK3进行ALU运算、CLK4存储运算结果(包括调整PC指针)。同时,根据微码判断并记录当前指令总的周期数,并在读入指令下一个字节的时候递减,调整PC,直至当前指令的最后一个周期,指向下一条指令,标志位清零,开放中断,开始执行下一条指令。如此循环操作,直到程序结束。
本微处理器包括软件中断、外部中断、定时器中断、WDT中断等常用基本中断。可控制中断源屏蔽,其中软件中断和WDT中断不可屏蔽和嵌套。当有中断请求时,设置中断请求标志并锁存在中断锁存器中,同时自动PC压栈。执行完当前指令后,响应中断,设置中断使能标志使响应当前中断过程中禁止可屏蔽中断。中断执行完或复位后,开放锁存。中断处理过程见图7所示。
本发明微处理器的指令集为复杂指令集,数据总线宽度为8位,采用单级流水线处理和执行指令,可连续寻址64K字节的地址空间。这64K空间分成4个地址空间,分别为程序存储器ROM、数据存储器RAM、特殊功能寄存器SR和数据缓冲寄存器BR。使用内存映射输入/输出系统,所有的I/O寄存器都映射在SR或者BR地址空间。芯片内部共有16组通用寄存器,每组8个,共128个通用寄存器,分配在RAM地址空间的前128个字节。内存分配见图4所示。
为了系统的安全和功耗管理,系统复位采用多源复位,如图6所示。包括上电复位、软件复位、时钟检测复位、地址陷阱复位、WDT复位。其中上电复位为大于4个时钟周期的低电平复位;当PC指向RAM或者特殊寄存器SR区域时,产生地址陷阱复位信号,重新启动系统;WDT在允许工作状态下,若CPU没有按正常工作状态清WDT,WDT计数溢出时会产生复位信号。
本发明处理器内核可方便的扩展各类通用的外设和通讯接口,包括同步串行接口、高速串行输出、I2C总线、LCD驱动器、A/D转换器、定时器/计数器等等,同时也可根据微码定义对151条指令进行扩展。一个微处理器配置外设资源的应用示意图见图5所示。
本发明微处理器的一种典型实现方式如图5所示。“1”为系统时钟发生器,产生基本时钟。其中包含一个时序发生器,经分频产生主系统时钟和外围设备的工作时钟。可输出所需要的分频脉冲到外部端口上,并产生基本定时、WDT、串口、释放复位等系统所需要的各种时钟。“2”是本微处理器的CPU核,是本发明的核心部分。参考图1,包含指令译码器、指令寄存器、ALU、内部堆栈、专用寄存器、中断处理模块以及读写控制电路。系统上电复位以后,根据复位指针从程序存储器中找到程序的入口地址,以字节为单位读入要执行的指令并存储。然后对指令进行译码。译码时根据微码的定义,执行相应的操作。微码的编码分为两大类,单字节编码和双字节编码。表1是对每类编码中每个字节微码含义的解释。
表1指令微码定义表 本发明的微处理器的指令长度为1-4个字节,执行周期1-10个不等。根据译码结果,分为立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、隐含寻址、相对寻址、变址寻址、绝对寻址、向量寻址、页寻址、存储器位寻址共11种类型。如图2所示,译码后提取出立即数或者寄存器信息或者RAM的直接地址,通过多路选择器进入ALU进行运算,结果输出到RAM或者相应的寄存器单元。除常规的PC加1以外,根据不同的指令对PC指针进行调整,包括偏移量寻址、内部堆栈的地址、跳转指令的地址等。在译码器对读入的微码进行辨识以后,除了对当前操作码或者立即数进行相应的操作以外,还要判断指令总的执行周期数并记录,以此作为标志判断指令是否执行完毕,是否需要清除或者设置相应的标志寄存器,以保证系统执行时序的正确性。“3”为系统的复位电路,包括时钟检测复位、地址陷阱复位、WDT复位、软件复位及外部复位电路。可参考图6所示。除外部上电复位外,当系统时钟停止工作,或者PC指针指向非ROM区域,或者CPU工作不正常而没有清WDT计数器时,会产生系统复位信号使系统复位。“4”是定时器/计数器,本系统包含两个16位和两个8位多功能定时器/计数器。“5”是输入/输出端口。为双向端口,且端口可复用。“6”是ADC与数字逻辑部分的接口电路。“7”是ADC模块,本系统为8位8通道的逐次逼近ADC。“8”是中断控制器。当中断请求发生并向CPU申请中断响应时,置位中断锁存器,在指令执行的第一相时钟时检测中断锁存器,发现有中断,响应中断,清中断使能标志和中断锁存器,PC自动压栈,根据向量地址表读中断服务程序的入口地址,写入PC。然后执行中断服务程序。返回后,原来的PC指针自动出栈,继续执行主程序。其时序图见图7所示。“9”是程序存储器ROM。本微处理器共有16K的EPROM,和数据存储器以及特殊寄存器和数据缓冲区连续寻址,便于访问。“10”是监视定时器WDT。在CPU工作不正常时产生中断或者内部复位信号,重启系统使之正常工作,提高了系统可靠性。“11”是基本定时器,提供定时,可产生基本定时器中断。“12”是时钟同步串行接口,用于器件之间的通信,可连续传送8个字节的数据。“13”是静态数据存储器RAM。参考图4,本微处理器有512字节8位的RAM,其中前128字节为通用寄存器区域,包含16组8位通用寄存器。后384字节为数据缓存区域。堆栈可设在RAM中通用寄存器以外的任意区域。当PC指向RAM区域时,会产生地址陷阱复位。这里的通用寄存器与特殊寄存器SR是分开的,另外还有数据缓冲寄存器BR和程序存储器ROM。通过地址映射电路可以连续的寻址64K地址空间。
本微处理器为CISC结构,支持各类常见的微处理器指令。共包含151条基本指令,包括数据传送交换、算术逻辑运算、比较、乘除法、移位、循环、半字节操作、位操作、跳转、调用返回、进栈退栈、软中断以及空操作类指令。根据微码的定义,指令可根据微码扩展,使用灵活。以下是本发明的基本指令集。
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 描述将内存地址为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 描述将内存地址为寄存器组HL内容处的值赋给寄存器p,然后HL的内容加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的内容减1,再将内存地址为寄存器组HL内容处的值赋给寄存器置1;传送给寄存器p的值为0x00H时ZF置1,否则清零。
(5)助记符mov p,(HL+d) 编码0001 1011 1010 0*** 操作p<-(HL+d) 影响标志位JF=1,ZF=z 描述将内存地址为寄存器组HL内容加d处的值赋给寄存器p。JF置1;传送给寄存器p的值为0x00H时ZF置1,否则清零。
(6)助记符mov pp,(x) 编码0001 1111 0001 10** 操作pp<-(x+1,x) 影响标志位JF=1 描述将内存地址为x和x+1处的值赋给寄存器组pp。JF置1。
(7)助记符mov pp,(HL+d) 编码0001 1011 1110 10** 操作pp<-(HL+d+1,HL+d) 影响标志位JF=1 描述将内存地址为HL内容加d+1和HL内容加d处的值赋给寄存器组pp。JF置1。
(8)助记符mov(x),p 编码0000 1111 1010 1*** 操作(x)<-p 影响标志位JF=1 描述将寄存器p的值赋给内存地址为x的内存单元。JF置1。
(9)助记符mov(HL+),p 编码0000 1001 1010 1*** 操作(HL)<-p,HL<-HL+1 影响标志位JF=1 描述将寄存器p的值赋给内存地址为HL值的内存单元,然后HL的内容加1。JF置1。
(10)助记符mov(-HL),p 编码0000 1000 1010 1*** 操作HL<-HL-1,(HL)<-p 影响标志位JF=1 描述先将HL的内容减1,然后将寄存器p的值赋给内存地址为HL值的内存单元。JF置1。
(11)助记符mov(HL+d),p 编码0000 1011 1010 1*** 操作(HL+d)<-p 影响标志位JF=1 描述将寄存器p的值赋给内存地址为HL+d值的内存单元。JF置1 (12)助记符mov(x),pp 编码0000 1111 1110 11** 操作(x+1,x)<-pp 影响标志位JF=1 描述将寄存器pp的值赋给内存地址为x+1和x的内存单元。JF置1。
(13)助记符mov(HL+d),pp 编码0000 1011 1110 11** 操作(HL+d+1,HL+d)<-pp 影响标志位JF=1 描述将寄存器pp的值赋给内存地址为HL内容加d+1和HL内容加d的内存单元。JF置1。
(14)助记符mov(x),(y) 编码1101 1001 操作(x)<-(y) 影响标志位JF=1,ZF=z 描述将内存地址为y的内存单元值赋给内存地址为x的内存单元。JF置1;如果传送的数据是0x00H,则ZF置1,否则清零。
(15)助记符mov(x),(HL+d) 编码0001 1011 1101 1001 操作(x)<-(HL+d) 影响标志位JF=1 描述将内存地址为HL内容加d的内存单元值赋给内存地址为x的内存单元。JF置1。
(16)助记符mov(HL),(x) 编码0001 1111 1101 1000 操作(HL)<-(x) 影响标志位JF=1;ZF=z 描述将内存地址为x的内存单元值赋给的内存地址为HL内容加d的内存单元。JF置1;如果传送的数据是0x00H,则ZF置1,否则清零。
(17)助记符mov(HL),(HL+d) 编码0001 1011 1101 1000 操作(HL)<-(HL+d) 影响标志位JF=1;ZF=z 描述将内存地址为x的内存单元值赋给的内存地址为HL内容加d的内存单元。JF置1;如果传送的数据是0x00H,则ZF置1,否则清零。
(18)助记符mov p,n 编码1100 1*** 操作p<-n 影响标志位JF=1 描述将立即数n赋给寄存器p。JF置1。
(19)助记符mov SP,mn 编码0000 0101 操作SP<-mn 影响标志位JF=1 描述将立即数mn赋给堆栈指针寄存器SP。JF置1。
(20)助记符mov RBS,n 编码1111 0000 1111 操作RBS<-n 影响标志位JF=1 描述将立即数n赋给寄存器RBS。JF置1。
(21)助记符mov(x),n 编码1101 0011 操作(x)<-n 影响标志位JF=1 描述将立即数n赋给内存地址为x的内存单元。JF置1。
(22)助记符mov(HL),n 编码1101 0010 操作(HL)<-n 影响标志位JF=1 描述将立即数n赋给内存地址为HL值的内存单元。JF置1。
(23)助记符mov(HL+),n 编码0000 1001 1101 0011 操作(HL)<-n;HL<-HL+1 影响标志位JF=1 描述将立即数n赋给内存地址为HL值的内存单元,然后HL的内容加1。JF置1。
(24)助记符mov(-HL),n 编码0000 1001 1101 0011 操作HL<-HL-1;(HL)<-n 影响标志位JF=1 描述先将HL的内容减1,然后将立即数n赋给内存地址为HL值的内存单元。JF置1。
(25)助记符mov(HL+d),n 编码0000 1011 1101 0011 操作(HL+d)<-n 影响标志位JF=1 描述将立即数n赋给内存地址为HL值加上d的内存单元。JF置1。
2、指令cmp (1)助记符cmp A,(x) 编码1000 0000 操作A-(x) 影响标志位JF=z;ZF=z;CF=c;HF=h 描述比较寄存器A和内存地址为x的内存单元中的值。JF结果同ZF;当做减法,结果为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和内存地址为HL的内存单元中的值,然后HL内容加1。JF结果同ZF;当做减法,结果为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内容减1,再比较寄存器A和内存地址为HL的内存单元中的值。JF结果同ZF;当做减法,结果为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和内存地址为HL加d的内存单元中的值。JF结果同ZF;当做减法,结果为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 描述比较内存地址为x和内存地址为HL值的内存单元中的值。JF结果同ZF;当做减法,结果为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 描述比较内存地址为HL值加d和内存地址为HL值的内存单元中的值。JF结果同ZF;如做减法结果为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 描述比较内存地址为x内存单元中的值和立即数n。JF结果同ZF;当做减法,结果为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 描述比较内存地址为HL值的内存单元中的值和立即数n,然后HL的内容加1。JF结果同ZF;当做减法,结果为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内容减1,再比较内存地址为HL值的内存单元中的值和立即数n。JF结果同ZF;当做减法,结果为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 描述比较内存地址为HL加d值的内存单元中的值和立即数n。JF结果同ZF;当做减法,结果为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 描述内存地址为x的内存单元中的值加上寄存器A中的值,结果存放在寄存器A中。JF结果同ZF;当做加法,结果为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 描述内存地址为HL内存单元中的值加上寄存器A中的值,结果存放在寄存器A中,然后HL内容加1。JF结果同CF;当做加法,结果为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内容减1,再将内存地址为HL内存单元中的值加上寄存器A中的值,结果存放在寄存器A中。JF结果同CF;当做加法,结果为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 描述将内存地址为HL加d的内存单元中的值加寄存器A的值,结果存放在寄存器A中。JF结果同CF;当做加法,结果为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 描述将内存地址为x和内存地址为HL内存单元中的值相加,结果存放在内存地址为x的内存单元中。JF结果同CF;当做加法,结果为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 描述将内存地址为x和内存地址为HL加d的内存单元中的值相加,结果存放在内存地址为HL加d的内存单元中。JF结果同CF;如做加法结果为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 描述将内存地址为x内存单元中的值和立即数n相加,结果存放在内存地址为x内存单元中。JF结果同CF;当做加法,结果为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 描述将内存地址为HL值的内存单元中的值和立即数n相加,结果存放在内存地址为HL值的内存单元中,然后HL的内容加1。JF结果同CF;当做加法,结果为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内容减1,然后将内存地址为HL值的内存单元中的值和立即数n相加,结果存放在内存地址为HL值的内存单元中。JF结果同CF;当做加法,结果为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 描述将内存地址为HL加d的内存单元中的值和立即数n相加,其结果存放在内存地址为HL值的内存单元中。JF结果同CF;当做加法,结果为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中的值减去内存地址为x的内存单元中的值,结果存放在寄存器A中。JF结果同ZF;当做减法,结果为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中的值减去内存地址为HL的内存单元中的值,结果存放在寄存器A中,然后HL内容加1。JF结果同CF;当做减法,结果为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内容减1,然后将寄存器A中的值减去内存地址为HL的内存单元中的值,结果存放在寄存器A中。JF结果同CF;当做减法,结果为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的值减去内存地址为HL加d的内存单元中的值,结果存放在寄存器A中。JF结果同CF;当做减法,结果为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 描述将内存地址为x的内存单元值减去内存地址为HL内存单元中值,结果存放在内存地址为x的内存单元中。JF结果同CF;当做减法,结果为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 描述将内存地址为x的内存单元值减去内存地址为HL加d的内存单元中的值,结果存放在内存地址为HL加d的内存单元中。JF结果同CF;如做减法结果为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 描述将内存地址为x内存单元中的值减去立即数n,结果存放在内存地址为x内存单元中。JF结果同CF;当做减法,结果为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 描述将内存地址为HL值的内存单元值减去立即数n,结果存放在内存地址为HL值的内存单元中,然后HL的内容加1。JF结果同CF;当做减法,结果为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内容减1,然后将内存地址为HL值的内存单元值减去立即数n,结果存放在内存地址为HL值的内存单元中。JF结果同CF;当做减法,结果为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 描述内存地址为HL加d的内存单元值减去立即数n,其结果存放在内存地址为HL值的内存单元中。JF结果同CF;当做减法,结果为0x00H时ZF置1;最高位存在借位CF置1;存在从第4位借位时HF置1。
5、指令and (1)助记符and A,(x) 编码1000 0011 操作A<-A&(x) 影响标志位JF=z;ZF=z; 描述寄存器A中的值和内存地址为x的内存单元中的值相与,结果存放在寄存器A中。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
(2)助记符and A,(HL+) 编码0001 1001 1000 0011 操作A<-A&(HL);HL<-HL+1 影响标志位JF=z;ZF=z; 描述寄存器A中的值和内存地址为HL的内存单元中的值相与,结果存放在寄存器A中,然后HL内容加1。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
(3)助记符and A,(-HL) 编码0001 1000 1000 0011 操作HL<-HL-1;A<-A&(HL) 影响标志位JF=z;ZF=z; 描述先将HL内容减1,然后将寄存器A中的值和内存地址为HL的内存单元中的值相与,结果存放在寄存器A中。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
(4)助记符and A,(HL+d) 编码0001 1011 1000 0011 操作A<-A&(HL+d) 影响标志位JF=z;ZF=z; 描述寄存器A的值和内存地址为HL加d内存单元中的值相与,结果存放在寄存器A中。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
(5)助记符and(x),(HL) 编码0001 1111 1001 1011 操作(x)<-(x)&(HL) 影响标志位JF=z;ZF=z; 描述将内存地址为x的内存单元值和内存地址为HL内存单元中值相与,结果存放在内存地址为x的内存单元中。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
(6)助记符and(HL+d),(HL) 编码0001 1011 1001 1011 操作(HL+d)<-(HL+d)&(HL) 影响标志位JF=z;ZF=z; 描述将内存地址为x的内存单元值和内存地址为HL加d的内存单元中的值相与,结果存放在内存地址为HL加d的内存单元中。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
(7)助记符and(x),n 编码0001 1111 1000 1011 操作(x)<-(x)&n 影响标志位JF=z;ZF=z; 描述将内存地址为x内存单元中的值和立即数n相与,结果存放在内存地址为x内存单元中。JF结果同ZF;相与的结果为0x00H时 ZF置1,否则清零。
(8)助记符and(HL+),n 编码0001 1001 1000 1011 操作(HL)<-(HL)&n;HL<-HL+1 影响标志位JF=z;ZF=z; 描述将内存地址为HL值的内存单元值和立即数n相与,结果存放在内存地址为HL值的内存单元中,然后HL的内容加1。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
(9)助记符and(-HL),n 编码0001 1000 1000 1011 操作HL<-HL-1;(HL)<-(HL)&n 影响标志位JF=z;ZF=z; 描述先将HL内容减1,然后将内存地址为HL值的内存单元值和立即数n相与,其结果存放在内存地址为HL值的内存单元中。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
(10)助记符and(HL+d),n 编码0001 1011 1000 1011 操作(HL+d)<-(HL)&n 影响标志位JF=z;ZF=z; 描述将内存地址为HL加d的内存单元值和立即数n相与,其结果存放在内存地址为HL值的内存单元中。JF结果同ZF;相与的结果为0x00H时ZF置1,否则清零。
6、指令or (1)助记符or A,(x) 编码1000 0001 操作A<-A|(x) 影响标志位JF=z;ZF=z; 描述寄存器A中的值和内存地址为x的内存单元中的值相或,结果存放在寄存器A中。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(2)助记符or A,(HL+) 编码0001 1001 1000 0001 操作A<-A|(HL);HL<-HL+1 影响标志位JF=z;ZF=z; 描述寄存器A中的值和内存地址为HL的内存单元中的值相或,结果存放在寄存器A中,然后HL内容加1。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(3)助记符or A,(-HL) 编码0001 1000 1000 0001 操作HL<-HL-1;A<-A|(HL) 影响标志位JF=z;ZF=z; 描述先将HL内容减1,然后将寄存器A中的值和内存地址为HL的内存单元中的值相或,结果存放在寄存器A中。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(4)助记符or A,(HL+d) 编码0001 1011 1000 0001 操作A<-A|(HL+d) 影响标志位JF=z;ZF=z; 描述寄存器A的值和内存地址为HL加d内存单元中的值相或,结果存放在寄存器A中。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(5)助记符or(x),(HL) 编码0001 1111 1001 1001 操作(x)<-(x)|(HL) 影响标志位JF=z;ZF=z; 描述将内存地址为x的内存单元值和内存地址为HL内存单元中值相或,结果存放在内存地址为x的内存单元中。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(6)助记符or(HL+d),(HL) 编码0001 1011 1001 1001 操作(HL+d)<-(HL+d)|(HL) 影响标志位JF=z;ZF=z; 描述将内存地址为x的内存单元值和内存地址为HL加d的内存单元中的值相或,结果存放在内存地址为HL加d的内存单元中。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(7)助记符or(x),n 编码0001 1111 1000 1001 操作(x)<-(x)|n 影响标志位JF=z;ZF=z; 描述将内存地址为x内存单元中的值和立即数n相或,结果存放在内存地址为x内存单元中。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(8)助记符or(HL+),n 编码0001 1001 1000 1001 操作(HL)<-(HL)|n;HL<-HL+1 影响标志位JF=z;ZF=z; 描述将内存地址为HL值的内存单元值和立即数n相或,结果存放在内存地址为HL值的内存单元中,然后HL的内容加1。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(9)助记符or(-HL),n 编码0001 1000 1000 1001 操作HL<-HL-1;(HL)<-(HL)|n 影响标志位JF=z;ZF=z; 描述先将HL内容减1,然后将内存地址为HL值的内存单元值和立即数n相或,其结果存放在内存地址为HL值的内存单元中。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
(10)助记符or(HL+d),n 编码0001 1011 1000 1001 操作(HL+d)<-(HL)|n 影响标志位JF=z;ZF=z; 描述将内存地址为HL加d的内存单元值和立即数n相或,其结果存放在内存地址为HL值的内存单元中。JF结果同ZF;相或的结果为0x00H时ZF置1,否则清零。
7、指令xor (1)助记符xor A,(x) 编码1000 0010 操作A<-A xor(x) 影响标志位JF=z;ZF=z; 描述寄存器A中的值和内存地址为x内存单元中的值相异或,结果存放在寄存器A中。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(2)助记符xor A,(HL+) 编码0001 1001 1000 0010 操作A<-A xor(HL);HL<-HL+1 影响标志位JF=z;ZF=z; 描述寄存器A中的值和内存地址为HL内存单元中的值相异或,结果存放在寄存器A中,然后HL内容加1。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(3)助记符xor A,(-HL) 编码0001 1000 1000 0010 操作HL<-HL-1;A<-A xor(HL) 影响标志位JF=z;ZF=z; 描述先将HL内容减1,然后将寄存器A中的值和内存地址为HL的内存单元中的值相异或,结果存放在寄存器A中。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(4)助记符xor A,(HL+d) 编码0001 1011 1000 0010 操作A<-A xor(HL+d) 影响标志位JF=z;ZF=z; 描述寄存器A的值和内存地址为HL加d内存单元的值相异或,结果存放在寄存器A中。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(5)助记符xor(x),(HL) 编码0001 1111 1001 1010 操作(x)<-(x)xor(HL) 影响标志位JF=z;ZF=z; 描述将内存地址为x的内存单元值和内存地址为HL内存单元中值相异或,结果存放在内存地址为x的内存单元中。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(6)助记符xor(HL+d),(HL) 编码0001 1011 1001 1010 操作(HL+d)<-(HL+d)xor(HL) 影响标志位JF=z;ZF=z; 描述将内存地址为x的内存单元值和内存地址为HL加d的内存单元中的值相异或,结果存放在内存地址为HL加d的内存单元中。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(7)助记符xor(x),n 编码0001 1111 1000 1010 操作(x)<-(x)xor n 影响标志位JF=z;ZF=z; 描述将内存地址为x内存单元中的值和立即数n相异或,结果存放在内存地址为x内存单元中。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(8)助记符xor(HL+),n 编码0001 1001 1000 1010 操作(HL)<-(HL)xor n;HL<-HL+1 影响标志位JF=z;ZF=z; 描述将内存地址为HL值的内存单元值和立即数n相异或,结果存放在内存地址为HL的内存单元中,然后HL内容加1。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(9)助记符xor(-HL),n 编码0001 1000 1000 1010 操作HL<-HL-1;(HL)<-(HL)xor n 影响标志位JF=z;ZF=z; 描述先将HL内容减1,然后将内存地址为HL值的内存单元值和立即数n相异或,其结果存放在内存地址为HL值的内存单元中。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
(10)助记符xor(HL+d),n 编码0001 1011 1000 1010 操作(HL+d)<-(HL)xor n 影响标志位JF=z;ZF=z; 描述将内存地址为HL加d的内存单元值和立即数n相异或,结果存放在内存地址为HL值的内存单元中。JF结果同ZF;相异或的结果为0x00H时ZF置1,否则清零。
8、指令daa (1)助记符daa p 编码0001 0***1111 0101 操作加法指令结果的16进制->BCD码 影响标志位JF=c,ZF=z,CF=c,HF=h 描述执行完加法指令后,把寄存器p中的16进制结果进行十进制调整,产生BCD码。调整后的结果仍回写到寄存器p。
9、指令dsa (1)助记符dsa p 编码0001 0***1111 0100 操作减法指令结果的16进制->BCD码 影响标志位JF=c,ZF=z,CF=c,HF=h 描述执行完减法指令后,把寄存器p中的16进制结果进行十进制调整,产生BCD码。调整后的结果仍回写到寄存器p。
10、指令mul (1)助记符mul w,a 编码1111 1101 操作w*a->wa 影响标志位JF=z,ZF=z 描述寄存器w与累加器a中的无符号数相乘,结果的高字节回写到w,低字节回写到a。当高字节为0时,标志JF和ZF置1;否则清0。
11、指令div (1)助记符div wa,c 编码1111 1100 操作wa÷c(商)->a,余数->w 影响标志位JF=z,ZF=z,CF=c 描述寄存器对wa与寄存器c中的无符号数相除,商写到a,余数写到w。余数为0时,标志JF和ZF置1;否则清0。如果除数寄存器c中的数据为0,或者相除后商大于100H,标志CF置1;否则清0 12、指令shlcf (1)助记符shlcf p 编码0001 0***1110 0011 操作参见下列描述 影响标志位JF=p[7],ZF=z,CF=p[7] 描述寄存器p中的数据左移一位,原最高位p[7]写到标志位CF中,最低位补0。具体操作参见附图M-1。标志JF和CF等于寄存器原数据的最高位。如果移位后寄存器中的数据为0,则标志ZF置1,否则清0。
13、指令shrcf (1)助记符shrcf p 编码0001 0***1110 0010 操作参见下列描述 影响标志位JF=p
,ZF=z,CF=p
描述寄存器p中的数据右移一位,原最低位p
写到标志位CF中,最高位补0。具体操作参见附图M-2。标志JF和CF等于寄存器原数据的最低位。如果移位后寄存器中的数据为0,则标志ZF置1,否则清0。
14、指令rshlcf (1)助记符rshlcf p 编码0001 0***1110 0001 操作参见下列描述 影响标志位JF=p[7],ZF=z,CF=p[7] 描述寄存器p中的数据和标志位CF循环左移一位,寄存器原最高位p[7]写到标志位CF中,原标志位CF写到寄存器最低位p
。具体操作参见附图M-3。标志JF和CF等于寄存器原数据的最高位。如果移位后寄存器中的数据为0,则标志ZF置1,否则清0。
15、指令rshrcf (1)助记符rshrcf p 编码0001 0***1110 0000 操作参见下列描述 影响标志位JF=p
,ZF=z,CF=p
描述寄存器p中的数据和标志位CF循环右移一位,寄存器原最低位p
写到标志位CF中,原标志位CF写到寄存器最高位p[7]。具体操作参见附图M-4。标志JF和CF等于寄存器原数据的最低位。如果移位后寄存器中的数据为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的低半位元组和直接寻址单元数据的高、低半位元组循环左移,具体操作参见附图M-5。标志JF置1。
(2)助记符rshlm a,(HL+) 编码0001 1001 1111 0111 操作参见下列描述 影响标志位JF=1 描述累加器a的低半位元组和由HL间接寻址单元数据的高、低半位元组循环左移,具体操作参见附图M-6。移位操作完成后,HL的内容累加1。标志JF置1。
(3)助记符rshlm a,(-HL) 编码0001 1000 1111 0111 操作参见下列描述 影响标志位JF=1 描述HL的内容递减1。累加器a的低半位元组和由HL递减后间接寻址单元数据的高、低半位元组循环左移,具体操作参见附图M-7。标志JF置1。
(4)助记符rshlm a,(HL+d) 编码0001 1011 1111 0111 操作参见下列描述 影响标志位JF=1 描述累加器a的低半位元组和由HL带偏移量间接寻址单元数据的高、低半位元组循环左移,具体操作参见附图M-8。标志JF置1。
18、指令rshrm (1)助记符rshrm a,(x) 编码0001 1111 1111 0110 操作参见下列描述 影响标志位JF=1 描述累加器a的低半位元组和直接寻址单元数据的高、低半位元组循环右移,具体操作参见附图M-9。标志JF置1。
(2)助记符rshrm a,(HL+) 编码0001 1001 1111 0110 操作参见下列描述 影响标志位JF=1 描述累加器a的低半位元组和由HL间接寻址单元数据的高、低半位元组循环右移,具体操作参见附图M-10。移位操作完成后,HL的内容累加1。标志JF置1。
(3)助记符rshrm a,(-HL) 编码0001 1000 1111 0110 操作参见下列描述 影响标志位JF=1 描述HL的内容递减1。累加器a的低半位元组和由HL递减后间接寻址单元数据的高、低半位元组循环右移,具体操作参见附图M-11。标志JF置1。
(4)助记符rshrm a,(HL+d) 编码0001 1011 1111 0110 操作参见下列描述 影响标志位JF=1 描述累加器a的低半位元组和由HL带偏移量间接寻址单元数据的高、低半位元组循环右移,具体操作参见附图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中的数据累加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中的数据递减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中的数据累加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中的数据递减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中的数据累加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中的数据递减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中的数据累加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中的数据递减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中的数据累加1。标志JF置1。
(7)助记符movb(-HL).b,cf 编码0001 1000 0011 0*** 操作HL-1->HL,CF->(HL).b 影响标志位JF=1 描述先把寄存器对HL中的数据递减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位相异或,结果回写到标志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位相异或,结果回写到标志CF,并把寄存器对HL中的数据累加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中的数据递减1,再将标志CF与寄存器对HL间接寻址单元的b位相异或,结果回写到标志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位相异或,结果回写到标志CF。标志JF与CF相反。
24、指令sjt (1)助记符sjt d 编码011* **** 操作参见下列描述 影响标志位JF=1 描述该指令跳转范围是向前15字节或退回16字节。如果标志JF为1,则程序跳转到当前指令首地址的d+2偏移量处,即程序计数器PC增加d;否则程序无跳转。标志JF置1。
25、指令sjf (1)助记符sjf d 编码010* **** 操作参见下列描述 影响标志位JF=1 描述该指令跳转范围是向前15字节或退回16字节。如果标志JF为0,则程序跳转到当前指令首地址的d+2偏移量处,即程序计数器PC增加d;否则程序无跳转。标志JF置1。
26、指令jt (1)助记符jt d 编码0010 1001 操作参见下列描述 影响标志位JF=1 描述该指令跳转范围是向前127字节或退回128字节。如标志JF为1,则程序跳转到当前指令首地址的d+2偏移量处,即程序计数器PC增加d;否则程序无跳转。标志JF置1。
27、指令jf (1)助记符jf d 编码0010 1000 操作参见下列描述 影响标志位JF=1 描述该指令跳转范围是向前127字节或退回128字节。如标志JF为0,则程序跳转到当前指令首地址的d+2偏移量处,即程序计数器PC增加d;否则程序无跳转。标志JF置1。
28、指令jz (1)助记符jz d 编码0010 1111 操作参见下列描述 影响标志位JF=1 描述该指令跳转范围是向前127字节或退回128字节。如标志ZF为1,则程序跳转到当前指令首地址的d+2偏移量处,即程序计数器PC增加d;否则程序无跳转。标志JF置1。
29、指令jnz (1)助记符jnz d 编码0010 1110 操作参见下列描述 影响标志位JF=1 描述该指令跳转范围是向前127字节或退回128字节。如标志ZF为0,则程序跳转到当前指令首地址的d+2偏移量处,即程序计数器PC增加d;否则程序无跳转。标志JF置1。
30、指令jc (1)助记符jc d 编码0010 1101 操作参见下列描述 影响标志位JF=1 描述该指令跳转范围是向前127字节或退回128字节。如标志CF为1,则程序跳转到当前指令首地址的d+2偏移量处,即程序计数器PC增加d;否则程序无跳转。标志JF置1。
31、指令jnc (1)助记符jnc d 编码0010 1100 操作参见下列描述 影响标志位JF=1 描述该指令跳转范围是向前127字节或退回128字节。如标志CF为0,则程序跳转到当前指令首地址的d+2偏移量处,即程序计数器PC增加d;否则程序无跳转。标志JF置1。
32、指令jmp (1)助记符jmp xy 编码0000 0001 操作xy->PC 影响标志位JF=1 描述程序跳转到地址为16位立即数xy的指令存贮单元。即将立即数xy赋值给程序计数器PC。标志JF置1。
(2)助记符jmp(x) 编码0001 1111 0000 0001 操作(x+1,x)->PC 影响标志位JF=1 描述程序跳转到地址为内存单元(x+1,x)内容的指令存贮单元。即将内存单元(x+1,x)中的数据赋值给程序计数器PC。标志JF置1。
(3)助记符jmp(hl+d) 编码0001 1011 0000 0001 操作(hl+d+1,hl+d)->PC 影响标志位JF=1 描述程序跳转到地址为存贮单元(hl+d+1,hl+d)内容的指令存贮单元。即将存贮单元(hl+d+1,hl+d)中的数据赋值给程序计数器PC。标志JF置1。
33、指令calv (1)助记符calv d 编码0011 **** 操作PC-1->(SP,SP-1),SP-2->SP, (FFC1+d*2,FFC0+d*2)->PC 影响标志位无描述该指令为矢量调用指令,可访问16个不同的子程序。首先将程序计数器PC的当前值减1后压栈,同时把栈顶指针减2,然后将矢量表单元对(d*2+FFC1,d*2+FFC0)中的16位数据赋给PC,程序跳转到此时PC指向的地址,即所调用子程序的首地址。
34、指令calp (1)助记符calp d 编码0000 0010 操作PC->(SP,SP-1),SP-2->SP,FF00+d->PC 影响标志位无 描述该指令为页面调用指令。首先将程序计数器PC的当前值压栈,同时栈顶指针减2,然后将页面首地址FF00加上偏移量d赋给PC,程序跳转到此时PC指向的地址,即所调用子程序的首地址。
35、指令cal (1)助记符cal xy 编码0000 0011 操作PC+1->(SP,SP-1),SP-2->SP,xy->PC 影响标志位无 描述首先将程序计数器PC的当前值加1后压栈,同时栈顶指针减2,然后将16位数据xy赋给PC,程序跳转到此时PC指向的地址,即所调用子程序的首地址。
(2)助记符cal(x) 编码0001 1111 0000 0011 操作PC+1->(SP,SP-1),SP-2->SP,(x+1,x)->PC 影响标志位无 描述首先将程序计数器PC的当前值加1后压栈,同时栈顶指针减2,然后将内存单元(x+1,x)中的16位数据赋给PC,程序跳转到此时PC指向的地址,即所调用子程序的首地址。
(3)助记符cal(hl+d) 编码0001 1011 0000 0011 操作PC+1->(SP,SP-1),SP-2->SP,(hl+d+1,hl+d)->PC 影响标志位无 描述首先将程序计数器PC的当前值加1后压栈,同时栈顶指针减2,然后将存贮单元(hl+d+1,hl+d)中的16位数据赋给PC,程序跳转到此时PC指向的地址,即所调用子程序的首地址。
36、指令ret (1)助记符ret 编码1111 1010 操作SP+2->SP,(SP,SP-1)->PC 影响标志位无 描述该指令为子程序调用返回指令。首先将栈顶指针加2,然后将堆栈单元(SP,SP-1)中的数据赋给PC,程序跳转到此时PC指向的地址,即执行调用子程序指令的下一条指令。
37、指令reti (1)助记符reti 编码1111 1011 操作SP+3->SP,(SP-1,SP-2)->PC,(SP)->PSW 影响标志位参见下列描述 描述该指令为可屏蔽中断服务程序返回指令。首先将栈顶指针加3,然后将堆栈单元(SP-1,SP-2)中的数据赋给PC,同时将堆栈单元(SP)中的数据赋给程序状态字PSW,程序跳转到此时PC指向的地址,即执行中断发生时将要执行的下一条指令。此时各状态标志位(JF,ZF,CF,HF)恢复为中断服务程序执行前的数值。
38、指令retn (1)助记符retn 编码0001 0111 1111 1011 操作SP+3->SP,(SP-1,SP-2)->PC,(SP)->PSW 影响标志位参见下列描述 描述该指令为不可屏蔽中断服务程序返回指令。首先将栈顶指针加3,然后将堆栈单元(SP-1,SP-2)中的数据赋给PC,同时将堆栈单元(SP)中的数据赋给程序状态字PSW,程序跳转到此时PC指向的地址,即执行中断发生时将要执行的下一条指令。此时各状态标志位(JF,ZF,CF,HF)恢复为中断服务程序执行前的数值。
39、指令push (1)助记符push PSW 编码1111 1000 操作(PSW)->(SP),SP-1->SP 影响标志位无 描述将程序状态字PSW压栈,同时将栈顶指针减1。
(2)助记符push pp 编码0001 01** 1111 1000 操作pp->(SP,SP-1),SP-2->SP 影响标志位无 描述将寄存器对pp中的数据压栈,同时将栈顶指针减2。
40、指令pop (1)助记符pop PSW 编码1111 1001 操作SP+1->SP,(SP)->PSW 影响标志位参见下列描述 描述将栈顶指针加1,然后将堆栈单元(SP)中的数据赋给程序状态字PSW。此时各状态标志位(JF,ZF,CF,HF)恢复为最近一条压栈指令执行前的数值。
(2)助记符pop pp 编码0001 01** 1111 1001 操作SP+2->SP,(SP,SP-1)->pp 影响标志位无 描述将栈顶指针加2,然后将堆栈单元(SP,SP-1)中的数据赋给寄存器对pp。
41、指令swi (1)助记符swi 编码0000 0000 操作PSW->(SP),PC-1->(SP-1,SP-2),SP-3->SP, 0->IEN,(FFFD,FFFC)->PC 影响标志位无 描述该指令为软件中断指令。先将程序状态字PSW压栈到堆栈单元(SP),再将程序计数器递减后压栈到堆栈单元(SP-1,SP-2),同时栈顶指针减3,并将中断使能总标志IEN清0。禁止对所有可屏蔽中断的响应。最后将中断入口地址存贮单元(FFFD,FFFC)中的数据赋给程序计数器PC,从而执行软件中断服务程序。
42、指令nop (1)助记符nop 编码1111 1111 操作无 影响标志位无 描述该指令为空操作指令。
权利要求
1、一种基于CISC结构的微控制器构架,包括程序存储器、数据随机存储器、特殊功能寄存器堆、数据总线和地址总线、数据缓冲区、流水线指令结构、通用算术逻辑单元、寄存器或者数据存储器单元、指令读取及译码器和系统控制模块,所述数据总线分为各自分离的8位内部数据总线和8位程序数据总线,所述系统控制模块用于产生系统时钟及各种读写控制电路,其特征在于,所述流水线指令结构为单级四段流水线指令结构,该单级四段流水线指令结构分为四个部分
指令读取及译码电路,与系统控制模块相连,用于通过所述8位程序数据总线从程序存储器读入指令,并对指令进行译码分解;
控制电路,用于根据译码结果读取寄存器或者存储器的内容;
算术逻辑单元,与系统控制模块相连,用于对指令读取及译码电路输出的运算类型操作码和控制电路输出的数据内容进行运算;
寄存器或者数据存储器单元,用于存储运算结果。
2、根据权利要求1所述的基于CISC结构的微控制器构架,其特征在于还包括地址映射电路,用于将程序存储器、数据随机存储器、特殊功能寄存器和数据缓冲区的地址映射在连续的空间上。
全文摘要
本发明是一种微处理器构架及其实现方式,其简化了CISC微处理器庞杂的指令集,内部指令实现方式做了改进,数据线和指令线分离,使指令处理的速度加快,在一定程度上弥补了CISC微处理器指令集庞大、执行效率低的缺点。指令集共有151条指令,支持常见典型各类指令,包括数据传送交换、算术逻辑运算、比较、乘除法、移位、循环、半字节操作、位操作、跳转、调用返回、进栈退栈、软中断以及空操作类指令。同时,本发明的微处理器可配置适当的外围资源,其端口多,资源丰富,适用于实时控制各类嵌入式、SOC系统,具有高速、高性能、低功耗、低噪声等特性,抗干扰能力强,是一款适用于家电、民用通信等消费类电子产品的微控制器。
文档编号G06F9/22GK101299185SQ20071018721
公开日2008年11月5日 申请日期2003年8月18日 优先权日2003年8月18日
发明者赵启山 申请人:上海海尔集成电路有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1