欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    电子科大计算机学院汇编语言程序设计实验报告分精品版.docx

    • 资源ID:10132103       资源大小:4.09MB        全文页数:63页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    电子科大计算机学院汇编语言程序设计实验报告分精品版.docx

    1、电子科大计算机学院汇编语言程序设计实验报告分精品版电子科大计算机学院-汇编语言程序设计-实验报告-分精品版 作者: 日期: 电子科技大学 计算机科学与工程 学院标 准 实 验 报 告(实验)课程名称 汇编语言与微机接口技术综合实验 电子科技大学教务处制表电 子 科 技 大 学实 验 报 告 (一)学生姓名:郫县英格拉姆 学 号:2014123456789 指导教师:皮皮怪实验地点:主楼A2_412 实验时间:2017年4月25日星期二一、实验室名称: 主楼A2_412机房 二、实验项目名称:汇编语言编程训练三、实验学时:3学时四、实验原理:(包括知识点,电路图,流程图)知识点(一)课后自学使用

    2、DOSBox在win7 x64位下搭建汇编环境1. 软件安装a.安装3DOSBoxb.准备debug.exe,masm.exe,link.exe,edit.exe文件。2. 使用a. DOSBox安装完成后,打开,可发下它的提示符是:“Z:”,这是DOSBox里的虚拟盘。我们需要更改到我们自己的盘符,如果直接更改的话,会提示你错误。首先需要mount到自己的目录。b.比如我们准备将D:DEBUG作为我们自己的汇编测试目录,则执行“mount C D:DEBUG”命令,这样C盘符也就虚拟成了自己本地电脑的D:DEBUG目录。我们在DOSBox中切换到C盘符时,也就实际上切换到了D:DEBUG目录

    3、。c. 将debug.exe,masm.exe,link.exe,放置于D:DEBUG目录下,我们就能在DOSBox下直接使用它们了。3. 配置上面我们为使用DOSBox,要mount到我们本地目录,但是我们每一次打开DOSBox都要进行这两步,有点麻烦,可以通过下面的操作来保存配置。a. 开始-所有程序-DOSBox-0.74-Options-DOSBox 0.74 Options,在文本的最后位置找到“autoexec”:autoexec# Lines in this section will be run at startup.# You can put your MOUNT lines

    4、 here.b.然后将下面的2条命令写在此处:第一条命令的作用是mount目录,第二条命令的作用是mount之后切换到D盘符:mount C D:DEBUGC:知识点(二)课堂讲述相关知识介绍1.生成可执行程序的过程建立汇编源程序(*.asm)汇编源程序文件,生成目标文件(*.obj)、连接目标文件,生成可执行文件(*.exe)运行调试程序2.汇编 假设masm.exe在D盘根目录下,编辑了一个名为demo.asm的源文件,则通过命令D:masm demo.asm;扩展名可以忽略,默认为asm类型得到汇编结果,如下图所示:扩展名为*.lst的文件称为列表文件,该文件对于后续的调试十分有用。 关

    5、于列表文件( *.lst) 列表文件同时列出源程序和机器语言程序清单,并给出段表、段的大小及属性,以及用户定义的符号表、符号类型及属性,对于调试程序十分有用。3.连接 在生成了目标文件demo.obj以后,通过输入命令D:link demo.obj;LINK.EXE是连接程序,同样的,扩展名可以忽略,默认为obj类型得到连接结果,如下图所示:4.调试a.关于DEBUG.EXEb.DEBUG.EXE的用法在DOS的提示符下,如下键入:c.DEBUG.EXE的注意事项d.本实验课需要的DEBUG指令 运行命令G、追踪命令T、继续命令P、显示内存单元内容命令D、退出命令Q 修改内存单元内容命令E、检

    6、查和修改寄存器内容的命令R流程图 五、实验电路(本次实验无电路图)六、实验内容:(介绍自己所选的实验内容)实验内容一:学习“第4章 顺序、分支、循环程序例子.ppt”,按照要求完成下列题目并给出实验结果(至少选择两个):我选择1、21、利用学号查学生的数学成绩表在数据段中建立一个成绩表TABLE,表中的成绩按照学生学号从小到大的顺序存放。要查的学号存放在变量NUM中,查表的结果放在变量MATH中。(用XLAT指令进行查表)2、无符号数排序数据段的ARY数组中存放有10个无符号数,试找出其中最大者送入MAX单元。(用LOOP指令做循环)实验内容二:学习“第4 子程序设计例子(1).ppt”,用“

    7、堆栈传递参数”的方式编程并运行给出结果. 将两个给定的二进制数(8位和16位)转换为ASCII码字符串。用堆栈传递参数,要求:分步骤给出堆栈状态和运行结果。七、实验步骤:(编辑调试的过程)实验一:题目1.利用学号查学生的数学成绩表1、根据题目要求,建立汇编源程序,用Windows系统自带的记事本进行编辑,另存为projec1.asm,并保存至masm.exe所在目录中。2、汇编源程序文件,生成目标文件project1.obj;3、通过link命令连接目标文件,生成可执行文件project1.exe;4、运行调试程序,键入debug project1.asm,参考LST文件,通过G命令、D命令进

    8、行调试,分析结果。(分析过程见报告第九部分)。题目2. 无符号数排序1、 根据题目要求,建立汇编源程序,用Windows系统自带的记事本进行编辑,另存为projec2.asm,并保存至masm.exe所在目录中。2、 汇编源程序文件,生成目标文件project2.obj3、 通过link命令连接目标文件,生成可执行文件project2.exe4、 运行调试程序,参考LST文件,通过G命令、D命令进行调试,分析结果,(分析过程见报告第九部分)。实验二:题目:用“堆栈传递参数” 的方式编程,将两个给定的二进制数(8位和16位)转换为ASCII码字符串。1.根据题目要求,建立汇编源程序,用Windo

    9、ws系统自带的记事本进行编辑,另存为projec4.asm,并保存至masm.exe所在目录中。2.汇编源程序文件,生成目标文件project4.obj3.通过link命令连接目标文件,生成可执行文件project4.exe4.运行调试程序,通过G命令、D命令进行调试,分析结果(分析过程见报告第九部分)。八、实验结果:(源程序代码,必要的中文注释,以及运行结果,包括截图或者拍照)实验一 第一题源代码及其注释如下:TITLE TABLE LOOKUPDATA SEGMENT ;数据段TABLE DB 01, 02, 03, 04, 05, 06, 07, 82, 09, 10 DB 11, 12

    10、, 13, 14, 15, 16, 17, 18, 19, 20 ;为了便于调试,把82之外的数据进行特殊处理,使其数值等于所在的位置NUM DB 8 ;学号为8MATH DB ?DATA ENDSSTACK1 SEGMENT PARA STACK ;堆栈段 DW 20H DUP(0)STACK1 ENDSCOSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX ;装入DS MOV BX,OFFSET TABLE ;BX指向表首地质 XOR AH,AH ;AH清零 MOV AL,NUM ;NUM值赋给

    11、AL DEC AL ;因为实际学号从1开始 XLAT ;查表 MOV MATH,AL;存结果 MOV AH,4CH INT 21HCOSEG ENDS END START运行结果介绍及截图、分析:运行调试程序,通过G命令、D命令进行调试,分析结果。查看PROJECT1.LST文件,可以分析出调试的方法,分析过程见图标记: 根据上述分析输入指令g 0013、d0015 l1进行调试,结果见下图:结果分析:MATH中成绩为52h,对应十进制82,而在程序源代码中对成绩的定义情况如下,其中的学号为8对应的成绩确实为82:符合要求,实验成功。实验一:第二题源代码及其注释如下:DATA SEGMENT

    12、ARY DB 01,16,02,03,04,05,06,07,08,09 MAX DB ?DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1BEGIN: MOV AX,DATA MOV DS,AX ;装入DS MOV SI,OFFSET ARY ;SI指向ARY第一个元素 MOV CX,9 ;CX做计数器 MOV AL,SI ;取第一个元素到ALLOP: INC SI ;SI指向后一个元素 CMP AL,SI ;比较两个数 JAE BIG

    13、ER ;前元素=后元素,则跳到BIGER进行处理 MOV AL,SI ;取较大数到ALBIGER: LOOP LOP ;循环执行LOOP MOV MAX, AL ;存最大数 MOV AH,4CH INT 21HCODE ENDS END BEGIN运行结果介绍及截图、分析:运行调试程序,通过G命令、D命令进行调试,分析结果。查看PROJECT2.LST文件,可以分析出调试的方法,分析过程见图标记: 根据上述分析输入指令g 0019、d000a l1进行调试,结果见下图:MATH中成绩为10h,对应十进制数16,确实是我编写的十个数中的最大数:符合要求,实验成功。实验二:堆栈传递参数,转化ASC

    14、II码代码及注释如下:DATA SEGMENTBIN1 DB 35HBIN2 DW 0AB48HASCBUF DB 20H DUP(?)DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(65535) ;对应OFFFFH 便于查看内存单元时确定堆栈位置STACK1 ENDSCOSEG SEGMENTASSUME CS:COSEG,DS:DATA,SS:STACK1BEGIN: MOV AX,DATA MOV DS,AX XOR AX,AX ;清零AX MOV AH,BIN1 ;第一个数据送AH PUSH AX ;待转换数据压栈 MOV AX,8 PUSH

    15、 AX ;待转换位数压栈 LEA DI,ASCBUF PUSH DI ;存放ASCII码首址压栈 CALL BINASC ;调用转换子程序 MOV AX,BIN2 ;第二个数据送AX PUSH AX ;待转换数据压栈 MOV AX,10H PUSH AX ;待转换位数压栈 ADD DI,8 PUSH DI ;DI+8压栈 CALL BINASC ;调用转换子程序 MOV AH,4CH INT 21HBINASC PROC PUSH AX PUSH CX PUSH DX PUSH DI MOV BP,SP MOV DI,BP+10 ;从堆栈取入口参数 MOV CX,BP+12 MOV DX,BP

    16、+14LOP: ROL DX,1 ;LOP为将所给转化为ASCII的算法 MOV AL,DL AND AL,1 ADD AL,30H MOV DI,AL INC DI LOOP LOP POP DI POP DX POP CX POP AX RET 6 ;返回并从堆栈中弹出6个字节BINASC ENDPCOSEG ENDS END BEGIN分析:首先单步运行几条指令,通过d 00 查看内存单元状态,检测堆栈段等的设置是否成功:空间看起来有问题:上面显示00的部分是设置的ASCBUF应该有用32个字节,截图显示是45个;下面的STACK1应该有64个字节,截图显示是54个,但后面全部执行完毕后

    17、结果是正确的。在网络上查询过后得知应该是软件的原因。 继续执行至将第一个待转换数据0035H压栈,查看内存单元,截图如下:同样的,执行至待转换位数、存放ASCII码首址成功入栈,与上图相似,省去截图,直至调用转化子程序,执行完一系列入栈操作和取入口参数、数据位数、待转换数据操作:进入标号为LOP的程序段,循环执行求ASCII码的算法,将数据一位一位地转化为ASCII码,循环过程中可以看到CX依次减1,减小至0时不再执行LOP循环:继续执行至第一个数据转化结束,查看内存单元情况,与预期结果进行比较,第一个待转换数据35H=0011 0101B,其对应ASCII码确实与内存单元中显示相同,详见图片

    18、:第二个待转换数据分析过程与第一个数据相同,转化结束后同样与预期结果进行比较:第二个待转换数据AB48H=1010 1011 0100 1000B, 其对应ASCII码确实与内存单元中显示相同,详见图片:九、结果分析和改进意见(完成每次留的问答题,以及实验过程中遇到的问题)汇编语言编程作为低级语言,与高级语言相比,可读性不如高级语言,更易出错,调试更麻烦,但是逻辑性很强,更接近机器,分析起来很有意思,每一步都是很小的操作,最后能达到目的。在堆栈传递参数的实验中,内存中显示00的部分是设置的ASCBUF,应该有用32个字节,截图显示是45个;下面的STACK1应该有64个字节,截图显示是54个,

    19、但后面全部执行完毕后结果是正确的。在网络上查询过后发现有很多相似的情况,应该是软件的原因。后期可以研究一下产生这种现象的具体原因和解决方案。十、心得体会: 做实验很有趣,写报告很烦。在大三下学期,保研考研找实习最忙的时候,要写这么多报告,很难受。但是万幸王老师很漂亮,讲话又好听,我超喜欢她的。如果她直接教汇编理论课我一定好好听 报告评分: 指导教师签字:电 子 科 技 大 学实 验 报 告 (二)学生姓名:郫县英格拉姆 学 号:2014123456789 指导教师:皮皮怪实验地点:主楼A2_412 实验时间:2017年5月9日星期二一、实验室名称: 主楼A2_411机房 二、实验项目名称:82

    20、59A中断控制器实验三、实验学时:3学时四、实验原理:(包括知识点,流程图)(一)知识点:(老师上课提的问题写在报告第九部分)1.8259A的工作过程(1)中断源在中断请求输入端IR0-IR7上产生中断请求涉及问题:中断请求的触发方式有哪些?电平触发方式:用IR引脚上的有效高电平信号触发中断。常被用于需要重复执行当前中断服务程序的情况,直到IR信号变为无效。边沿触发方式:采用IR输入信号的上升沿触发中断,常被用于不希望产生重复响应及中断请求信号是一个短暂脉冲的情况。(2)中断请求被锁存在IRR中,并经IMR屏蔽,结果送优先权电路判优涉及问题:IRR/IMR的数据是自动写入还是通过软件编程设定?

    21、IRR的数据是根据中断请求信号自动写入的(有中断请求的对应位为1,允许多个位为1,如果被响应对应位清零);IMR的数据是通过软件编程设定的(通过对某位或某几位置1屏蔽该位,使其不能进入优先级判别器)(3)优先权电路检出优先权最高的中断请求位,设置ISR的对应位(置1)涉及问题:中断判优的依据是什么?ISR是自动写入还是通过软件编程设定?IRR的数据是根据中断请求信号自动写入的(有中断请求的对应位为1,允许多个位为1,如果被响应对应位清零);IMR的数据是通过软件编程设定的(通过对某位或某几位置1屏蔽该位,使其不能进入优先级判别器)(4)8259A控制逻辑接受中断请求,向CPU输出INT信号(5

    22、)CPU接受INT信号,进入两个INTA中断响应周期,第一个周期通知8259A做好响应准备,第二个周期8259A将响应的中断类型号输出到DB上涉及问题:CPU中断响应过程中的“配套操作”有哪些?8259A接到来自CPU的第一个脉冲时,设置ISR并把IRR中的相应位复位。同时,8259A准备向数据总线发送中断向量。在8259A发送中断向量的最后一个脉冲期间,如果是在自动结束中断方式下,在这个脉冲结束时复位ISR的相应位。在其他方式下,ISR相应位要由中断服务程序结束时发出的EOI命令来复位。(6)CPU读取该中断类型号,转移到相应的中断处理程序涉及问题:如何通过中断类型号找到中断处理程序?2.8

    23、259A的命令字(1)ICW1/OCW2/OCW3复用同一个地址(A0=0);剩下的命令字复用另一个地址(A0=1),在本系统中,复用地址分别是0FFE0H和0FFE1H,预置数类别顺序为先初始化命令字,再操作命令字,预置数设定顺序为下标顺序(见“第六章输入输出与中断-2-8259” P32)(2)0FFE0H用于ICW1,OCW2和OCW3,0FFE1H用于ICW2,ICW3,ICW4和OCW1。本次实验中,ICW3、OCW3不需要进行设定。(3)本实验只需要用一片8259A进行中断控制,中断源采用单脉冲信号,中断触发方式属于边沿触发,且8086/8088系统必须设定ICW4,因此ICW1=

    24、00010011B=13H(4)本系统中,设定使用中断类型8来服务IR7边沿触发产生的中断,所以ICW2=00001000B=08H(5)对于单片8259A,不需要设定ICW3,而8086/8088系统需要确定ICW4。因此跳过ICW3的设定直接设定ICW4。在该实验中,我们使用全嵌套方式(最常用的也是默认的工作方式,只开放比当前中断优先级高的中断,且中断优先权的级别固定,按照IR0-IR7逐级次之。)和普通EOI方式(一般的中断结束方式,在中断程序返回前,输出中断结束命令把ISR当前优先级最高的对应位清零)操作,因此ICW4=00001001B=09H(6)对于OCW,假设使用OCW1来屏蔽

    25、除IR7外其它所有中断,这样OCW1=01111111B=7FH;选用普通EOI,则OCW2=00100000=20H3.有关中断向量存储地址的形成说明(1)ICW2是设置中断类型码的初始化命令字。其中,D7D3是8086/8088系统中8259A的中断指针地址的高5位,D2D0的值恒为0。(2)本系统的中断序号和中断地址对应表如下:4.有关ICW4的设置说明ICW4的位定义如下:其中,D7-D5位总是为0在IBM PC/XT系统中,BUF位设定为1,M/S设定为0普通中断结束方式用于完全嵌套情况下,8259每得到一次EOI命令,将把ISR中已经置位的各位中优先级最高的位复位,以此类推。因此,

    26、在本例中,ICW4=00001001B=09H5.有关OCW2的设置说明OCW2用于控制中断结束,其格式如下:其中,R为优先权控制位,R=1为循环优先权,R=0为固定优先权SL位决定了OCW2中L2,L1,L0是否有效,SL=1则有效,否则无效EOI为中断结束命令位,在非自动中断结束命令下,EOI=1使得中断服务寄存器ISR中具有最高优先权的IS复位,EOI=0则该位无效。在本实验中,OCW2=0010000=20H6. 七段数码管显示相关知识数码管字形口地址:0FFDCH,字形代码如下表所示:上述不同的代码实际上就是使得每只数码管中八只发光二极管的不同“点亮”组合,从而形成所谓不同的“字形”

    27、。数码管字位口地址:0FFDDH,字位代码如下表所示:上述不同的代码实际上就是“选通”某一片数码管工作的片选信号,显然,对应选通信号高电平有效。字位1对应逻辑箱最左边那只数码管,字位6对应最右边那只数码管。7.七段数码管显示电路图(ppt)8.Dais微机接口实验箱操作说明(ppt)9.Windows平台操作方法(ppt)10.LED平台操作方法说明(ppt)(二)流程图:(用visio画的)五、实验电路:1、实验参考电路及接线说明(8259部分)(红色连线为补充连线)SP插孔和8259A的IR7插孔相连,同时将SP插孔和8259A的IR6插孔也连接起来,提供两个中断源连接138译码输入端A.

    28、B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与位于地址线A0引出孔所在位置下方的使能控制输出端G作对应连接。8259的CS端连138译码器的Y0孔。将8259的单元总线接口D0-D7,用8芯排线或8芯扁平线与数据总线单元D0-D7任一接口相连。2、电路图拍照:六、实验内容:(介绍自己所选的实验内容)编制程序,利用8259芯片的IRi作为中断源,产生多级中断,系统显示中断号,比如:IR7作为中断源则显示7。七、实验步骤:1.点击桌面上“Intel8088 微机实验系统”图标;2.选择通信串口和速率;3.检查有无错误对话框,是否正确连接仪器;4.进入dais集成开发环境;5.选

    29、择本次实验对应的实验指导;6.调出连线指导,按照实验原理电路图,在实验箱上进行连线;7.调出参考代码,进行修改,编写本次实验的源程序,源代码及注释按ppt要求,放在实验结果部分;8.将源程序编译、连接、装载入仪器,若出错则进行修改,直到装载成功;9.将LED平台复位,然后点击绿色按钮运行;八、实验结果:(源程序代码,必要的中文注释,以及运行结果,包括截图或者拍照)(一)源程序代码及中文注释:CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400HH8: JMP P8259ZXK EQU 0FFDCH ;数字管字形码端口地址ZWK EQU 0FF

    30、DDH ;数字管字位码端口地址LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;LED DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUF DB ?,?,?,?,?,? ;预留6个字节空间存放的是需要显示的字符,如123456PORT0 EQU 0FFE0H ;偶地址PORT1 EQU 0FFE1H ;奇地址P8259: CLI ;关中断 CALL WP ;初始化显示“P.” MOV AX,OFFSET INT8359 MOV BX,0038H ;6号中断向量表 MOV BX,AX MOV BX,003AH MOV AX,0000H MOV BX,AX MOV AX,OFFSET INT8259 MOV BX,003CH ;7号中断向量表 MOV BX,AX


    注意事项

    本文(电子科大计算机学院汇编语言程序设计实验报告分精品版.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开