文章目录
- 一、指令操作
- 1、PC程序计数器
- 2、目标编码
- 3、总线规则
- 4、算数运算
- 5、逻辑运算
- 6、源编码
- 7、微变址
- 二、编码和微地址
- 1、指令操作
- 2、我的操作
问题描述
一、指令操作
1、PC程序计数器
PC装载(E/M IP = 00): 当 E/M IP 设置为 00 时,可能表示将某个值加载到程序计数器(PC)中,以指定下一条要执行的指令的地址。
PC增量(E/M IP = 10): 当 E/M IP 设置为 10 时,可能表示程序计数器(PC)应该递增,以指向下一条顺序执行的指令的地址。
PC保持(E/M IP = 11): 当 E/M IP 设置为 11 时,可能表示要保持程序计数器(PC)的当前值,即不进行改变,从而执行当前指令的地址。
2、目标编码
o2 o1 o0 = 111 (禁止): 该编码可能表示禁止目标寄存器的选择,可能是一个控制信号,指示不执行任何目标寄存器的操作。
o2 o1 o0 = 110 (MAR): 该编码可能表示选择内存地址寄存器(Memory Address Register,MAR)作为目标寄存器。
o2 o1 o0 = 101 (BX): 该编码可能表示选择基址寄存器(Base Register,BX)作为目标寄存器。
o2 o1 o0 = 100 (AX): 该编码可能表示选择累加器寄存器(Accumulator,AX)作为目标寄存器。
o2 o1 o0 = 011 (SP): 该编码可能表示选择堆栈指针寄存器(Stack Pointer,SP)作为目标寄存器。
o2 o1 o0 = 010 (IOW): 该编码可能表示选择输入/输出寄存器(Input/Output Register,IOW)作为目标寄存器。
o2 o1 o0 = 001 (XWR): 该编码可能表示选择扩展工作寄存器(Extended Working Register,XWR)作为目标寄存器。
o2 o1 o0 = 000 (RWR): 该编码可能表示选择通用寄存器(General Register,RWR)作为目标寄存器。
3、总线规则
W XP OP = 000 (字传递): 该编码可能表示进行字(word)传递,即在总线上传递一个完整的字。
W XP OP = 100 (偶送偶): 该编码可能表示进行偶数到偶数的传递,即从偶数地址传递到偶数地址。
W XP OP = 101 (偶送奇): 该编码可能表示进行偶数到奇数的传递,即从偶数地址传递到奇数地址。
W XP OP = X10 (奇送偶): 该编码可能表示进行奇数到偶数的传递,即从奇数地址传递到偶数地址。
W XP OP = X11 (奇送奇): 该编码可能表示进行奇数到奇数的传递,即从奇数地址传递到奇数地址。
4、算数运算
MS2 S1 So = 0000 (A+B+C): 该编码可能表示执行加法运算,其中 A、B 和 C 分别是相加的操作数。
MS2 S1 So = 0001 (A-B-C): 该编码可能表示执行减法运算,其中 A 是被减数,B 是减数,C 是借位。
MS2 S1 So = 0010 (RLC): 该编码可能表示执行循环左移(Rotate Left through Carry)操作。
MS2 S1 So = 0011 (RRC): 该编码可能表示执行循环右移(Rotate Right through Carry)操作。
MS2 S1 So = 0100 (A+B): 该编码可能表示执行无进位加法运算,即 A 和 B 相加。
MS2 S1 So = 0101 (A-B): 该编码可能表示执行无借位减法运算,即 A 减去 B。
MS2 S1 So = 0110 (RL): 该编码可能表示执行左移(Shift Left)操作。
MS2 S1 So = 0111 (RR): 该编码可能表示执行右移(Shift Right)操作。
5、逻辑运算
M S2 S1 S0 = 1000 (B): 该编码可能表示将输入 B 作为输出。
M S2 S1 S0 = 1001 (A取反): 该编码可能表示对输入 A 进行逻辑取反操作。
M S2 S1 S0 = 1010 (A减1): 该编码可能表示对输入 A 执行减1操作。
M S2 S1 S0 = 1011 (A=0): 该编码可能表示将输出置为零。
M S2 S1 S0 = 1100 (A逻辑或B): 该编码可能表示执行 A 和 B 的逻辑或操作。
M S2 S1 S0 = 1101 (A逻辑与B): 该编码可能表示执行 A 和 B 的逻辑与操作。
M S2 S1 S0 = 1110 (A加1): 该编码可能表示对输入 A 执行加1操作。
M S2 S1 S0 = 1111 (A): 该编码可能表示将输入 A 作为输出。
6、源编码
X2 X1 XO = 111 (禁止): 该编码可能表示禁止数据传送或选择源寄存器。
X2 X1 XO = 110 (ALU): 该编码可能表示选择ALU(算术逻辑单元)的输出作为数据传送的源。
X2 X1 XO = 101 (SP): 该编码可能表示选择堆栈指针寄存器(Stack Pointer,SP)的值作为数据传送的源。
X2 X1 XO = 100 (IOR): 该编码可能表示选择输入/输出寄存器(Input/Output Register,IOR)的值作为数据传送的源。
X2 X1 XO = 011 (MRD): 该编码可能表示进行内存读取操作,选择存储器数据寄存器(Memory Read Data,MRD)的值作为数据传送的源。
X2 X1 XO = 010 (XRD): 该编码可能表示选择扩展寄存器数据寄存器(Extended Register Data,XRD)的值作为数据传送的源。
X2 X1 XO = 001 (RRD): 该编码可能表示选择通用寄存器数据寄存器(Register Read Data,RRD)的值作为数据传送的源。
X2 X1 XO = 000 (PC): 该编码可能表示选择程序计数器(Program Counter,PC)的值作为数据传送的源。
7、微变址
IR lu lcz = 111 (禁止): 该编码可能表示禁止微变址操作,即不进行微操作的变址。
IR lu lcz = 110 (条件变址): 该编码可能表示进行条件微变址操作,其中微操作的变址受到某些条件的限制。
IR lu lcz = 101 (转移变址): 该编码可能表示进行转移微变址操作,即跳转到另一个微程序地址执行。
IR lu lcz = 100 (结尾变址): 该编码可能表示进行结尾微变址操作,即当前微程序的结束或者跳转到下一个微程序。
二、编码和微地址
;基本模型机程序#LOAD "czzwd1.IS" ;预调入指令系统/微程序
#SET RAM 0260h = 5500h ;数据区0260H单元预置数据5500hdata segment ;将程序装载到数据存储器assume ds:dataorg 0
start: in r0, iolin r0, iohadd r0, 0260hXNOR r0,r1sta 0261h, r0out ioh, 0261hjmp startzjor IOL,*data endsend start
;基本模型机指令系统;助记符 操作数 指令码 长度
;-----------------------------------------------------
IN R0,IOL 20 1 ;将IOL数据读出到寄存器R0
IN R0,IOH 22 1 ;将IOH数据读取到寄存器R0
ADD R0,* 30 3 ;直接字节加到寄存器R0
XNOR R0,R1 40 1 ;与或非运算
STA *,R0 60 3 ;寄存器R0写入直接内存
OUT IOH,* 80 3 ;直接字节输出到IOH
JMP * A0 3 ;无条件转移
zjor IOL,* C0 3 ;求或值
1、指令操作
地址的判断
读取低位
读取高位
与或非运算
输出运算
寄存器ro写到内存
输出
无条件转移到
ADD
REG 通用寄存器 0001
2、我的操作
;基本模型机程序#LOAD "czzwd1.IS" ;预调入指令系统/微程序
#SET RAM 0260h = 5500h ;数据区0260H单元预置数据5500hdata segment ;将程序装载到数据存储器assume ds:dataorg 0
start: in r0, iolred r0, 0260hor r0jx 0260hsee r0, 0260hhunhe r0, r1add r0,0260hjmp startdata endsend start
;基本模型机指令系统;助记符 操作数 指令码 长度
;-----------------------------------------------------
IN R0,IOL 20 1 ;将IOL数据读出到寄存器R0
RED R0,* 30 3 ;寄存器R0-0260h中数据,存储到寄存器Sp(直接寻址)
OR R0 40 1 ;(寄存器寻址)或运算,将sp当做地址,放到ax后到ar取出数据,放在cx中,将sp放在ax,cx放在bx进行或运算,最后放到sp
JX * 60 3 ;间接寻址,存储到寄存器
SEE R0,* 80 3 ;寄存器寻址+直接寻址
HUNHE R0,R1 90 1 ;寄存器-寄存器作为地址,找到数据然后加一,存储到寄存器
ADD R0,* C0 3 ;(寄存器间接)+pc间接-一个数
JMP * A0 3 ;无条件转移