计算机101报告,天大计算机科学与技术学院—汇编语言—上机实验报告101.doc

天津大学计算机科学与技术学院实验报告

《汇编语言》实验报告(一)

年级:2011 班级: 学号: 姓名:

一、 实验题目

(X+Y)*8-X

2

Z=

编制一汇编源程序,求出下列公式中的Z值,并放在RESULT单元中。

2、 实验要求

定义两个单元X,Y和一个单元RESULT,利用数据的传送和运算指令将公式的结果计算出来,并将结果Z放在RESULT里.

3、 程序设计说明(用来说明程序的功能、结构。包括:程序名、功能、原理及算法说明、程序及数据结构、主要符号名的说明、程序框图等。)

程序的功能是对公式[(x+y)*8-x]/2进行运算,得出结果。首先对程序的数据段和堆栈段进行定义,数据段里定义3个数据,x,y和result。堆栈段里定义一定长度的容量,实现程序对现场的保护和恢复。定义一个代码段,以过程成形式编制的程序。过程名为proc1,首先对3个段进行寻址。在程序的开头给一个标号,给一个起始地址,在程序最后结束起始地址来实现对代码段的装入。程序的开始,先保留进入程序前的ds,并将0以16位形式压入堆栈。接着,装入数据段。将x的数据传送到ax中,利用add指令实现x+y,并利用移位的形式实现乘8的操作,用sub运算再扣除x,接着移位实现除2的操作,最后,用mov指令将ax的内容传送到result里。

4、 程序调试说明(包括:调试情况,如上机时遇到的问题及解决办法,观察到的寄存器、存储器的内容或状态及其分析.对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会,以及诸如调试日期、文件存放位置等需要记录的信息。)

起始堆栈指针sp=0040h,ds:13BE,ax为0。在实现对ds的保留时,sp=003C,内容为13BE和0000。在实现ds的装入时,ax=13CE,ds=13CE。接着ax=0006,000D,0068,0062,0031。执行result传送数据的语句时,ds:0005=31。符合预期的设想。调试成功。

在程序设计时,心中的想法应和设计的程序吻合,心中应对程序的步骤清晰无比,以便在程序出错时能及时找到错误,并给予纠正。然后要谨记程序的格式,对指令的使用要十分的清楚。尽量减少病句的产生。

4、 实验结果与结论(经调试正确的程序的运行结果)

实验对公式z=[(x+y)*8-x]/2进行运算,在定义数据段时,已经对x和y赋值,分别为6和7,经计算结果z=49,而实验结果result=0031h,与其符合。实验成功。

五、使用说明(包括:程序的使用方法,调用方式,操作步骤等;要求输入信息的类型及格式;出错信息的含义及程序的适用范围等。)

程序对公式z=[(x+y)*8-x]/2进行运算,只需在数据段定义时,修改x和y的值便可得到用户想要的结果。程序的子程序proc1可被指令call调用。

6、 实验中遇到的问题及解决方法

试验过程中对移位指令shl的使用错误,直接用了shl ax,3使程序出错,在修正后,mov cl,3

Shl ax,cl后,程序可执行。

7、 程序源代码

data segment

x dw 6

y dw 7

result dw ?

data ends

stack segment para stack

dw 20h dup(0)

stack ends

code segment

proc1 proc far

assume ds:data,cs:code,ss:stack

start:

push ds

xor ax,ax

push ax

mov ax,data

mov ds,ax

mov ax,x

add ax,y

mov cl,3

shl ax,cl

sub ax,x

shr ax,1

mov result,ax

ret

proc1 endp

code ends

end start

完成日期:___5月18日_____

共4页 第4页

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值