文档介绍:汇编语言与接口课程实验报告
实验编号______________实验一________________
实验名称_汇编语言程序的上机过程及基本程序调试_
实验室名称________软件学院实验室106_________
班级________________软件93_______________
学号_______________09161059_______________
姓名________________赵县军________________
实验日期__2011__年__4__月__10__日
评分教师实验报告成绩__________
评分日期________年_______月________日
实验目的
熟悉汇编语言上机环境Masm以及上机过程,编写并调试基本程序,涵盖了算数指令操作,移位指令操作和串指令操作。并且通过基本程序的编写调试,熟悉DEBUG环境。
实验环境
编程环境:Masm for windows 集成实验环境 2011
实验内容
预习:
了解数据传送指令MOV的原理,立即寻址,寄存器寻址方式以及寄存器间接寻址方式等;
学习加法指令ADD、ADC,减法指令SUB、SBB,乘法指令MUL、IMU和减法指令DIV、IDIV,明确保存乘除指令结果的寄存器;
了解取地址的指令LEA以及串处理操作等;
了解段定义等伪操作、转移指令及循环指令LOOP等;
实验题目:
1. 将1-100这100个数据连续存放到数据段中,并对其进行求和,输出结果
2. 计算:((X+Z)*Y-4000)/Z*X+Z,其中X、Y、Z均为16位带符号数,要求上式计算结果存放在AX、DX寄存器中
3. 将长度为128的字符串“By freedom,Americans mean the desire and the right of all individuals to control their own destiny without outside interference.”从数据段移植到附加段
实验步骤与调试方法:
实验一主要步骤:采用LOOP循环指令和寄存器相对寻址方式对用伪操作开辟的100个字空间分别赋予1-100,并进行累加;,将结果从AX移到BX中,四位一组进行输出
实验二主要步骤:先定义表达式X、Y、Z,然后根据运算顺序分别进行(X+Z)*Y,(X+Z)*Y-4000,((X+Z)*Y-4000)/Z,((X+Z)*Y-4000)/Z*X,((X+Z)*Y-4000)/Z*X+Z。
实验三主要步骤: 伪定义数据段和附加段,数据段赋值,但附加段不赋值,然后将其地址分别存到SI、DI中,设置循环次数和方向标志,采用串处理命令REP MOVSB进行移植。
程序的调试:在DEBUG环境下以-U-T-G命令观察各寄存器,-D观察数据段
源程序清单、测试数据、运行结果
实验一
源程序清单
DATAS SEGMENT
NUMBER DW 100 DUP(?) ;开辟100个字的空间存放1-100
DATAS ENDS
;存放数据并累加
;循环初始化
MOV AX,0 ;存放累加结果
MOV BX,0 ;存放数组元素相对位置
MOV CX,1