《计算机组成原理》实验七、综合实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七综合设计

一.实验目的:

1、掌握程序的结构。

2、掌握程序的设计、调试方法。

二.实验内容:

假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断:每个数大于0,等于0,还是小于0;并输出其判断结果。

即: 1 当x>0

y= 0 当x=0

-1 当x<0

DA TA SEGMENT

X DB -25

Y DB ?

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START:MOV AX,DA TA

MOV DS,AX ;初始化

MOV AL,X ;X取到AL中

CMP AL,0 ;AL中的内容和0比较

JGE BIG ;大于等于0,转BIG

MOV BL,-1 ;否则为负数,-1送BL

JMP EXIT ;转到结束位置

BIG: JE EE ;AL中的内容是否为0,为0转EE

MOV BL,1 ;否则为在于0,1送BL

JMP EXIT ;转到结束位置

EE: MOV BL,0 ;0送BL中

EXIT: MOV Y,BL ;BL中内容送入Y单元

MOV AH,4CH

INT 21H ;程序结束

CODE ENDS

END START ;汇编结束

三.实验要求:

实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。

四.编程提示:

1、首先将原始数据装入起始地址为XX的字节存储单元中。

2、将判断结果以字符串的形式存放在数据区中,以便在显示输出时调用。

3、其中判断部分可采用CMP指令,得到一个分支结构,分别输出“y=0”, “y=1”, “y=-1”。

4、程序中存在一个循环结构,循环6次,调用6次分支结构后结束。

五.思考题:

程序中的原始数据是以怎样的形式存放在数据区中的?请用DEBUG调试程序观察并分析。

六.实验报告:

1、程序说明。说明程序的功能、结构。

2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

3、画出程序框图。

4、写出源程序清单和执行结果。

5、回答思考题。

巩固练习

1.已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。

DATA SEGMENT

NUM DB -25

RESULT DB ?

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START: MOV AX,DATA

MOV DS,AX ;初始化

MOV AL,X ;X取到AL中

TEST AL,80H ;测试AL正负

JZ NEXT ;为正,转NEXT

NEG AL ;否则AL求补

NEXT: MOV RESULT,AL ;送结果

MOV AH,4CH

INT 21H ;返回DOS

CODE ENDS

END START ;汇编结束

2.试编写一程序计算以下表达式的值。w=(v-(x*y+z-540))/x

式中x、y、z、v均为有符号字数据。

DATA SEGMENT

X DW 200

Y DW 100

Z DW 3000

V DW 10000

W DW 2 DUP(?)

DATA ENDS

STACK SEGMENT

DB 200 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK

START: MOV AX,DATA

MOV DS,AX ;DATA→AX

MOV AX,X

IMUL Y ;(X)*(Y)→DX:AX

MOV CX,AX

MOV BX,DX ;(DX:AX)→(BX:CX)

MOV AX,Z

CWD ;(Z)符号扩展

ADD CX,AX

ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX)

SUB CX,540

SBB BX,0 ;(BX:CX)-540→(BX:CX)

MOV AX,V

CWD ;(V)符号扩展

SUB AX,CX

SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX)

IDIV X ;(DX:AX)/X

MOV W,AX ;商→W

MOV W+2,DX ;余数DX→W+2

MOV AH,4CH

INT 21H

CODE ENDS ;退出DOS 状态

END START

3.已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中,编程实现查表的运算过程。(15分)

STACK SEGMENT

DB 200 DUP(?);预置栈空间

STACK ENDS

DATA SEGMENT

TAB DB 80,85,86,71,79,96

DB 83,56,32,66,78,84

NO DB 10

ENGLIST DB ?

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,SS:STACK,CS:CODE

BEGIN: MOV AX,DATA

MOV DS ,AX;初始化

LEA BX,TAB

MOV AL,NO

XLAT TAB;进行查表指令的操作

MOV ENGLISH,AL

MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN;程序结束

4.编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止。统计被累加的自然数的个数送CN单元,累加和送SUM。(15分)

DATA SEGMENT

SUM DW ?

CN DW ?

DATA ENDS

相关文档
最新文档