计算机系统基础01运算器算术运算(初)

计算机系统基础

实验项目: 运算器算术运算
实验目的:掌握ALU的算术运算原理,熟悉ALU数据传送通路和数据传送方式。
实验环境:微机,配置Windows操作系统、LC-3仿真机软件。
实验过程:

单条指令

(一) 运算 process data
0001  001  100  000101        (1305)
ADD  R1   R4      R5        (R4+R5 -->R1)

在这里插入图片描述

0001  001  100  100101        (1325)
ADD  R1   R4      5        (R4+5 -->R1)

在这里插入图片描述

0101  010  010  100000	  (54A0)
AND  R2   R2      0       (R2&0 -->R2)

在这里插入图片描述

1001  011  101  111111      (977F)
NOT  R3   R5      		  (R5按位取反)

在这里插入图片描述

(二)移动 moves data
PC相对寻址 : LD (0010) 和 ST (0011)

将地址生成位做16位扩展然后与增量PC(已经+1)相加,计算出来的地址放入DR或SR,根据该内存地址指向的内容做对应的读写。PC+offset---->address ,mem[address]—>result

间接寻址 : LDI (1010) 和 STI (1011)

首先采用LD的方式计算出地址,但是不是直接取这个地址的内容做为结果,而是把这个地址的内容做为一个新的地址,新地址指向的内容即为需要寻找的内容 增量pc+offset—>address, mem[address]—>address1 mem[address1]—>result.

基址偏移寻址 : LDR(0110)和STR(0111)
R1<---R2+offset,mem[R1]--->result
0110  010  011  000110         (646C)
LDR    R2   R3      6          (R3+6 -->R2)

在这里插入图片描述

立即数寻址 : LEA (1110)

寻址过程是立即的,直接把PC增量和偏移量相加得到结果,而不需要查询内存, 即增量PC+offset—>result.

1110  101  11111101       (EBFD)
LEA    R5       -3        (PC + -3 -->R5)

在这里插入图片描述

(三)控制 change sequ
(无)条件跳转 BR (0000)
0000  NZP  PC偏移
PC←增量PC+PCoffset9

N、Z、P就是三个bit位寄存器,条件跳转指令通过将对应的位置为1来表明需要对该位寄存器进行判断来确定是否需要进行跳转来改变指令流。
如果在条件跳转指令N,Z,P三个位都为1的情况下,无论如何PC都会发生变化(其中之一肯定能满足条件),这种情况为无条件跳转。
如果指令中的N、Z、P都为0,则不进行任何条件判断(相当于指令没有意义,PC继续按照正常的增量执行下一条指令)

JMP指令 (1100)
1100  000  010  000000       (C080)
JMP         R2  

在这里插入图片描述JMP指令的任务就是把寄存器bit[8:6]标识的寄存器内容装入PC寄存器

TRAP指令 (1111)
1111  0000  陷入矢量

TRAP指令的任务是改变PC内容,使其指向操作系统所在的空间内部,即以当前用户程序的身份跳转到操作系统的某个代码入口开始执行。也可以说TRAP指令激活了操作系统的服务调用(Service Call),图中的陷入矢量就是程序希望操作系统执行的服务程序的编号。

组合指令

1.实现x-y
x is in R0, y is in R1
 Set value R0 = 4 = x,R1 = 1 = y

在这里插入图片描述步骤:
(1)求反码

1001  001  001 111111          (927F)
NOT    R1   R1                ( NOT(y)-->R1 )

在这里插入图片描述

(2)得反码

0001  010  001  100001         (1461)
ADD   R2   R1       1        ( (-y)-->R2 )

10(3)做减法

0001  010  000  000010          (1402)
ADD    R2   R0      R2         ( x+(-y)-->R2 )

在这里插入图片描述

乘法运算

指令分析

Set value   R4=5, R5=3
0101  010  010  100000       (54A0)               x3000
AND  R2   R2       0       (R2 清零)
0001  010  010  000100       (1484)               x3001
ADD  R2   R2      R4       ( R2 + R4 --> R2 )
0001  101  101  111111        (1B7F)              x3002
ADD  R5   R5      -1        ( R5 - 1 --> R5)
0000  001  111  111101        (03FD)              x3003
BR     P                     ( BRP  x3001) 
1111  000  000  100101        (F025)              x3004
                              ( TRAP  HALT)
统计10个数的和

指令分析

  Set value x3100
x3000   0101  001  001  100000       (5260)
         AND  R1   R1       0 		 (R1&0  R1清零,存储和)
x3001   0101  100  100  100000       (5920)
         AND  R4   R4       0        (R4&0  R4清零,  R4作为计数器)
x3002   0001  100  100  101010       (192A)
        ADD  R4   R4      10         (R4 = R4+10  赋值数的个数为10)
x3003   1110  010  011111100         (E4FC)
        LEA   R2      x0FC           (R2-->PC+x0FC  x3100) 
x3004   0110  011  010  000000       (6680)
         LDR  R3   R2       0        (R2+0-->R3 )   loop
x3005   0001  010  010  100001       (14A1)
     	ADD  R2   R2       1         (R2 = R2+1  指向下一位数据)
x3006   0001  001  001  000011       (1243)
         ADD  R1   R1      R3        (R1 =  R1+ R3)
x3007   0001  100  100  111111       (193F)
        ADD  R4   R4      -1         (R4 = R4 - 1,计数器减一) 
x3008   0000  001  111111011         (03FB)
         BR    P                     (BRP  loop  x3004)
x3009   1111  000000100101           (F025)
        TRAP   HALT				     (TRAP   halt)
小结

· 运算操作指令:ADD、AND、NOT
· 寄存器清零:和0做AND操作
· 减法:NOT第二个操作数后+1(取补码)与第一个操作数ADD
· 数据搬迁指令:LD、SD、LDR、STR、LDI、STI、LEA
· PC相对寻址:LD和SD。DR←M[PC+PCoffset9];SD同理。范围较小,但速度快
· 间接寻址:LDI和STI。DR←M[M[PC+PCoffset9]];STI同理。范围为全内存,但速度慢
· 基址偏移寻址:LDR和STR。DR←M[baseR+offset6];STR同理。范围为全内存,速度快
· 立即数寻址:LEA。DR←PC+PCoffset9。常用作对寄存器初始化地址。
· 控制指令:BR、JMP、TRAP
· 条件跳转指令:BR。若条件码N/Z/R对应位发生变化,则PC←增量PC+PCoffset9。这个跳转是有范围的。
· 无条件跳转指令:BR,其中nzp位均置1.
· 循环控制的两种方法:计数器方法(知道要循环多少次);哨兵法(事先不知道循环多少次,放一个哨兵字,若哨兵字出现,则跳出循环)
· JMP:BR的跳转地址有局限性,而JMP无。
· TRAP:跳转至某个既定程序的入口,执行完毕后,执行下一条指令。既定的程序的入口用trapvector陷入矢量来表示位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值