东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx

上传人:b****3 文档编号:13823465 上传时间:2022-10-13 格式:DOCX 页数:24 大小:473.80KB
下载 相关 举报
东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx_第1页
第1页 / 共24页
东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx_第2页
第2页 / 共24页
东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx_第3页
第3页 / 共24页
东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx_第4页
第4页 / 共24页
东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx

《东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

东北大学计算机硬件基础分支程序设计实验报告Word文档格式.docx

设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将他们从大到小重新排序的程序。

三、算法描述流程图

四、实验步骤

1.输入源程序:

DATASEGMENT

BUFDB13,52,14

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBUF

MOVAL,[SI];

把3个数取到寄存器中

MOVBL,[SI+1]

MOVCL,[SI+2]

CMPAL,BL

JAENEXT1

XCHGAL,BL;

排序,将最大数送AL寄存器

NEXT1:

CMPAL,CL

JAENEXT2

XCHGAL,CL

NEXT2:

CMPBL,CL;

将最小数送CL寄存器

JAENEXT3

XCHGBL,CL

NEXT3:

MOV[SI],AL;

从大到小依次存回缓冲区

MOV[SI+1],BL

MOV[SI+2],CL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:

noname.exe_文件,结果无错误。

3.执行run程序,打开程序aux,选择memory,查看地址0710:

0000,经验证运行结果为340E0D,即521413,由大到小排列,满足题目要求且无错误。

五、实验结果

1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator:

noname.exe_文件,得到如下界面:

2.执行run程序,打开程序aux,选择memory,查看地址0710:

0000,得到如下界面:

运行结果为340E0D,即521413,由大到小排列,满足题目要求且无错误。

六、思考题

分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确的地使用条件转移指令。

本程序中,由于是无符号数的比较,所以也可以根据一个标志位来判定数的大小,你能说出那个是标志位吗,且程序中的JEA指令改用什么指令替换呢?

答:

可以根据CF标志位来判定数的大小。

CF=0时,DST>

SRC;

当CF=1时,DST<

RSC。

当CF=1时,用JC指令可以实现转移;

当CF=0时,用JNC指令可以实现转移。

七、扩展题

在BUF开始的单元里有3个单字节无符号数,编写程序找出它们中的最小值并存入MIN单元。

1.输入源程序如下:

DSEGSEGMENT

BUFDB99,72,88

MINDB0

DSEGENDS

CODESEGMENT

ASSUMECS:

CSEG,DS,DSEG

MOVAX,DSEG

MOVDS,AX

MOVSI,OFFSETBUF

MOVAL,[SI];

MOVBL,[SI+1]

MOVCL,[SI+2]

CMPAL,BL;

JAENEXT1

XCHGAL,BL

MOVMIN,BL;

排序,将最小数送MIN区

CMPBL,CL

JAENEXT2

XCHGBL,CL

MOVMIN,CL

MOVAH,4CH

INT21H

ENDSTART

0000,结果如下图。

经验证运行结果为63485848,即997288,MIN区值为48,即最小值72,无错误。

八、实验心得

通过此次试验我理解了汇编语言中编程的基本步骤,掌握了分支结构程序设计中准确知道操作结果影响的标志位状态和正确的使用无条件转移指令以及无符号数的比较方法。

这个实验,使我认识到直接通过CPU寄存器地址赋值可以大大提高效率,并且让我知道要继续练习熟读汇编语言代码的功能及用法。

实验二

(1)x、y异号

DATASEGMENT

XDB99

YDB-33

ZDB0

DATAENDS

ASSUMECS:

MOVDS,AX

CMPX,0;

x与0进行比较

JLL1;

x<

0转L1

CMPY,0

JLL2;

y<

0转L2

MOVZ,1;

x>

=0,y>

=0则1→Z,无条件转EXIT

JMPEXIT

L1:

CMPY,0;

y>

=0转L2

JGEL2

MOVZ,-1;

0,y<

0则-1→Z,无条件EXIT

JMPEXIT

L2:

MOVZ,0;

x,y异号则0→Z

EXIT:

MOVAH,4CH

INT21H

ENDSTART

0000,经验证当x、y异号时,Z值为0,结果满足题目要求且无错误。

(2)x、y同为正

XDB13

YDB14

ENDSTART

0000,经验证当x、y都大于0时,Z值为1,结果满足题目要求且无错误。

(3)x、y同为负

XDB-36

YDB-12

0000,经验证当x、y都小于0时,Z值为-1,结果符合题目要求且无错误。

经验证当x、y异号时,Z值为0,结果满足题目要求且无错误。

经验证当x、y都大于0时,Z值为1,结果满足题目要求且无错误。

x、y都小于0时,Z值为-1,结果符合题目要求且无错误。

本程序中判定符号用的是CMP指令,而用逻辑操作指令也可以。

比如,可以用AND指令,使其进行自身与操作,反映到SF标志位,还可以用TEST指令直接测试最高位,并将结果反映到ZF标志位,然后根据ZF标志位判断。

试用TEST指令编之。

1.输入源程序如下:

XDB66

YDB-100

ZDB0

ASSUMECS:

STAR

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

当前位置:首页 > 法律文书 > 判决书

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

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