汇编实验报告Word格式文档下载.docx

上传人:b****6 文档编号:21860661 上传时间:2023-02-01 格式:DOCX 页数:16 大小:119.36KB
下载 相关 举报
汇编实验报告Word格式文档下载.docx_第1页
第1页 / 共16页
汇编实验报告Word格式文档下载.docx_第2页
第2页 / 共16页
汇编实验报告Word格式文档下载.docx_第3页
第3页 / 共16页
汇编实验报告Word格式文档下载.docx_第4页
第4页 / 共16页
汇编实验报告Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

汇编实验报告Word格式文档下载.docx

《汇编实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编实验报告Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

汇编实验报告Word格式文档下载.docx

(1)WindowXPProfessor

(2)MASM6.11开发软件

三、实验步骤

1、将Masm6.11安装程序拷贝到D盘根目录下,并执行d:

\Masm611目录下Setup.exe文件,按照安装提示将程序安装到C盘根目录。

2、将C:

\masm611\Bin目录下的所有文件拷贝到C:

\Masm611\binr目录下,将C:

\Masm611\help目录下的所有文件拷贝到c:

\Masm61\binr目录下。

3、执行C:

\Masm611\Binr目录下的pwb.exe文件,打开开发环境。

4、在PWB编辑窗口中输入实验1.1中的程序,并保存为test.asm文件。

5、执行Project菜单下NewProject子菜单创建一个新的工程文件,并命名为test.mak,将test.asm文件加入到该工程文件中。

6、执行Project下Build子菜单编译连接该工程文件,并运行该可执行程序,观察程序执行的结果。

7、执行Run菜单下Debug子菜单,进入调试环境。

8、在程序的如下位置设置断点,并按要求观察寄存器堆栈或者内存单元的值。

Datasegment

Msgldb"

pleaseinputthenumberofstudent:

$"

Numdb0

EnMsgdb0ah,0dh,'

$'

Msg2db"

pleaseinputthegradeofeachstudent:

Msg3db"

theaveragegradeofthesestudentis:

avgdb0

ascavgdb0,0,'

Dataends

Stacksegmentparastack

db20hdup(0)

Stackends

codesegment

AssumeCs:

code,Ss:

stack,ds:

Data

Start:

movax,data

movds,ax

leadx,Msgl;

此行设置断点,观察DS所指示的数据段的情况

movah,09h

int21h

CallNumproc;

此行设置断点,观察屏幕输出,并观察堆栈的变化

movnum,bl;

此行设置断点,观察bl的值,并观察堆栈的变化

leadx,EnMsg

movah,09h

int21h

leadx,Msg2

callAvgproc;

此行设置断点,观察屏幕输出信息

leadx,EnMsg;

此行设置断点,观察avg所对应的存储单元的值

leadx,Msg3

callbta;

movah,4ch;

此行设置断点,观察ascavg所对应的存储单元的值及屏

;

幕输出信息

Numprocproc

pushax

pushcx

pushdx

movbl,0

lop1:

movah,01h

int21h;

设置断点观察al寄存器的值

cmpal,0dh

jzlop2

cmpal,'

0'

jllop1

cmpal,'

9'

jalop1

subal,30h

movcl,al

moval,bl

movch,10

mulch

movbl,al;

addbl,cl;

设置断点观察bl寄存器的值

jmplop1

lop2:

popdx

popcx

popax

ret

Numprocendp

Avgprocproc

xordx,dx;

设置断点观察堆栈值的变化

movcl,num;

设置断点观察cl寄存器的值

lop3:

callNumproc

xorax,ax

addax,dx

Divnum

addavg,al;

设置断点观察avg存储单元的值

xordx,dx

movdl,ah

subcl,1

jnzlop3

popax;

popcx

ret;

Avgprocendp

btaproc

pushax;

pushbx

moval,avg

movbl,10

divbl

addah,30h;

设置断点观察ax寄存器的值

addal,30h

movascavg,al;

设置断点观察ascavg存储单元的值

movascavg+1,ah

leadx,EnMsg

leadx,ascavg;

设置断点观察dx寄存器的值

movah,09h

popbx

btaendp

codeends

endstart

9、按照程序的执行过程绘制出程序流程图。

开始

输入数据(调用Numproc、Avgproc)

求平均值

调用把bta并输出结果

结束

四、实验结果及其分析

1.实验结果

2.断点

(1)leadx,Msgl;

(2)CallNumproc(输入人数);

输入人数3。

由寄存器和内存可知BX为3,即为输入人数,内存中181B:

0125为num地址,其值为3.

movcl,num;

观察CX发现CL的值为3。

(3)CallNumproc(输入成绩);

此时屏幕提示输入学生成绩。

输入成绩:

3-1输入87:

图1:

将输入数字8存入BL中。

图2:

(AL)->

(BL)

图3:

(CL)+(BL)->

(BL)addbl,cl

图4:

输入7,(BL)->

(AL),(AL)*10->

(BL)。

图5:

(BL)+(CL)->

输入87后avg的值:

观察内存,地址为181B:

0178的avg值为1DH,其十进制数为29,即87/3=29。

3-2输入77:

输入7,已将AL值赋值给CL(CL)=7。

int21h;

AL值。

输入7之后(BL)->

(AL)

addbl,cl

图6:

AL值

输入77后avg值:

0178的avg值为36H,其十进制数为54,即29+77/3=54。

3-3输入92:

输入9,已将AL值赋值给CL(CL)=9。

输入2之后(BL)->

输入92后avg的值:

(4)调用bta前屏幕输出:

0178的avg值为55H,其十进制数为85,即54+94/3=85。

(5)

调用bta压栈操作清零AX。

(6)观察avg与AX的值:

地址为181B:

0178的avg值为55其十进制数为85;

(AL)为38H,(AH)为35H。

分别为字符‘8’,字符‘5’。

(7)

分别将AL,AH的值放入ascavg中,观察知首地址为181B:

0179的ascavg第一字节为(AL),第二字节为(AH),即ascavg[0]为‘8’,ascavg[1]为‘5’。

五、结论

通过本次实验我学习并掌握了如何使用MASM6.11开发软件来创建一个汇编语言程序,并对开发环境中一些环境境变量进行设置,建立工程,编译运行程序,设置环境,利用错误提示修改程序,设置和编辑断点,查看寄存器、存储单元以及变量的值等内容。

本次实验的经验及教训:

一定要注意源程序的保存路径,否则无法运行结果。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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