实验报告一.docx
- 文档编号:6380554
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:11
- 大小:866.54KB
实验报告一.docx
《实验报告一.docx》由会员分享,可在线阅读,更多相关《实验报告一.docx(11页珍藏版)》请在冰豆网上搜索。
实验报告一
《汇编语言程序设计》实验报告
(一)
年级:
____班级:
________学号:
______姓名:
______
一、实验题目
1.编制一汇编源程序,求出下列公式中的Z值,并放在RESULT单元中。
2.用查表的方法将1位十六进制数转换成相应的ASCII码(并在屏幕上显示)。
3.写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果存放在数据段D_SEG中的SUM中。
其中AUGEND、ADDEND和SUM均为双字长变量,AUGEND赋初值为99251,ADDEND赋初值为-15962
2、实验要求
1.分别用远过程和DOS中断4CH的两种方式编制完整的汇编语言源程序;
2.掌握汇编语言上机的完整过程:
编辑、汇编、连接、运行、调试;
3.使用DEBUG察看并修改寄存器和存储器的内容;
4.使用DEBUG连续运行、单步运行。
3、程序设计说明
1.程序hbsy1_1
功能:
根据公式
计算z的值,并将结果存储在result单元中。
算法:
1)在数据段中定义两个变量x和y,并将x赋初值为6,y赋初值为7
2)定义一个适宜大小的堆栈段
3)指令movdx,x实现dx=x;指令adddx,y实现dx=x+y;
指令shldx,cl实现dx=(x+y)*8(cl的值为3);指令subdx,x实现dx=(x+y)*8-x;
指令sardx,1实现dx=((x+y)*8)/2;指令movresult,dx将z的值存储到result单元中。
2.程序hbsy1_2
功能:
将一位十六进制数转换成相应的ASCII码,并在屏幕上显示出来。
算法:
1)建立一个数据表TABLE存储0到9,A到F所对应的ASCII码。
2)在数据段中定义一个字节变量HEX存储一位十六进制数。
3)将HEX的值传给AL,再用换码指令XLAT将AL的值换为数据表TABLE中对应的ASCII码。
4)调用相应指令将HEX对应的ASCII码显示出来。
3.程序hbsy1_3
功能:
将数据段D_SEG中的AUGEND和E_SEG中的ADDEND相加,并把结果存放在数据段D_SEG中的SUM中。
算法:
1)在数据段D_SEG中定义双字长变量AUGEND,并赋初值为99251
2)在附加段E_SEG中定义双字长变量ADDEND,并赋初值为-15962
3)将AUGEND的低16位传给AX,高16位传给DX。
4)将ADDEND的低16位与AX相加,高16位与DX相加。
5)用高低位的方法将AUGEND与ADDEND相加的结果传给SUM。
4、程序调试说明
1.程序hbsy1_1
用MASM编译程序hbsy1_1,再用LINK链接程序hbsy1_1:
用DEBUG中的R指令显示寄存器的内容:
用DEBUG中的D指令显示存储器的内容:
用DEBUG中的T指令对程序进行单步调试:
用DEBUG中的G指令对程序设置断点进行调试:
2.程序hbsy1_2
用MASM编译程序hbsy1_2,再用LINK链接程序hbsy1_2:
用DEBUG中的相应指令对程序进行调试:
3.程序hbsy1_3
用MASM编译程序hbsy1_3,再用LINK链接程序hbsy1_3:
用DEBUG中的相应指令对程序进行调试:
4、实验结果与结论
1.程序hbsy1_1
程序hbsy1_1运行的结果:
2.程序hbsy1_2
程序hbsy1_2运行后,屏幕显示结果为4:
3.程序hbsy1_3
程序hbsy1_3运行的结果:
5、使用说明
1.程序hbsy1_1
在DOS环境下,进入到程序hbsy1_1.exe所在的目录下,然后输入“hbsy1_1.exe”回车,就可以运行程序hbsy1_1.exe。
2.程序hbsy1_2
在DOS环境下,进入到程序hbsy1_2.exe所在的目录下,然后输入“hbsy1_2.exe”回车,运行程序hbsy1_2.exe,屏幕上显示字符“4”。
3.程序hbsy1_3
在DOS环境下,进入到程序hbsy1_3.exe所在的目录下,然后输入“hbsy1_3.exe”回车,就可以运行程序hbsy1_3.exe。
6、实验中遇到的问题及解决方法
1.
1)在编译程序hbsy1_3时15-20行出现错误“Illegalsizeforoperand”:
2)进入源程序,找到对应的行,发现在传值的时候没有注意源操作数与目的操作数的长度应保持一致:
3)修改相应错误后,程序编译通过:
7、程序源代码
1.程序hbsy1_1
datasegment
xdw6
ydw7
resultdw?
dataends
sta1segmentparastack
dw20hdup(0)
sta1ends
codesegment
proc1procfar
assumecs:
code,ds:
data,ss:
sta1
start:
pushds
xorax,ax
pushax
movax,data
movds,ax
movdx,x
adddx,y
movcl,3
shldx,cl
subdx,x
sardx,1
movresult,dx
ret
proc1endp
codeends
endstart
2.程序hbsy1_2
datasegment
tabledb30h,31h,32h,33h,34h,35h
db36h,37h,38h,39h
db41h,42h,43h,44h,45h,46h
hexdb4
asciidb?
dataends
sta1segmentparastack
dw20hdup(0)
sta1ends
codesegment
assumecs:
code,ds:
data,ss:
sta1
start:
movax,data
movds,ax
movbx,offsettable
moval,hex
xlattable
movascii,al
movdl,al
movah,2
int21h
movah,4ch
int21h
codeends
endstart
3.程序hbsy1_3
d_segsegment
augenddd99521
sumdd?
d_segends
e_segsegment
addenddd-15962
e_segends
c_segsegment
assumecs:
c_seg,ds:
d_seg,es:
e_seg
start:
movax,d_seg
movds,ax
movax,e_seg
moves,ax
movax,wordptraugend
movdx,wordptr[augend+2]
addax,wordptraddend
adddx,wordptr[addend+2]
movwordptrsum,ax
mov[wordptrsum+2],dx
movah,4ch
int21h
c_segends
endstart
完成日期:
___2012.03.23________
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告