资源描述
大连理工大学实验报告实验室(房间号): 420 实验台号码: 班级: 电通1402 姓名: 糜智华 指导教师签字: 成绩: 实验 一 汇编语言上机操作&动态调试程序DEBUG的使用&运算类程序设计一、实验目的和要求1. 熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序。2. 熟练掌握宏汇编程序MASM或TASM的使用。3. 熟练掌握连接程序LINK或TLINK的使用。4. 了解DEBUG或TD的特点和使用方法。5. 学习使用DEBUG程序的各种命令。6. 了解计算机取指令、执行指令的工作过程。7. 利用DEBUG学习8086/8088CPU指令系统。8. 掌握用DEBUG调试用户程序的方法。9. 掌握运算类指令对各状态标识位的影响及其测试方法。10. 掌握使用运算类指令编程及调试方法。二、实验算法数据段:定义变量buf为平方数0100h,定义变量result为开方数。堆栈段:不妨取100个单元代码段: start:取数据段段地址并且将bx置1,cx置0。circle:buf=buf-bx(即奇数bx从1开始)减完后如果buf大于等于零,则bx=bx+2,cx=cx+1,并且重复循环;如果buf小于零则调到over。over:将cx赋给result,并退出。3、 实验流程图初始化Data1AXData2BX0 CX(AX)(BX)(AX)(BX)? N Y(BX)+2(CX)+1 取CX的值结束四、程序清单datasegment;数据段 bufdw 0100h;假设变量为0100h result dw 0000hdataendsssgsegmentstack;堆栈段dw100dup(0)ssgendscodesegment;代码段 assume cs:code,ss:ssg,ds:datastart:movax,data;取数据段段地址movds,axmovbx,1;bx置1,cx置0movcx,0circle: subbuf,bx;buf与bx相减cmpbuf,0;减完后的buf与零作比较jlover;(有符号数)小于则跳转addbx,2;若大于等于则bx+2,cx+1inccxjmpcircle;重复循环over:movresult,cx;将cx赋给resultint 20h;退出codeendsendstart5、 实验结果与分析(是否达到设计要求、出现的主要问题及解决方法) 编译链接结果如图1.1图1.1TD调试运行窗口如图1.2图1.2结果:cx寄存器为0010h,并且存储器里可以看到dw结构的result是第3、4个单元里的内容,即result为0010h。平方数为0100h,经此程序计算得到的开方数0010h,与预期相符。六、实验体会和建议第一次做实验,熟悉了dos操作环境,学习了使用TD和DEBUG调试程序的使用。在编程时要仔细,要搞清楚定义的数据在内存中的结构,编程时也要注意不要用错指令,需要扎实的基础知识储备,这样才能保证实验的速度和准确率。比如:1.在此次实验开始我用的无符号数比较跳转指令,观察到运行结果不对后,单步调试,发现应该用有符号数比较跳转指令。2.数据段对变量进行赋值时,一开始赋了db结构,提示编译错误后改正成dw结构。原因是后面程序mov的源操作数与目的操作数的位数应该保持一致。
展开阅读全文