计算机组成原理实训

问题描述

一、指令操作

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单元预置数据5500h

data    segment         ;将程序装载到数据存储器
        assume ds:data

        org   0
start:  in    r0, iol
        in    r0, ioh
        add   r0, 0260h
        XNOR  r0,r1
        sta   0261h, r0
        out   ioh, 0261h
        jmp   start
        zjor   IOL,*

data    ends
        end   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单元预置数据5500h


data    segment         ;将程序装载到数据存储器
        assume ds:data

        org   0
start:  in    r0, iol
        red   r0, 0260h
        or    r0
        jx    0260h
        see   r0, 0260h
        hunhe   r0, r1
        add     r0,0260h
        jmp   start

data    ends
        end   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             ;无条件转移

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_52108058/article/details/135297278
今日推荐