~~~~ TEC-XP+教学实验系统和仿真终端软件PCEC。
~~~~ 内存储器原理:内存储器是计算机中存放正在运行中的程序和相关数据的部件。在教学计算机存储器部件设计中,出于简化和容易实现的目的,选用静态存储器芯片实现内存储器的存储体,包括唯读存储区和随读写存储区两部分,ROM存储区选用4片长度8位、容易8KB的58C65芯片实现,RAM存储区选用2片长度8位、容量2KB的6116芯片实现,每2个8位的芯片合成一组用于组成16位长度的内存字,6个芯片被分成3组,其地址空间分配关系是:0-1777h用于第一组ROM,固化监控程序,2000-2777h用于RAM,保存用户程序和用户数据,其高端的一些单元作监控程序的数据区,第二组ROM的地址范围可以由用户选择,主要用于完成扩展内存容量的教学实验。
~~~~ 地址总线的低13位送到ROM芯片的地址线引脚,用于选择芯片内的一个存储字。用于实现存储字的高位字节的3个芯片的数据线引脚、实现低位字节的3个芯片的数据线引脚分别连接在一起接到数据总线的高、低位字节,是实现存储器数据读写的信息通路。数据总线要通过一个双向三态门电路与CPU一侧的内部总线IB相连接,已完成存储器、接口电路和CPU之间的数据通讯。
<1>在命令行提示符状态下输入:
E 2020↙
屏幕将显示: 2020 内存单元原值:
按如下形式键入:
2020 原值:2222(空格)原值:3333(空格)原值:4444(空格)原值:5555*
<2>在命令行提示符状态下输入:
D2020↙
屏幕将显示从2020内存单元开始的值,其中2020H~2023H的值为:
2222 3333 4444 5555
<3>断电后重新启动教学实验机,用D命令观察内存单元2020~2023的值。
会发现原来置入到这几个内存单元的值已经改变,用户在使用RAM时,必须每次断电重新
启动后都要重新输入程序或修改内存单元的值。
0000 FFF7 0000 FFFF
2>用A命令输入一段程序,执行并观察结果。
<1>在命令行提示符状态下输入:
A 2000↙
屏幕将显示:2000:
按如下形式键入:
2000:MVRD R0,AAAA
2002:MVRD R1,5555
2004:AND R0,R1
2005:RET
2006:↙
<2>在命令行提示符状态下输入:
T 2000↙
R0的值变为AAAAH,其余寄存器的值不变。
R0=AAAA
T↙
R1的值变为5555H,其余寄存器的值不变。
R0=AAAA R1=5555
T↙
R0的值变为0000H,其余寄存器的值不变。
R0=0000
<3>在命令行提示符状态下输入:
G 2000
运行输入的程序。
R0=0000 R1=5555
<4> 在命令行提示符状态下输入:
R↙
屏幕显示:
R0=0000 R1=5555 R2=…
采用单步和连续两种方式执行一段程序,查看结果,断电后发生什么情况?
答:断电前,单步和连续结果一样;断电后,单步可以运行,但前后结果不一样,断电后,连续不可运行。
~~~~~ RAM芯片可直接用A命令键入程序,但断电会丢失,要再次调适该程序必须重新输入,对那些较长的程序或经常用到的程序可通过交叉汇编,在上位机生成代码文件,每次加电启动后不用重新输入,只需通过PCEC16将代码文件传送给下位机即可。
1)用E命令改变内存单元的值并用D命令观察结果。
<1>在命令行提示符状态下输入:
E 5000↙
屏幕将显示: 5000 内存单元原值:
按如下形式键入:
一、原值:2424(按空格)原值:3636(按空格)原值:4848(按空格)原值: 5050↙
<2>在命令行提示符状态下输入:
D 5000↙
屏幕将显示5000H—507FH内容单元的值,从5000开始的连续四个内存单元的值依次为 2424 3636 4848 5050.
<3>断电后重新启动,用D命令观察看内存单元5000—5003的值,会发现这四个单元的值没有发生改变,说明EEPROM的内容断电后可保存。
2)AT28C64B 存储器不能直接用A命令出入程序,单字节的指令可能会写进去,双字节指令的低位会出错(建议试一试),可将编写好的程序用编程器写入片内;也可以将程序放到RAM(6116)中,调用延时子程序,访问AT28C64B中的内存地址。
下面给出的程序,在5000H—500FH单元中依次写入数据000H、0001H、…00FH。
从2000H单元开始输入主程序:
(2000)MVRD R0,0000
MVRD R2,0010;R2记录循环次数
MVRD R3,5000;R3的内容为16为内存地址
(2006)STRR [R3],R0;将R0寄存器的内容放到R3给出的内存单元中
CALA 2200;调用程序地址为2200的延时子程序
INC R0;R0加1
INC R3;R3加1
DEC R2;R2减1
JRNZ 2006;R2不为0跳转到2006H
RET
从2200H单元开始输入延时子程序:
PUSH R3
MVRD R3, FFFF
(2203) DEC R3
JRNZ 2203
POP R3
RET
运行主程序,在命令提示符下输入: G 2000↙。
程序执行结束后,在命令提示符下输入: D 5000↙;
可看到从5000H开始的内存单元的值变为
5000: 0000 0001 0002 0003 0004 0005 0006 0007
5008: 0008 0009 000A 000B 000C 000D 000E 000F
思考:
1)为何能用E命令直接写58C65的存储单元,而A命令则有时不正确.
~~~~ 能用E命令直接写AT28C64B的存储单元,而不用A命令,修改延时子程序,将其延时改短,可将延时子程序中的R3的内容赋成00FF或0FFF等,再看运行结果时,发现因为当写入双字节指令的低位时会出错,这也是不能用A命令而只能用E命令去写存储单元的原因。
2)将延时改短,将程序中的R3的内容赋成00FF,再看运行结果。
~~~~ 此次试验需要连线,需要检查试验室内线的好坏,为试验前期准备.通过本次实验,我熟悉了ROM芯片和RAM芯片在功能和使用方法的差异之处,学习了用编程EEPROM芯片内写入一批数据的过程和方法。通过不断的操作,通过自身的思考,我理解并熟悉通过字、位扩展技术实现扩展存储器系统容量的方案,编程过程需要思考指令的执行过程,锻炼了自身的编程能力,完善了自身的能力.