微机-实验6

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验六存储器扩展实验一、实验要求利用PROTEUS平台,进行存储器扩展。要求按照图6-1画图,并编写程序,实现存储器的写操作和读操作。要求从头到未组织一遍,包括建立asm文件,建立DSN文件,生成EXE文件(参阅本册实验指导P15~20页内容)。二、实验目的1、熟练掌握Proteus软件的使用。2、理解存储器扩展原理及编程技巧。3、加深对存储器读写的理解。三、实验内容【实验内容1】在Proteus环境中完成程序仿真:程序要求把内存中一数据区(称为源数据块)传送到内存另一数据区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况,如下图所示。分析上面三种情况的存贮:对于两个数据块分离的情况:如图(a):数据的传送从据块的首址开始,或者从数据块的末址开始均可。如图(b):若是数据的传送从据块的首址开始,则将会出现数据块的重叠覆盖,即在移动完成后,目的数据块的首址开始存放的几个连续数据和末址之前的几个数据重复,从而造成源数据块末址的一些数据丢失,因此,数据的传送从数据块的末址开始;如图(c):数据的传送从据块的首址开始,分析与图b的相反,若是数据的传送从据块的首址开始,其丢失的数据将是源数据块首址的一些数据。可以得出如下结论:当源数据块首址大于目的块首址时,从数据块首地址开始传送数据。当源数据块首址小于目的块首址时,从数据块末址开始传送数据。(1)仿真8086存储块数据移动原理图6-1Proteus中仿真8086存储块数据移动原理图(2)程序流程图是开始设置块的长度设置块目的地从源地址取数保存到目的地目的、源地址+1是否移动完成结束否程序:CODESEGMENTASSUMECS:CODESTART:MOVAX,0;将ds段赋值为0,则将从ds段的第0个地址开始MOVDS,AXMOVSI,1000H;将指针指向物理地址为1000h处;MOVCX,100;由于要存入100个字节,则在cx中赋值100,将会在下面的语句中用到MOVAL,1;从一开始赋值;----------------------给从物理地址为1000h开始的地址赋值----------------------PU_IN:MOV[SI],AL;先存入1000H开始的100个字节数据为1到100INCALINCSILOOPPU_INMOVCX,100;由于后面部分会重新利用这些数据及地址,因此需要重新定义MOVSI,1000HMOVDI,1100H;;------------------------开始移动数据----------------------------------------FADR:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNEFADRJMP$;-------------------------结束-------------------------------------------------------CODEENDSENDSTART3、实验报告要求:(1)说说程序在对那些存储器单元(物理地址表示)进行移动数据,以及整个程序的功能是什么?理论分析:程序在对物理地址为(01000h-01063h)的数据移动到物理地址为(01000h-01063h),一共100个数据。顾名思义,程序的功能就是对数据块进行移动。仿真结果如下图所示:(证实了理论分析的结果)(2)修改参考程序,完成将地址从2300H单元开始的1000个存储单元的数据(数据从100到1100之间从小到大顺序排列。请回答,这一千个存储单元最终存放了100到哪个数据之间的数据?)移动到2000H单元开始的存储区存放功能。答:由于源地址从2300h开始,而目的地址从2000h开始,根据实验前的分析,选择从数据块首地址开始传送数据。理论分析(这一千个存储单元最终存放了100到哪个数据之间的数据?):由于在代码中,我们利用al赋值,其数据范围在0-ffh之前,故这一千个存储单元最终存放了100到225再0到100这些数据之间的数据。修改后程序如下:CODESEGMENTASSUMECS:CODESTART:MOVAX,0;将ds段赋值为0,则将从ds段的第0个地址开始MOVDS,AXMOVSI,2300H;将指针指向物理地址为2300h处;MOVCX,1000;由于要存入1000个字节,则在cx中赋值1000,将会在下面的语句中用到MOVAL,100;从100开始赋值;----------------------给从物理地址为2300h开始的地址赋值----------------------PU_IN:MOV[SI],AL;先存入2300H开始的1000个字节数据为100→225→0→100(由于al的数据范围,当超出此范围时,有进位,但进位只在al中显示剩余部分,也就有0→100的数据)INCALINCSILOOPPU_INMOVCX,1000;由于后面部分会重新利用这些数据及地址,因此需要重新定义MOVSI,2300HMOVDI,2000H;;------------------------开始移动数据----------------------------------------FADR:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNEFADRJMP$;-------------------------结束-------------------------------------------------------CODEENDSENDSTART仿真结果:红色部分为移动后的结果(2000h→23e8h)(3)把这些程序放在emu8086中去远行,会有什么效果?对比一下这两个软件。emu8086中运行结果如图所示:对比两个软件运行的结果可知,emu8086可以显示的地址范围较小,为0h→7fh,而proteus地址范围大,可以一次性观察。【实验内容2】扩展8086存储系统,要求用两片6264(8KB)扩展连续的16KB的存储单元,地址从8000H开始。(1)存储器奇偶存储体扩展图:存储器奇偶存储体扩展图要求2:编程实现使扩展的存储芯片U1、U6内容显示如图6-3、6-4所示。要求通过字操作和字节操作两种方法实现要求。参考程序(com结构,按字节实现)ORG0100H;该指令把位置计数器的值设置成表达式的值.MOVCX,0065H;循环101次MOVDX,0000H;置初值MOVBX,7fffH;MOVAX,0000H;MOVDS,AX;DS置零SIM:MOV[BX],DLINCDLINCBXLOOPSIMINT3H;停止在INT3H仿真结果如下:程序(com结构,按字实现)ORG0100HMOVCX,01FFH;循环100次MOVDX,0000H;置初值MOVBX,8000H;起始地址为偶数,因此作为按字访问时,是对准状态:低8位在偶地址体重,高8位在奇地址体中MOVAX,0000HMOVDS,AX;DS置零SIM:MOV[BX],DXINCDXINCBXINCBXLOOPSIMINT3H;停止在INT3H仿真结果如下:其中低8位在偶地址体重,高8位在奇地址体中。回答如下问题:(1)两片6264的片选信号(CE和CS)是如何产生的?他们的地址范围是多少?答:①CE的产生:在此题目中,ce的产生是由74ls138译码器中的y0输出而来,且在低电平有效。而y0的低电平输出决定于AD14,。因此当AD14为低电平的时候,经过译码器之后将会使得ce有效;②CS的产生:cs在高电平的时候有效,即选片有效。它的高低电平取决于BHE以及AD0。当BHE̅̅̅̅̅̅为低电平的时候,奇存储体的CS为高电平,即选片为奇地址存储体;当ad0为低电平的时候,选片为偶地址存储体。一片的6264大小为8k=2^13=2000H,则两片的地址大小为4000h,又由于从7fffh开始,故地址范围为7fffh-bfffh。(2)他们的数据线为何连接不同?答:为了使得物理性质一模一样的6264分别作为奇地址存储体和偶地址存储体,所以偶地址存储体数据将在D7-D0上传输;奇地址存储体数据在D8-D15传输。(3)地址线为何不直接与CPU的AD0相连?AD0作为体信号连接偶地址存储体。(4)图6-2中6264的外部地址从8000H开始,编程时应该怎么写?此时仿真时U4O7引脚为什么出现高电平?答:试验中已经将参考代码改了。在74ls138译码器中,只有在E1为高电平的时候才能有有效输出。(5)如果6264的外部地址从C000H开始,图中应作哪些修改?答:由于C000H=1100000000000000B,则应该使AD14=1,根据74ls138的真值表可得此时y7输出有效,故应该改成出下图即可:要求3:请写出读存储器6264中数据的程序。程序如下:CODESEGMENTASSUMECS:CODESTART:ORG0100H;该指令把位置计数器的值设置成表达式的值.MOVCX,0065H;循环101次MOVDX,0000H;置初值MOVBX,7fffH;MOVAX,0000HMOVDS,AX;DS置零SIM:MOV[BX],DLINCDLINCBXLOOPSIMMOVCX,101MOVBX,7fffHMOVDI,1100H;FADR:MOVAL,[BX]MOV[DI],ALINCBXINCDIDECCXJNEFADRJMP$CODEENDSENDSTART

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功