东北大学计算机硬件基础分支程序设计实验报告.docx
- 文档编号:901500
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:24
- 大小:473.80KB
东北大学计算机硬件基础分支程序设计实验报告.docx
《东北大学计算机硬件基础分支程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《东北大学计算机硬件基础分支程序设计实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
东北大学计算机硬件基础分支程序设计实验报告
东北大学
计算机硬件技术基础实验报告
班级:
机械0908
姓名:
学号:
20092063
实验题目:
分支程序设计
日期:
2011年11月28日
实验一
一、实验目的
1)掌握分支程序的结构;
2)掌握分支程序的设计,调试方法;
二、实验内容
设有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 当CF=1时,用JC指令可以实现转移;当CF=0时,用JNC指令可以实现转移。 七、扩展题 在BUF开始的单元里有3个单字节无符号数,编写程序找出它们中的最小值并存入MIN单元。 1.输入源程序如下: DSEGSEGMENT BUFDB99,72,88 MINDB0 DSEGENDS CODESEGMENT ASSUMECS: CSEG,DS,DSEG START: MOVAX,DSEG MOVDS,AX MOVSI,OFFSETBUF MOVAL,[SI];把3个数取到寄存器中 MOVBL,[SI+1] MOVCL,[SI+2] CMPAL,BL;排序,将最大数送AL寄存器 JAENEXT1 XCHGAL,BL NEXT1: MOVMIN,BL;排序,将最小数送MIN区 CMPBL,CL JAENEXT2 XCHGBL,CL NEXT2: MOVMIN,CL MOVAH,4CH INT21H CODEENDS ENDSTART 2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator: noname.exe_文件,结果无错误。 3.执行run程序,打开程序aux,选择memory,查看地址0710: 0000,结果如下图。 经验证运行结果为63485848,即997288,MIN区值为48,即最小值72,无错误。 八、实验心得 通过此次试验我理解了汇编语言中编程的基本步骤,掌握了分支结构程序设计中准确知道操作结果影响的标志位状态和正确的使用无条件转移指令以及无符号数的比较方法。 这个实验,使我认识到直接通过CPU寄存器地址赋值可以大大提高效率,并且让我知道要继续练习熟读汇编语言代码的功能及用法。 实验二 一、实验目的 1)掌握分支程序的结构; 2)掌握分支程序的设计,调试方法; 二、实验内容 设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将他们从大到小重新排序的程序。 三、算法描述流程图 四、实验步骤 (1)x、y异号 1.输入源程序: DATASEGMENT XDB99 YDB-33 ZDB0 DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA START: MOVAX,DATA 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;x<0,y<0则-1→Z,无条件EXIT JMPEXIT L2: MOVZ,0;x,y异号则0→Z EXIT: MOVAH,4CH INT21H CODEENDS ENDSTART 2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator: noname.exe_文件,结果无错误。 3.执行run程序,打开程序aux,选择memory,查看地址0710: 0000,经验证当x、y异号时,Z值为0,结果满足题目要求且无错误。 (2)x、y同为正 1.输入源程序: DATASEGMENT XDB13 YDB14 ZDB0 DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA START: MOVAX,DATA 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;x<0,y<0则-1→Z,无条件EXIT JMPEXIT L2: MOVZ,0;x,y异号则0→Z EXIT: MOVAH,4CH INT21H CODEENDS ENDSTART 2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator: noname.exe_文件,结果无错误。 3.执行run程序,打开程序aux,选择memory,查看地址0710: 0000,经验证当x、y都大于0时,Z值为1,结果满足题目要求且无错误。 (3)x、y同为负 1.输入源程序: DATASEGMENT XDB-36 YDB-12 ZDB0 DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA START: MOVAX,DATA 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;x<0,y<0则-1→Z,无条件EXIT JMPEXIT L2: MOVZ,0;x,y异号则0→Z EXIT: MOVAH,4CH INT21H CODEENDS ENDSTART 2.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator: noname.exe_文件,结果无错误。 3.执行run程序,打开程序aux,选择memory,查看地址0710: 0000,经验证当x、y都小于0时,Z值为-1,结果符合题目要求且无错误。 五、实验结果 (1)x、y异号 1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator: noname.exe_文件,得到如下界面: 2.执行run程序,打开程序aux,选择memory,查看地址0710: 0000,得到如下界面: 经验证当x、y异号时,Z值为0,结果满足题目要求且无错误。 (2)x、y同为正 1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator: noname.exe_文件,得到如下界面: 2.执行run程序,打开程序aux,选择memory,查看地址0710: 0000,得到如下界面: 经验证当x、y都大于0时,Z值为1,结果满足题目要求且无错误。 (3)x、y同为负 1.执行emulate程序,对源程序进行调试,生成originalsourcecode和emulator: noname.exe_文件,得到如下界面: 2.执行run程序,打开程序aux,选择memory,查看地址0710: 0000,得到如下界面: x、y都小于0时,Z值为-1,结果符合题目要求且无错误。 六、思考题 本程序中判定符号用的是CMP指令,而用逻辑操作指令也可以。 比如,可以用AND指令,使其进行自身与操作,反映到SF标志位,还可以用TEST指令直接测试最高位,并将结果反映到ZF标志位,然后根据ZF标志位判断。 试用TEST指令编之。 答: 1.输入源程序如下: DATASEGMENT XDB66 YDB-100 ZDB0 DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA STAR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 计算机硬件 基础 分支 程序设计 实验 报告