《汇编语言程序设计》实验报告一.docx

上传人:b****6 文档编号:5672562 上传时间:2022-12-31 格式:DOCX 页数:11 大小:867.16KB
下载 相关 举报
《汇编语言程序设计》实验报告一.docx_第1页
第1页 / 共11页
《汇编语言程序设计》实验报告一.docx_第2页
第2页 / 共11页
《汇编语言程序设计》实验报告一.docx_第3页
第3页 / 共11页
《汇编语言程序设计》实验报告一.docx_第4页
第4页 / 共11页
《汇编语言程序设计》实验报告一.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

《汇编语言程序设计》实验报告一.docx

《《汇编语言程序设计》实验报告一.docx》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》实验报告一.docx(11页珍藏版)》请在冰豆网上搜索。

《汇编语言程序设计》实验报告一.docx

《汇编语言程序设计》实验报告一

《汇编语言程序设计》实验报告

(一)

年级:

___班级:

______学号:

______姓名:

______

一、实验题目

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________

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1