微机-实验6要点.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六存储器扩展实验实验要求利用PROTEUS平台,进行存储器扩展。要求按照图6-1画图,并编写程序,实现存储器的写操作和读操作。要求从头到未组织一遍,包括建立asm文件,建立DSN文件,生成EXE文件(参阅本册实验指导P15~20页内容)。二、实验目的1、熟练掌握Proteus软件的使用。2、理解存储器扩展原理及编程技巧。3、加深对存储器读写的理解。三、实验内容【实验内容1】在Proteus环境中完成程序仿真:程序要求把内存中一数据区(称为源数据块)传送到内存另一数据区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况,如下图所示。分析上面三种情况的存贮:对于两个数据块分离的情况:如图(a):数据的传送从据块的首址开始,或者从数据块的末址开始均可。如图(b):若是数据的传送从据块的首址开始,则将会出现数据块的重叠覆盖,即在移动完成后,目的数据块的首址开始存放的几个连续数据和末址之前的几个数据重复,从而造成源数据块末址的一些数据丢失,因此,数据的传送从数据块的末址开始;如图(c):数据的传送从据块的首址开始,分析与图b的相反,若是数据的传送从据块的首址开始,其丢失的数据将是源数据块首址的一些数据。可以得出如下结论:当源数据块首址大于目的块首址时,从数据块首地址开始传送数据。当源数据块首址小于目的块首址时,从数据块末址开始传送数据。(1)仿真8086存储块数据移动原理图6-1 Proteus中仿真8086存储块数据移动原理图(2)程序流程图程序:CODE SEGMENTASSUMECS:CODESTART: MOV AX,0;将ds段赋值为0 ,则将从ds段的第0个地址开始MOV DS,AXMOV SI,1000H;将指针指向物理地址为1000h处;MOV CX,100;由于要存入100个字节,则在cx中赋值100,将会在下面的语句中用到MOV AL,1;从一开始赋值;----------------------给从物理地址为1000h开始的地址赋值----------------------PU_IN: MOV [SI],AL ;先存入1000H开始的100个字节数据为1到100INC ALINC SILOOP PU_INMOV CX,100;由于后面部分会重新利用这些数据及地址,因此需要重新定义MOV SI,1000HMOV DI,1100H ;;------------------------开始移动数据----------------------------------------FADR: MOV AL,[SI]MOV [DI],ALINC SIINC DIDEC CXJNE FADRJMP $;-------------------------结束-------------------------------------------------------CODE ENDSEND START3、实验报告要求: (1)说说程序在对那些存储器单元(物理地址表示)进行移动数据,以及整个程序的功能是什么?理论分析:程序在对物理地址为(01000h-01063h)的数据移动到物理地址为(01000h-01063h),一共100个数据。顾名思义,程序的功能就是对数据块进行移动。仿真结果如下图所示:(证实了理论分析的结果)(2)修改参考程序,完成将地址从2300H单元开始的1000个存储单元的数据(数据从100到1100之间从小到大顺序排列。请回答,这一千个存储单元最终存放了100到哪个数据之间的数据?)移动到2000H单元开始的存储区存放功能。答:由于源地址从2300h开始,而目的地址从2000h开始,根据实验前的分析,选择从数据块首地址开始传送数据。理论分析(这一千个存储单元最终存放了100到哪个数据之间的数据?):由于在代码中,我们利用al赋值,其数据范围在0-ffh之前,故这一千个存储单元最终存放了100到225再0到100这些数据之间的数据。修改后程序如下:CODE SEGMENT ASSUMECS:CODESTART: MOV AX,0 ;将ds段赋值为0 ,则将从ds段的第0个地址开始 MOV DS,AXMOV SI,2300H ;将指针指向物理地址为2300h处;MOV CX,1000 ;由于要存入1000个字节,则在cx中赋值1000,将会在下面的语句中用到MOV AL,100 ;从100开始赋值;----------------------给从物理地址为2300h开始的地址赋值----------------------PU_IN: MOV [SI],AL ;先存入2300H开始的1000个字节数据为100→225→0→100(

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档