《计算机组成原理》实验七、综合实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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