汇编实验2014.docVIP

  • 47
  • 0
  • 约1.02万字
  • 约 13页
  • 2017-04-11 发布于贵州
  • 举报
汇编实验2014汇编实验2014

汇编语言程序设计 实验报告 姓名:*** 学号:129074*** 老师:陆勤 实验一:汇编语言运行环境及方法、简单程序设计 要求: 1、绘制程序流程图 2、结合你的调试过程,整理其中用到的debug命令的使用方法和效果截图,并解释每一步骤的结论 3、调试中遇到的问题及解决方法 实验步骤: 1:程序流程图 比较两个字符串是否相同,若相同则显示‘MATCH’,若不同则显示‘ON MATCH’。 2: (1)程序实现 编译: 有一个错误在第9行,未申明的DESG,写错了。找到并改正,再次编译。 连接: 没有堆栈,此程序没有用到 运行: (2)DEBUG调试 g命令:执行程序 U命令:可以显示程序清单。实际功能是从指定地址开始,反汇编32个字节,如果地址被省略则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 D命令:按指定范围显示存储单元内容 E命令:修改存储单元内容 修改后查看,再次运行,结果不一样。 R命令:检查和修改寄存器的内容 T命令:跟踪命令,可以逐条跟踪程序的执行。 总结: -g命令来用运行程序, -u命令来显示程序, -d 命令来查看数据段的情况, -e或f命令修改需要改正的部分, -t命令来逐步执行程序,用 -r命令来查看寄存器和修改寄存器的值, -q命令用来退出debug程序。 在这些命令的后面加上地址,可以将命令执行到相应的地方 实验二:用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等(补充) 要求: 1、任务1的指令序列 2、整理本次试验中用到的debug命令的使用方法及效果截图 实验步骤: 1:程序: 命令提示符下进入debug 用R命令修改寄存器的值 用A 命令插入指令 用T命令单步执行 通过debug的T命令可以看到AX与BX值的交换,初始化AX=0040,BX=5000,让AX,BX的依次入栈存起来,再从栈中依次取出给AX,BX,完成交换,结果是AX=5000,BX=0040。 实验三:存储器块清零和内存块移动 要求: 1、使用串处理指令写出完成实验任务1、2的完整程序(注意:要求从高地址开始,用地址减一的方式操作;不要使用过程写法;任务完成后要能返回操作系统) 2、调试中遇到的问题及解决方法 实验步骤: 1:存储器块清零 程序清单 编译连接后,用debug调试查看: 单步执行,查看数据段,皆为初设值:55 执行几步后查看,有地方被置为0了。 查看代码,设断点。 执行后,全部清零了 2:内存块移动 程序清单 Debug调试查看: 单步执行几步后,DS与ES的情况。继续单步执行后,ES的值改变 实验四:将键盘输入的小写字母用大写字母显示出来(补充) 要求: 1、写出源程序清单并附上执行效果截图 2、调试中遇到的问题及解决方法 实验步骤: 1:程序 2:运行结果 附加:第五章习题3~5的源程序清单 (其中第3题的要求从“4个压缩BCD码”简化为“1个压缩BCD码”) 3:编写程序,将DATA_NUM起的1个压缩BCD码转换成16进制数,并存放在DATA_NUM下面相邻的字节中。 程序实现: Debug查看: 压缩BCD码89的16进制数为59,结果是正确的。 4:编写一程序,用查表法将一位十六进制数转换成与之对应的ASCLL码。 程序实现: 可以看看出,5的ascll码是35 5:试编写程序求解表达式S=(23000-(X*Y+Z))/Z,其中X=600,Y=25,Z=-2000。 程序实现: 根据优先级 逐一计算 S=(23000-(X*Y+Z))/Z=(FFFB)16=(-5)10 补充实验: 实验教程P31实验一内容1和内容2(循环程序实验) 内容1: 编写一个程序,显示AL寄存器中的两位十六进制数。 内容2: 编写一个程序,判断键盘上输入的字符;若是1—9字符,则显示之;若为字母字符,均显示‘c’;若是回车字符,则结束程序;若为其他字符则不显示,继续等待新的输入。 补充实验:统计不同成绩段学生的人数 data segment buf db 67,59,87,90,78,87,65,99,67,89 num db 0,0,0,0,0,0 ;svae grade

文档评论(0)

1亿VIP精品文档

相关文档