实验六存储器扩展实验
一、实验要求 利用PROTEUS平台,进行存储器扩展。要求按照图6-1画图,并编写程序,实现存储器的写操作和读操作。要求从头到未组织一遍,包括建立asm文件,建立DSN文件,生成EXE文件(参阅本册实验指导P15~20页内容)。
二、实验目的
1、熟练掌握Proteus软件的使用。 2、理解存储器扩展原理及编程技巧。 3、加深对存储器读写的理解。
三、实验内容 【实验内容1】
在Proteus环境中完成程序仿真:程序要求把内存中一数据区(称为源数据块)传送到内存另一数据区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况,如下图所示。
当源数据块首址大于目的块首址时,从数据块首地址开始传送数据。当源数据块首址小于目的块首址时,从数据块末址开始传送数据。(这是为什么?)
答:当源数据块首址小于目的块首址时,为防止数据段过长,超出源数据块首址和目的块首址之间的差值,造成数据传输过程中使源数据端的部分数据被改变,所以从源数据块末址开始传输。
步骤1:在Proteus中打开一个空白设计文档,完成如图6-1的原理图制作,保存为“内存块移动.DSN”
步骤2:在emu8086中编程,生成exe文件,存为memory.exe
CODE SEGMENT ASSUME CS:CODE START: MOV AX,0 MOV DS,AX
MOV SI,1000H
MOV CX,100 MOV AL,1
PU_IN: MOV [SI],AL ;先存入1000H开始的100个字节数据为1到100 INC AL INC SI LOOP PU_IN MOV CX,100 MOV SI,1000H MOV DI,1100H ; FADR: MOV AL,[SI] MOV [DI],AL INC SI INC DI DEC CX JNE FADR JMP $ CODE ENDS END START 步骤3:Proteus仿真
3、实验报告要求:
(1)说说程序在对那些存储器单元(物理地址表示)进行移动数据,以及整个程序的功能是什么?
答:程序在对[1000H]--[1063H]存储单元进行移动数据,整个程序的功能是对 [1000H]--[1063H]这100个存储单元从1开始赋值到100,然后把这100个存储单元的数据移动到[1100H]—[1163H]这100个存储单元。
(2)修改参考程序,完成将地址从2300H单元开始的1000个存储单元的数据(数据从100到1100之间从小到大顺序排列。请回答,这一千个存储单元最终存放了100到哪个数据之间的数据?)移动到2000H单元开始的存储区存放功能。
答:这一千个存储单元最终放了100-255之间的数据,之后又从0-255从小到大排序。因为是以字节定义的,一个字节最大只为255.
(3)把这些程序放在emu8086中去远行,会有什么效果?对比一下这两个软件。
可以看出,用protues观察内存情况比emu8086的范围大,而且方便。
【实验内容2】
1.请照着图5-1存储器奇偶存储体扩展图画好图。
在8086芯片中编程,其代码如下: ORG 0100H
MOV CX,0064H ;循环100次 MOV DX,0000H ;置初值 MOV BX,8001H ; MOV AX,0000H
MOV DS,AX ;DS置零 SIM:
MOV [BX],DL INC DL INC BX
LOOP SIM
INT 3H ;停止在INT 3H运行的截图如下:
回答如下问题:
(1)两片6264的片选信号(CE和CS)是如何产生的?他们的地址范围是多少?
答:CE和CS是6264的片选端,低电平有效,当8086地址总线输入地址值符合条件时,就会使译码器从Y0输入CE信号,其地址范围为:8000H~0BFFFH(1000000000000000——10111111111111111111B
(2)他们的数据线为何连接不同?
答:因为8086在访问外存是有一个特性,当AD0=0时,访问偶地址单元,数据从总线低八位传输;当AD0=1(BHE=0)时,访问奇地址单元,数据从总线的高八位传输。
(3)地址线为何不直接与CPU的AD0相连?