汇编实验三 循环程序访问内存数据 |
您所在的位置:网站首页 › 汇编实验6 › 汇编实验三 循环程序访问内存数据 |
一、实验目的
学会用loop指令编制循环程序解决简单问题学会用bx和loop指令配合访问连贯的内存空间进一步强化先分析、再实施的思维
二、实验内容过程记录
程序1:编程序求出Tomy同学的总分,最后结果存放在Total处。
提示:各科成绩均采用db型,而Total为dw型的 nam Tomy John Mary Jone c 78 82 75 92 asm 66 79 95 87 math 78 93 74 100 chinese 90 78 56 63 Total 138H 提示:数据段定义如下 data segment nam db 'Tomy', 'John', 'Mary', 'Jone' c db 78, 82, 75, 92 asm db 66, 79, 95, 87 math db 78, 93, 74, 100 chinese db 90, 78, 56, 63 total dw 0,0,0,0 data ends 问题分析(附流程图) 程序: 运行结果: 可以看到,在076a:0020的内存地址中 存放了total字段的值为138H。验证结果正确 如果要实现更复杂的功能呢?比如将所有学生的各科成绩都存在total里面? 想到用栈结构或许更加简便操作 F(0)=0 F(1)=1 F(n)=F(n-1)+F(n-2) ,n>1 提示:数据段定义如下 data1 segment dw 10 ;n dw 0, 1 ;f0和f1 dw 9 dup (0) ;依次存放f2~fn data1 ends 问题分析(附流程图) 程序: 运行结果: 可以看到,在数据段之后 f2~fn 的值 X和Y均在数据区中,请自行预置初值,T也存放在数据区,紧随在X和Y之后 问题分析(附流程图) 程序: 运行结果:运行结果应该为90H,经验证结果正确。 在本次实验中,我渐渐养成到自己独立思考问题的习惯,而不是上来就参考网上别人的代码,这样就把自己的思维进行局限性,我发现自己可以想到很多种解决方法,运算可能顺序不同也会造成程序不同。比如第三个程序我首先想到直接取数据循环运算,后来写好又想到是不是可以用栈的方式?也有了思路。在第一个问题开始,我写好之后发现本该存放total的数据为138H,但debug显示4D38,不知什么问题感觉自己思路很对呀。后来实验课询问老师,老师给了我一个启发就是,在直接结果不对的情况下,可以进行单步t指令执行,观察每步指令是否实现的自己想要的结果。从而判断细节地方的错误。因此这个问题就出现在字节与字相加的运算问题上,经老师指导,明白了问题得到了解决,也对此错误有了更加深刻的认识,相信在以后不会再犯同样的毛病。后来在写第二程序时结果也不太对,同样我用了单步执行找到了错误。我从网上查找了贺老师所说editplus如何实现语法高亮的问题。找了一些文件并学会了使用,让代码看起来更漂亮整洁,也可以清晰检查出一些代码拼写的错误。让我想起来一句古话:”工欲善其事必先利其器”。 感受:完成本次任务后感觉本次实验不像之前那样,而是操作性更高,这就要求我们学会更多的知识点去应用,去实践,去思考,考虑问题更加全面,对细节把控要到位。还有刚开始自己写的代码有时可能比较繁琐,但可以写好之后通过与别人的比对,找到别人的思路以及代码表示有何优缺点?这样我觉得会更加有收获。一个很深的启发就是,当遇到结果错误时,可以通过单步执行去查看哪一环节出现了问题,尤其是代码量稍微较少的情况下更加有效。 同时也感受到了汇编语言的一些魅力,让我对计算机底层工作原理又进一步认知 思考:本次实验发现了自己学习过程中存在的一些知识点漏洞,比如段前缀,以及变址寄存器等等。但加强实践操作的确会让自己知识更加巩固。对系统层面认识更加完善。再进一步学习中,要养成课前提前预习,并善于总结以此达到高效的记忆,还要多思考多提出问题去解决。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |