寄存器清零和置一操作

    • 目录

      移位

      清零

      置一

      读位


      移位
      移位分为左移和右移,这是对二进制的位进行操作

      例如,0b0001 << 1 = 0b0010;        1左移1位,得到0b10,转化为十进制后是2

      二进制位操作中左移1位,相当于十进制数乘以2

      同理,右移0b0100 >> 2 = 0b0001;        0b0100右移两位得到0b0001,

      右移1位相当于十进制数除以2

      清零
      通常需要在不改变其他位的状态下,将寄存器的某一位清零,显然,这时候直接赋值给寄存器是不行的,就需要用到&=

      首先,在逻辑运算中,1&1=1,1&0=0,0&0=0

      由运算规律可以得出,任何数与1都得到它本身,任何数与0都得0;

      假定定义一个int型变量a,让a初始值为0xA0

      int a = 0xA0;        //0xA0 = 10;


      则a二进制表示成0B1010 0000        (0B表示二进制)

      如果要将a的第7位清零并保证其他位数据不变,a & 0B0111 1111 = 0B0010 0000,再将其赋值给a即可

      而0B0111 1111可以写成0B1000 0000的取反,0B1000 0000则是1<<7

      故想要将a的第7位清零可以这么操作:

      a = (a & ~(1<<7));
      a &= ~(1<<7);


      这两句在C语言中是等效的

      置一
      同理,想要将某一位置1,并保证其他位数据不被改变,直接赋值是不行的

      在逻辑运算中1|1=1,1|0=0,0|0=0     其中|是或运算的符号

      可以让想要置一的那一位或上一个1,其他位都或0,由运算规律可以得到,任何数或0都得到它本身,任何数或1都得到1

      如果想要让a的第7位置一可以这么操作:

      a = (a | 1<<7);
      a |= 1<<7;


      这两句代码在C语言中是等小的

      读位
      清零和置一可以让某一位变成想要的数值,如果想要读出某一位的值,则需要用到&运算

      假定a = 0xA0;                //二进制表示为0b1010 0000;

      如果想要读取第7位并保存到b中,则可以这样写:

      a = 0xA0;
      b = ( a&(1<<7) ) >> 7;


      让a&0b1000 0000,如果第7位是1则得到0b1000 0000,再将其右移7位得到0b1,保存到b中

      如果第7位是0,则得到0,右移7位后还是0,保存到b中

      通过&操作就可以读取某一位的数值

      注:如果不将与运算的结果右移7位也是可以的,这样b要么等于0b1000 0000,要么等于0,直接放到if或while等条件判断中也是可以的,条件表达式中只要是不等于0都认为是条件成立

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机组成原理微程序设计 计算机组成原理微程序设计(共23张PPT)全文共23页,当前为第1页。 一、实验目的: 1.掌握时序产生器的组成及工作原理;掌握微程序控制器的组成及工作原理; 2.根据给出的指令系统、微指令格式、微命令的字段译码方案、地址转移逻辑电路分别设计部分微程序流程图、微指令的二进制代码; 3.掌握微程序的编制、写入和读出验证的方法; 4.根据给出的汇编语言和机器语言源程序,通过改变SE1~SE6的值,模拟P(1)测试,观察微程序的运行过程,掌握由微程序解释机器语言源程序的工作原理。 计算机组成原理微程序设计(共23张PPT)全文共23页,当前为第2页。 二、实验设备 TDN-CM+计算机组成原理教学实验系统一台,排线若干。 计算机组成原理微程序设计(共23张PPT)全文共23页,当前为第3页。 观察显示灯MD24-MD1的状态(灯亮为"0",灯灭为"1"),检查读出的微代码是否与写入的相同。 将编程开关为PROM(编程)状态; 在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令的微地址。 掌握时序产生器的组成及工作原理; 由于时序电路的内部线路已经连好,所以只需将时序电路与方波信号源连接(即将时序电路的时钟脉冲输入端φ接至方波信号发生器输出端H23),时序电路的CLR已接至实验板右下方的CLR模拟开关上。 将实验板上"STATE UNIT"中的"STEP"为"STEP","STOP"为"RUN"状态; 说明:指令格式中IN指令为单字长(8位)指令,其它指令为双字长指令(16位),指令格式中给出了各条指令的操作码编码,Rs为源寄存器编码(共2位),Rd为目的寄存器编码(共2位)。 表5-2 微指令的二进制代码表 (二进制开关为"0",相应的微地址位将被强为"1") TDN-CM+计算机组成原理教学实验系统一台,排线若干。 微程序控制器的组成见图5-2,其中控制存储器采用3片2816的E2PROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(74LS273)和一片4D(74LS175)触发器组成。 操作CLR开关(拨动开关在实验板右下角)使CLR信号1->0->1,微地址寄存器MA5-MA0零,从而明确本机的运行入口微地址为000000(二进制); 如果不同,则将开关于PROM编程状态,重新执行 即可。 当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强端将某一触发器为"1"状态,完成微地址的多路转移功能。 按动"START"键,启动时序电路,则每按动一次启动键,读出一条微指令后停机,此时实验台上的微地址显示灯和微命令显示灯将显示所读出的一条指令。 三、实验内容 1.实验原理 实验所用的时序电路原理如图5-1所示,可产生4个等间隔的时序信号TS1-TS4,其中φ为时钟信号,由实验台左上方的方波信号源提供,可产生频率及脉宽可调的方波信号。学生可根据实验自行选择方波信号的频率及脉宽。为了便于控制程序的运行,时序电路发生器也设了一个启停控制触发器Cr,使TS1-TS4信号输出可控。图5-1中STEP(单步)、STOP(停机)分别是来自实验台上方中部的两个二进制开关STEP、STOP的模拟信号。START键是来自实验板上方中部的一个微动开关START的按键信号。当STEP的开关为0时(EXEC),一旦按下启动键,运行触发器Cr一直处于"1"状态,因此时序信号TS1-TS4将周而复始地发送出去。当STEP为1(STEP)时,一旦按下启动键,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机。利用单步方式,每次只读一条微指令,可以观察微指令的代码与当前微指令的执行结果。另外,当机器连续运行时,如果STOP开关"1"(STOP),也会使机器停机。 计算机组成原理微程序设计(共23张PPT)全文共23页,当前为第4页。 计算机组成原理微程序设计(共23张PPT)全文共23页,当前为第5页。 由于时序电路的内部线路已经连好,所以只需将时序电路与方波信号源连接(即将时序电路的时钟脉冲输入端φ接至方波信号发生器输出端H23),时序电路的CLR已接至实验板右下方的CLR模拟开关上。 (1)微程序控制电路 微程序控制器的组成见图5-2,其中控制存储器采用3片2816的E2PROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(74LS273)和一片4D(74LS175)触发器组成。微地址寄存器6位,用三片正沿触发的双D触发器(74LS74)组成,它们带有"0"端和预端。在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令的微地址。当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强端将某一触发器为"1"状态,完成微地

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值