ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:638.33KB ,
资源ID:7670544      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7670544.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微型计算机实验一实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微型计算机实验一实验报告.docx

1、微型计算机实验一实验报告深 圳 大 学 实 验 报 告 课程名称: 微型计算机与接口技术原理 实验项目名称: 熟悉 DEBUG的使用、寻址方式实践 学院: 计算机与软件学院 专业: 计算机科学与技术 指导教师: 胡庆彬 报告人: 学号:2012150 班级: 1 实验时间: 2014年11月 实验报告提交时间: 2014年11月 教务部制实验目的:1、熟悉DEBUG的使用2、加深对寻址方式的理解3、熟悉MASM的使用,掌握编程技巧实验步骤:Part 1(一) 熟悉 DEBUG的使用(熟悉DEBUG的常用命令 A, U, R , T ,D , E , G )DEGUG下的实践:1 在DEBUG状

2、态下 用 “E” 命令在偏移地址为0200H 开始的18H个单元输入 0,1,2 .,17H。 (1)写一段程序,把这24个单元的内容复制到偏移地址为0230H 开始的单元中。(2)写一段程序,把偏移地址为5000H 开始的40H个单元写入 AAH .2. 写一段程序把 1,2, . . . ,100共100个数写入偏移地址为0200H 开始的100个单元中。用条件转移指令完成这100个数相加,并把结果放入偏移地址为0300H 起的单元中。 (选做)(二)寻址方式实践(1) 用E 命令(E 2000:0000 )把内存2000:0000开始的10个单元的内容改写为:10,11,12,13,14

3、. ,19; 把内存2000:0040开始的10个单元的内容改写为:00,11,22,33,44. ,99(2) 用命令检查执行(1)的情况(3)用 命令输入如下指令,逐条执行并观察结果并解析之 。 MOV AX, 2000 MOV DS, AXMOV BX,4MOV SI, 40 MOV AL, 2MOV AL, BXMOV AL,SIMOV AL, BX+4MOV AL, SI+3MOV AL, BX+SIMOV AX, BX+SI+4MOV BX+SI+20,AL ; AL 的内容送何处?MOV BP,4MOV BP+2, AX ; AX 的内容送何处?找找INC AX MOV BX+2

4、,AX ; AX 的内容送何处?找找PUSH AX ; AX的内容送何处?观察SP 的变化PUSH BX ;BX的内容送何处?观察SP 的变化POP CX ;CX=? 观察SP 的变化(4)说明第条指令的寻址方式,确定第1条指令源操作数的物理地址Part 2一 在DEBUG状态下 用 “E” 命令在3000: 0010H 开始的10H个单元输入 0,1,2 .,0FH。 (1)写一段程序,用串指令把这16个单元的内容复制到4000:0020H 开始的单元中。(2)写一段程序,用串指令把物理地址为3000:0400H 开始的40H个单元写入 AAH ;3000:0450开始的30H个单元写入 5

5、5H二 熟悉 Masm for windows的使用。三 编写1个具有一定功能的小程序,完成它们的汇编,连接,运行和在DEBUG下的调试。(分析运行结果)题目可自拟实验结果:1 在DEBUG状态下 用 “E” 命令在偏移地址为0200H 开始的24H个单元输入 0,1,2 .,17H,(1)写一段程序,把这24个单元的内容复制到偏移地址为0230H 开始的单元中。在ASM平台上代码如下: MOV AX,2000H MOV DS,AX MOV BX,200H MOV CX,24 MOV SI,230H FIND: MOV AL,BX MOV SI,AL INC BX INC SI LOOP FI

6、ND 实验结果分析:这个程序完成了从偏移地址从200开始的24个内存单元的数值复制,初始偏移地址为SI=200H,要复制到偏移地址BX=230中,每复制一次,BX,SI都要做+1操作,循环,当做完CX=24次复制时,程序停止。(2)写一段程序,把偏移地址为5000H 开始的40H个单元写入 AAH .在ASM平台上代码如下:MOV AX,2000HMOV DS,AX MOV CX,40MOV SI,5000HMOV AL,0AAHFIND: MOV SI,ALINC SILOOP FIND 实验结果分析:先把要赋值的AAH赋值给AL,然后设置循环次数CX=40,偏移地址为5000H,从5000

7、H开始给内存单元赋值AAH,循环结束后完成40次赋值。2. 写一段程序把 1,2, . . . ,100共100个数写入偏移地址为0200H 开始的100个单元中。用条件转移指令完成这100个数相加,并把结果放入偏移地址为0300H 起的单元中。 (选做)在ASM平台上代码如下: MOV AX,2000H MOV DS,AX MOV CX,100 MOV AX,0 ;SUM MOV BX,1 JUMP:ADD AX,BX INC BL DEC CX JNZ JUMP MOV SI,300H MOV SI,AX 实验结果分析:1+2+3+.+100=1050,用16进制表示即13BA,结果正确(

8、按照数据的存储规则低位在前高位在后)。在本题目中,先给和赋初值0,BX=1100,一共计算CX=100次,每次相加后BL即BX的值增加1,最终能算出正确结果。二)寻址方式实践(1) 用E 命令(E 2000:0000 )把内存2000:0000开始的10个单元的内容改写为:10,11,12,13,14. ,19; 把内存2000:0040开始的10个单元的内容改写为:00,11,22,33,44. ,99(2) 用命令检查执行(1)的情况(3)用 命令输入如下指令,逐条执行并观察结果并解析之 。 MOV AX, 2000分析:执行第一条后,AX=2000. MOV DS, AX分析:执行第二条

9、,DS=2000MOV BX,4分析:使BX=0004MOV SI, 40分析:对SI赋值 MOV AL, 2分析:把偏移地址为0002的内存单元的内容,即把12赋给AL,则AX=2012MOV AL, BX分析:把偏移地址为0004的内存单元的内容,即把14赋给AL,则AX=2014MOV AL,SI分析:把偏移地址为0040的内存单元的内容,即把14赋给AL,则AX=2000MOV AL, BX+4分析:把偏移地址为BX+4=0008的内存单元的内容,即把18赋给AL,则AX=2018MOV AL, SI+3分析:把偏移地址为SI+3=0043的内存单元的内容,即把33赋给AL,则AX=2

10、033MOV AL, BX+SI分析:把偏移地址为BX+SI=0044的内存单元的内容,即把44赋给AL,则AX=2044MOV AX, BX+SI+4分析:把偏移地址为BX+SI+4=0048的内存单元的内容,即把88赋给AX,则AX=9988(按照低位在前高位在后的存储规则)MOV BX+SI+20,AL ; AL 的内容送何处?分析:把偏移地址为AL=0088的内存单元的内容,即把88赋给BX+SI+20=0064所在的内存单元,值为0088MOV BP,4分析:把4赋值给BP,BP=0004MOV BP+2, AX ; AX 的内容送何处?找找分析:把AX=9988赋值给BP+2=00

11、06所在的内存单元,此时由SS=140D提供段地址INC AX 分析:把AX的值+1,AX=9989MOV BX+2,AX ; AX 的内容送何处?找找分析:把AX=9989赋值给BX+2=0006所在的内存单元,DS提供段地址PUSH AX ; AX的内容送何处?观察SP 的变化分析:压栈,栈顶指针SP=SP-2=-2即FFFE。AX的内容送到SS:SP=140D:FFFE中,99在前,89在后,如图。PUSH BX ;BX的内容送何处?观察SP 的变化分析:压栈,栈顶指针SP=SP-2=-4即FFFC。BX的内容送到SS:SP=140D:FFFC中,04在前,00在后,如图。POP CX

12、;CX=? 观察SP 的变化分析:入栈,先把栈SS:SP=140D:FFFC中的数据送到BX中,顶指针SP=SP+2=-2即FFFE。(4)说明第条指令的寻址方式,确定第1条指令源操作数的物理地址 MOV SI, 40 立即数寻址 MOV AL, 2 直接寻址 2000:0002MOV AL, BX 寄存器间接寻址2000::0004MOV AL,SI 寄存器间接寻址 2000:0040MOV AL, BX+4 寄存器相对寻址2000:0008MOV AL, SI+3 寄存器相对寻址2000::0043MOV AL, BX+SI 基址变址寻址 2000:0044MOV AX, BX+SI+4

13、基址变址相对寻址2000:0048MOV BX+SI+20,AL 基址变址相对寻址 MOV BP,4 立即数寻址 Part 2一 在DEBUG状态下 用 “E” 命令在3000: 0010H 开始的10H个单元输入 0,1,2 .,0FH。 (1)写一段程序,用串指令把这16个单元的内容复制到4000:0020H 开始的单元中。 MOV AX,3000H MOV DS,AX MOV AX,4000H MOV ES,AX MOV SI,10H MOV DI,20H MOV CX,16;此处输入代码段代码 CLD REP MOVSBHLT 结果分析:由于串指令指定源串地址为DS:SI(支持段重设)

14、,目标串地址为ES:DI(不支持段重设),因此程序开始先设定DS,SI,ES,DI的值,然后设定传送次数CX=16,接着有CLD设定DF=0即传送方向从低地址向高地址进行,再在无条件循环REP下使用字节传送指令MOVSB即可完成复制。(2)写一段程序,用串指令把物理地址为3000:0400H 开始的40H个单元写入 AAH ;3000:0450开始的30H个单元写入 55H MOV AX,3000H MOV ES,AX MOV DI,400H MOV CX,40;此处输入代码段代码 MOV AL,0AAH CLD REP STOSB MOV DI,450H MOV CX,30;此处输入代码段代

15、码 MOV AL,55H CLD REP STOSB HLT 结果分析:STOSB指令把AL中的字节存到由ES:DI指向的存储单元中,因此需要先设定ES,DI的值,然后设定存储次数CX和存储方向DF,在无条件循环REP下实现两次地址不同的地址存储。三 编写1个具有一定功能的小程序,完成它们的汇编,连接,运行和在DEBUG下的调试。(分析运行结果)题目可自拟定义12个数,把它们的和放到SUM中;找出它们中最大和最小的数,分别放到MAX和MIN单元中。DATAS SEGMENT ARRAY DW 2,1,4,8,5,3,7,6,9,12,10,11 SUM DW 0 MAX DW 0 MIN DW

16、 0 ;此处输入数据段代码 DATAS ENDSSTACKS SEGMENT STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV CX,12 LEA SI,SUM ;由于输出结果为ASCII码,此处直接记录地址方便调试 LEA SI,MIN ;记录地址 LEA SI,MAX ;记录地址 LEA SI,ARRAY;此处输入代码段代码 MOV AX,0 ADDING:ADD AX,SI ADD SI,2 LOOP ADDING MOV SUM,AX ;MOV AH,

17、09 ;MOV DX,OFFSET SUM; ;INT 21H MOV CX,12 ;求最大值 LEA SI,ARRAY MOV AX,SI DEC CX MAX1: ADD SI,2 DEC CX JCXZ MINN CMP SI,AX JL MAX1 MOV AX,SI JMP MAX1 MINN: ;求最小值 MOV MAX,AX MOV CX,12 LEA SI,ARRAY MOV AX,SI DEC CX MIN1: ADD SI,2 DEC CX JCXZ ENDING CMP SI,AX JG MIN1 MOV AX,SI JMP MIN1 ENDING: MOV MIN,AX

18、MOV AH,4CH INT 21HCODES ENDS END START经过记录,SUM,MAX,MIN的偏移地址分别为0018,001A,001C.以下用D查看相关结果:由上图可以知道,这12个数相加的和为4E(即10进制的78),最大值为C(10进制的12),最小值为1,结果正确。程序主要思路:先对12个数求和,不断地把SI指向的内存单元的数值累加到AX中,得到最终结果。第二步求最大值,用AX存储,通过没比较一次CX减少1,共比较11次,每次把大的数值存储在AX中,最后把AX中的数值赋给MAX。同理,第三部对12个数求最小值时,用AX存储,通过没比较一次CX减少1,共比较11次,每次把

19、小的数值存储在AX中,最后把AX中的数值赋给MIN。实验结论:通过这次实验,我能比较熟练地操作使用DEBUG了。常见的寻址方式有以下几种:立即寻址,直接寻址,寄存器寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,基址变址相对寻址,隐含寻址。通过本次实验,能比较熟练地在MASM平台上编写程序了。实验心得:做第一部分时,用到寄存器间接寻址,而用SI,DI,BX来指定有效地址时,段地址由DS提供,因此在代码中需要对DS进行设定。在ASM平台上写程序时,把AAH赋值给AL,注意要写成MOV AL,0AAH而不是MOV AL,AAH,否则会出错。做1100求和的时候,要注意不能直接ADD AX,BL,因为BL8位AX16位,因此写成ADD AX,BX,而这么写的前提是BH=0,即提前赋值使得BX=0.使用串指令时要注意操作数的大小使用不同的指令。在求数组的最大值最小值时,一开始没有把CMP比较命令和JL跳转命令连在一起写,导致结果错误,原因是夹在条命令之间的命令对SF或者ZF做修改导致程序没有按照人的意愿跳转。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1