Chinaunix首页 | 论坛 | 博客
  • 博客访问: 674353
  • 博文数量: 191
  • 博客积分: 1875
  • 博客等级: 上尉
  • 技术积分: 2167
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 23:21
个人简介

有时候,就是想窥视一下不知道的东东,因为好奇!

文章分类

全部博文(191)

文章存档

2024年(7)

2023年(3)

2020年(1)

2019年(1)

2018年(1)

2017年(2)

2016年(69)

2015年(53)

2014年(14)

2013年(1)

2012年(5)

2011年(25)

2010年(9)

分类: 其他平台

2024-07-15 00:31:51



重新整理指令


操作码(D7..4)及对应运行:
以ALU(上图74HC283加法器)为中心,2个输入分别为A和B,1个输出S。
操作码解码后,选中一个输入数据A(上图红色箭头),操作码的D3..0(上图绿色箭头)为输入数据B,选中一个(上图箭头)寄存器中保存运算结果S

  0000:   SEL_B/SEL_A=00, 选择A寄存器为源寄存器,~LOAD3..0=1110选择A寄存器为宿寄存器,A=A+D3..0(ADD A, Im)
  0001:   SEL_B/SEL_A=01, 选择B寄存器为源寄存器,~LOAD3..0=1110选择A寄存器为宿寄存器,A=B+D3..0(ADD A, B, Im)(当Im=0时,可记为MOV A,B)
  0010:   SEL_B/SEL_A=10, 选择DIPSW4为源数据,~LOAD3..0=1110选择A寄存器为宿寄存器,A=DIPSW4+D3..0(IN A, DIPSW4, Im)(用作Im=0时,记为IN A更合适吧)
  0011:   SEL_B/SEL_A=11, 选择0为源数据,~LOAD3..0=1110选择A寄存器为宿寄存器,A=D3..0(MOV A, Im)
  0100:   SEL_B/SEL_A=00, 选择A寄存器为源寄存器,~LOAD3..0=1101选择B寄存器为宿寄存器,B=A+D3..0(ADD B,A, Im)(Im=0时,记为MOV B,A
  0101:   SEL_B/SEL_A=01, 选择B寄存器为源寄存器,~LOAD3..0=1101选择B寄存器为宿寄存器,B=B+D3..0(ADD B Im)
  0110:   SEL_B/SEL_A=10, 选择DIPSW4为源数据,~LOAD3..0=1101选择B寄存器为宿寄存器,B=DIPSW4+D3..0(IN B, DIPSW4, Im)(Im=0时,记为IN B更合适吧)
  0111:   SEL_B/SEL_A=11, 选择0为源数据,~LOAD3..0=1101选择B寄存器为宿寄存器,B=D3..0(MOV B, Im)
  1000:   SEL_B/SEL_A=01, 选择B寄存器为源寄存器,~LOAD3..0=1011选择OUT寄存器为宿寄存器,OUT=B(OUT B)
  1001:   SEL_B/SEL_A=01, 选择B寄存器为源寄存器,~LOAD3..0=1011选择OUT寄存器为宿寄存器,OUT=B+D3..0(OUT B,Im)
  1010:   SEL_B/SEL_A=11, 选择0为源数据,~LOAD3..0=1011选择OUT寄存器为宿寄存器,OUT=D3..0(OUT  Im)  
  1011:   SEL_B/SEL_A=11, 选择0为源数据,~LOAD3..0=1011选择OUT寄存器为宿寄存器,OUT=D3..0(OUT Im)   
  1100:   SEL_B/SEL_A=01, 选择B为源数据,~LOAD3..0=C111(不)选择PC寄存器为宿寄存器,PC=B或PC=PC+1(JNC B) 
  1101:   SEL_B/SEL_A=01, 选择B为源数据,~LOAD3..0=0111选择PC寄存器为宿寄存器,PC=B(JMP B) 
  1110:   SEL_B/SEL_A=11, 选择0为源数据,~LOAD3..0=C111(不)选择PC寄存器为宿寄存器,PC=D3..0(JNC Im)  
  1111:   SEL_B/SEL_A=11, 选择0为源数据,~LOAD3..0=0111选择PC寄存器为宿寄存器,PC=D3..0(JMP Im)

。。。
 

阅读(51) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~