东北大学计算机硬件基础分支程序设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学
计算机硬件技术基础实验报告
班级:机械0908 姓名:学号:20092063
实验题目:分支程序设计日期:2011 年11 月28 日
实验一
一、实验目的
1) 掌握分支程序的结构;
2) 掌握分支程序的设计,调试方法;
二、实验内容
设有 3 个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将他们
从大到小重新排序的程序。
三、算法描述流程图
四、实验步骤
1. 输入源程序:
DATA SEGMENT
BUF DB 13,52 ,14
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV AL,[SI] ;把3 个数取到寄存器中
MOV BL,[SI+1]
MOV CL,[SI+2]
CMP AL,BL
JAE NEXT1
XCHG NEXT1: CMP AL,BL
AL,CL
;排序,将最大数送AL 寄存器
JAE NEXT2
XCHG AL,CL
NEXT2: CMP BL,CL ;将最小数送CL 寄存器
JAE NEXT3
XCHG BL,CL
NEXT3: MOV [SI],AL ;从大到小依次存回缓冲区
MOV [SI+1],BL
MOV [SI+2],CL
MOV AH,4CH
INT 21H
CODE ENDS
END START
2. 执行emulate 程序,对源程序进行调试,生成original source code 和emulator:noname.exe_文件,结果无错误。
3. 执行run 程序,打开程序aux,选择memory,查看地址0710:0000,经验证运行结果为34 0E 0D,即52 14 13,由大到小排列,满足题目要求且无错误。
五、实验结果
1. 执行emulate 程序,对源程序进行调试,生成original source code 和emulator:noname.exe_文件,得到如下界面:
2.执行run 程序,打开程序aux,选择memory,查看地址0710:0000,得到如下界面:
运行结果为34 0E 0D,即52 14 13,由大到小排列,满足题目要求且无错误。六、思考题
分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正
确的地使用条件转移指令。本程序中,由于是无符号数的比较,所以也可以根据一个标志位来判定数的大小,你能说出那个是标志位吗,且程序中的JEA指令改用什么指令替换呢?
答:可以根据CF标志位来判定数的大小。CF=0时,DST>SRC当; CF=1时,DST 七、扩展题 在BUF 开始的单元里有 3 个单字节无符号数,编写程序找出它们中的最小 值并存入MIN 单元。 1.输入源程序如下: DSEG SEGMENT BUF DB 99,72,88 MIN DB 0 DSEG ENDS CODE SEGMENT 经验证运行结果为 63 48 58 48 ,即 99 72 88 ,MIN 区值为 48,即最小值 72, 无错误。 八、实验心得 通过此次试验我理解了汇编语言中编程的基本步骤,掌握了分支结构程序设计中准确知道操作结果影响的标志位状态和正确的使用无条件转移指令以及 无符号数的比较方法。这个实验,使我认识到直接通过 CPU 寄存器地址赋值可以 大大提高效率,并且让我知道要继续练习熟读汇编语言代码的功能及用法。 START: ASSUME MOV MOV MOV MOV MOV MOV CMP CS:CSEG,DS,DSEG AX,DSEG DS,AX SI,OFFSET BUF AL,[SI] BL,[SI+1] CL,[SI+2] AL,BL ;把 3 个数取到寄存器中 ;排序,将最大数送 AL 寄 存器 NEXT1: 区 JAE XCHG MOV NEXT1 AL,BL MIN,BL ; 排序,将最小数送 MIN NEXT2: CMP JAE XCHG MOV MOV INT ENDS END BL,CL NEXT2 BL,CL MIN,CL AH,4CH 21H CODE START 2. 执行 emulate 程序, 对源 程序进行 调试 , 生成 original source code 和 emulator:noname.exe_文件,结果无错误。 3. 执行 run 程序,打开程序 aux ,选择 memory ,查看地址 0710:0000,结果如下 图。 四、实验步骤 (1))x、y 异号 1. 输入源程序: DATA SEGMENT 实验二 一、实验目的 1) 掌握分支程序的结构; 2) 掌握分支程序的设计,调试方法; 二、实验内容 设有 3 个单字节无符号数存放在 从大到小重新排序的程序。 BUF开始的缓冲区中,编写一个能将他们三、算法描述流程图