计算机组成原理实验手册 - 图文 联系客服

发布时间 : 星期四 文章计算机组成原理实验手册 - 图文更新完毕开始阅读7cffb37bb4daa58da1114a34

符结束输入过程。

<1> 在命令行提示符状态下输入:

A 2040↙ 屏幕将显示: 2040:

从地址2040H开始输入下列程序:

(2040) MVRD R2,0030 ; 用于判数字符的下界值

MVRD R3,0039 ; 用于判数字符的上界值

(2044) IN 81 ; 判键盘上是否按了一个键,

SHR R0 ; 即串行口是否有了输入的字符 SHR R0

JRNC 2044 ; 没有输入则循环测试 IN 80 ; 输入字符到R0 MVRD R1,00FF

AND R0,R1 ;清零R0的高位字节内容 CMP R0,R2 ; 判输入字符≥字符'0'否 JRNC 2053 ; 为否, 则转到程序结束处 CMP R3,R0 ; 判输入字符≤字符'9'否 JRNC 2053 ; 为否, 则转到程序结束处 OUT 80 ; 输出刚输入的数字符 JMPA 2044

(2053) RET

<2> 在命令行提示符状态下输入:

G 2040↙

光标闪烁等待键盘输入,若输入0-9十个数字符,则在屏幕上回显;若输入非数字符,则屏幕不再显示该字符,出现命令提示符,等待新命令。

;转去程序前边2044处等待输入下一个字符

思考题, 本程序中为什么不必判别串行口输出完成否? 设计打入'A'~'Z'和'0'~'9'的程序, 遇到其它字符结束输入过程。 例子4: 计算1到10的累加和。

<1> 在命令行提示符状态下输入:

A 2060↙ 屏幕将显示: 2060:

从地址2060H开始输入下列程序:

(2060)MVRD R1,0000

MVRD R2,00OA MVRD R3,0000

(2066) INC R3

; 得到下一个参加累加的数 ; 置累加和的初值为0 ; 最大的加数

17

ADD R1,R3 CMP R3,R2 JRNZ 2066 RET

; 累加计算 ; 判是否累加完 ; 未完, 开始下一轮累加

<2> 在命令行提示符状态下输入:

G 2060↙

运行过后, 可以用R命令观察累加器的内容。R1的内容为累加和。 结果为:R1=0037 R2=00OA R3=00OA

例子5:设计一个有读写内存和子程序调用指令的程序,功能是读出内存中的 字符,将其显示到显示器的屏幕上,转换为小写字母后再写回存储器原存储区域。

<1> 将被显示的6个字符‘A’~‘F’送入到内存20F0H开始的存储区域中。

在命令行提示符状态下输入: E 20F0↙ 屏幕将显示:

20F0 内存单元原值: 按下列格式输入:

20F0 内存原值:0041 内存原值:0042 内存原值:0043 内存原值:0044 内存原值:0045 内存原值:0046↙ 在命令行提示符状态下输入: 从地址2080H开始输入下列程序:

(2080)MVRD R3,0006

MVRD R2,20F0

(2084)LDRR R0,[R2]

CALA 2100 DEC R3 INC R2 JR 2084

(208B)RET

从地址2100H开始输入下列程序:

(2100)OUT 80

;输出保存在R0寄存器中的字符

;写R0中的字符到内存,地址同LOD所用的地址 ;测试串行接口是否完成输出过程

;未完成输出过程则循环测试

MVRD R1,0020 STRR [R2],R0

(2105)IN 81

SHR R0 JRNC 2105

;指定被读数据的个数

;指定被读、写数据内存区首地址 ;读内存中的一个字符到R0寄存器

;指定子程序地址为2100,调用子程序,完成显示、

转换并写回的功能 ;检查输出的字符个数 ;未完成,修改内存地址

;转移到程序的2086处,循环执行规定的处理

JRZ 208B ;完成输出则结束程序的执行过程

ADD R0,R1 ;将保存在R0中的大写字母转换为小写字母

18

RET ;结束子程序执行过程,返回主程序

<2> 在命令行提示符状态下输入:

G 2080↙ 屏幕显示运行结果为: ABCDEF

<3> 在命令行提示符状态下输入:

D 20F0↙

20F0H~20F5H内存单元的内容为: 0061 0062 0063 0064 0065 0066

例子6:设计一个程序在显示器屏幕上循环显示95个(包括空格字符)可打印字符。

<1>在命令行提示符状态下输入:

A 20A0↙ 屏幕将显示: 20A0:

从地址20A0H开始输入下列程序:

A 20A0 ;从内存的20A0单元开始建立用户的第一个程序 20A0: MVRD R1,7E ;向寄存器传送立即数 20A2: MVRD R0,20 ;

20A4: OUT 80 ;通过串行接口输出R0低位字节内容到显示器屏幕 20A5: PUSH R0 ;保存R0寄存器的内容到堆栈中 20A6: IN 81 ;读串行接口的状态寄存器的内容

20A7: SHR R0 ;R0寄存器的内容右移一位,最低位的值移入标志位C 20A8: JRNC 20A6 ;条件转移指令,当标志位C不是1时就转到20A6地址 20A9: POP R0 ;从堆栈中恢复R0寄存器的原内容

20AA: CMP R0,R1 ;比较两个寄存器的内容是否相同,相同则标志位Z=1 20AB: JRZ 20A0 ;条件转移指令,当标志位Z为1时转到200A0地址 20AC: INC R0 ;把R0寄存器的内容增加1

20AE: JR 20A4 ;无条件转移指令,一定转移到20A4地址 20AF: RET ;子程序返回指令,程序结束 <2> 在命令行提示符状态下输入:

G 20A0↙

运行过后, 可以观察到显示器上会显示出所有可打印的字符。

上述例子, 都是用监控程序的A命令完成输入源汇编程序的。在涉及到汇编语句标号的地方, 不能用符号表示, 只能在指令中使用绝对地址。使用内存中的数据, 也由程序员给出数据在内存中的绝对地址。显而易见, 对这样的极短小程序矛盾并不突出, 但很容易想到,对很大的程序, 一定会有较大的困难。

在用A命令输入汇编源语句的过程中, 有一定用机经验的人, 常常抱怨A命令中未提供适当的编辑功能, 这并不是设计者的疏漏, 因为我们并不准备在这种操作方式下支持设计较长的程序, 这种工作应转到提供了交叉汇编程序的PC机上去完成。相反的情况是, 输入上述一些小程序, 用监控程序的A命令完成, 往往比用交叉汇编完成更简捷。

19

2.2

实验目的

脱机运算器实验

深入了解AM2901运算器的功能与具体用法,4片AM2901的级连方式,深化运算器部件的组成、设计、控制与使用等诸项知识。

实验说明

脱机运算器实验,是指让运算器从教学计算机整机中脱离出来,此时,它的全部控制与操作均需通过两个12位的微型开关来完成,这就谈不上执行指令,只能通过开关、按键控制教学机的运算器完成指定的运算功能,并通过指示灯观察运算结果。

下面先把前边讲过的、与该实验直接有关的结论性内容汇总如下。 一. 12位微型开关的具体控制功能分配如下:

A口、B口地址:送给AM2901器件用于选择源与目的操作数的寄存器编号;

I8-I0:选择操作数来源、运算操作功能、选择操作数处理结果和运算器输出内容的3组3位的控制码;

SCi、SSH和SST:用于确定运算器最低位的进位输入、移位信号的入/出和怎样处理AM2901产生的状态标志位的结果。

二. 开关位置说明:

做脱机运算器实验时,要用到提供24位控制信号的微动开关和提供16位数据的拨动开关。微动开关是红色的,一个微动开关可以提供12位的控制信号,标有micro switch 1和micro switch 2;数据开关是黑色的,左边的标有SWH的是高8位,右边的标有SWL的是低8位。

微动开关与控制信号对应关系见表(由左到右):

Micro switch 1 Micro switch 2 I8-I6 I5-I3 I2-I0 SST SSH SCI B PORT A PORT

三. 开关检测

红色微动开关是该实验系统使用寿命最短的器件,开关好坏的检测方法比较简单,用户将五个控制机器工作方式的开关置于“1XX00”,从左面起第二个和第三个的开关处于任意位置,然后将两个微动开关上的24个小纽子依次置为1(开关拨到上方为1),看对应的指示灯是否亮,如果有一个或数个指示灯不亮,则一般是开关出了问题。

实验步骤

1. 将教学机左下方的5个拨动开关置为1XX00(单步、16位、脱机);先按一下“RESET”按键,再按一下“START”按键,进行初始化。

2. 接下来,按下表所列的操作在机器上进行运算器脱机实验,将结果填入表中:其中D1取为0101H,D2取为1010H;通过两个12位的红色微型开关向运算器提供控制信号,通过16位数据开关向运算器提供数据,通过指示灯观察运算结果及状态标志。

20