文章目录
- 一、指令操作
- 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             ;无条件转移

 
 
 
 
 
 