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

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

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

年级 2011 班级 学号 姓名

一、实验题目

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

(X+Y)*8-X

Z=

2

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 页 第 1 页

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

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 后,程序可执行。

共 4 页 第 2 页

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值