东北大学计算机硬件基础知识分支程序设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 AL,BL ;排序,将最大数送AL寄存器

NEXT1: CMP AL,CL

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

ASSUME CS:CSEG,DS,DSEG

START: MOV AX,DSEG

MOV DS,AX

MOV SI,OFFSET BUF

MOV AL,[SI] ;把3个数取到寄存器中

MOV BL,[SI+1]

MOV CL,[SI+2]

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

JAE NEXT1

XCHG AL,BL

NEXT1: MOV MIN,BL ;排序,将最小数送MIN 区

CMP BL,CL

JAE NEXT2

XCHG BL,CL

NEXT2: MOV MIN,CL

MOV AH,4CH

INT 21H

CODE ENDS

END START

2.执行emulate程序,对源程序进行调试,生成original source code和emulator:noname.exe_文件,结果无错误。

3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,结果如下图。

经验证运行结果为63 48 58 48,即99 72 88,MIN区值为48,即最小值72,无错误。

八、实验心得

通过此次试验我理解了汇编语言中编程的基本步骤,掌握了分支结构程序设计中准确知道操作结果影响的标志位状态和正确的使用无条件转移指令以及无符号数的比较方法。这个实验,使我认识到直接通过CPU寄存器地址赋值可以大大提高效率,并且让我知道要继续练习熟读汇编语言代码的功能及用法。

实验二

一、实验目的

1) 掌握分支程序的结构;

2) 掌握分支程序的设计,调试方法;

二、实验内容

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

三、算法描述流程图

四、实验步骤

(1)x、y异号

1. 输入源程序:

DATA SEGMENT

X DB 99

Y DB -33

Z DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

CMP X,0 ;x与0进行比较

JL L1 ;x<0转L1

CMP Y,0

JL L2 ;y<0转L2

MOV Z,1 ;x>=0,y>=0则1→Z,无条件转EXIT

JMP EXIT

L1: CMP Y,0 ;y>=0转L2

JGE L2

MOV Z,-1 ;x<0,y<0则-1→Z,无条件EXIT

JMP EXIT

L2: MOV Z,0 ;x,y异号则0→Z

EXIT: MOV AH,4CH

INT 21H

CODE ENDS

END START

2.执行emulate程序,对源程序进行调试,生成original source code和emulator:noname.exe_文件,结果无错误。

3.执行run程序,打开程序aux,选择memory,查看地址0710:0000,经验证当x、y异号时,Z值为0,结果满足题目要求且无错误。

(2)x、y同为正

1. 输入源程序:

DATA SEGMENT

X DB 13

Y DB 14

Z DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

CMP X,0 ;x与0进行比较

JL L1 ;x<0转L1

CMP Y,0

JL L2 ;y<0转L2

MOV Z,1 ;x>=0,y>=0则1→Z,无条件转

相关文档
最新文档