实验一 顺序程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一顺序程序设计
一、实验目的:
1、学习顺序程序的设计方法
2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程
3、学习和掌握字符及字符串的输入输出方法
二、实验环境:
硬件环境IBM/PC 及其兼容机
软件环境操作系统DOS
编辑程序EDIT或其他编辑程序
汇编程序MASM.EXE
连接程序LINK.EXE
调试程序DEBUG.EXE
可视化编程环境emu8086
三、实验内容:
1、已知X和Y是数据段中的两个无符号字节单元,用程序完成表达式Z=(X2+Y2)/2的计算。
2、从键盘读入两个一位数(按键时保证按下的是数字键),显示它们的积。
四、实验要求:
1、画出实验程序流程图,独立完成源代码的编写。
开始
X中的内容
送AL
计算X*X
X*X乘积
送BX
Y中的内
容送AL
计算Y*Y 计算X*X+Y*Y
计算(X*X+Y*Y)/2结果送Z单元
结束
开始
读入第1个数字
并保存在BL中
读入第2个数字
将两个数字都转换成十进制数
两个数相乘,
积在AX中
积除以10取商送AL,余数在AH中
转换成相应的
ASCII码,并
保存在BX中
输出十位数
输出个位数
结束
2、在DOS环境下使用MASM完成对源代码的编译、连接,有必要的情况下使用debug.exe 进行调试。
3、WINDOS环境下使用EMU8086完成上第2步的工作。
4、与程序流程图比较,验证是否完成规定的功能,若未达要求,返回第1步。
5、提交完成的源代码,要求对关键语句进行注释。
①源代码如下:
DA TA SEGMENT
X DB 5
Y DB 4
Z DW ?
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX ;初始化数据段
MOV AL,X ;X中的内容送AL
MUL AL ;计算X*X
MOV BX,AX ;X*X乘积送BX
MOV AL,Y ;Y中的内容送AL
MUL AL ;计算Y*Y
ADD AX,BX ;计算X2+Y2
SHR AX,1 ;计算(X2+Y2)/2
MOV Z,AX ;结果送Z单元
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END START ;汇编结束
②源代码如下:
CODE SEGMENT
ASSUME CS:CODE
MAIN: MOV AH,1
INT 21H ;读入第1个数字
MOV BL,AL ;保存在BL中
MOV AH,2
MOV DL,13
INT 21H ;回车
MOV DL,10
INT 21H ;换行
MOV AH,1
INT 21H ;读入第2个数字
SUB AL,30H ;第2个数字转换成十进制数
SUB BL,30H ;第1个数字转换成十进制数
MUL BL ;两个数相乘,积在AX中
MOV BL,10 ;
DIV BL ;积除以10取商送AL,余数在AH中
ADD AX,3030H ;转换成相应的ASCⅡ码
MOV BX,AX ;保存在BX中
MOV AH,2
MOV DL,13
INT 21H ;回车
MOV DL,10
INT 21H ;换行
MOV DL,BL
MOV AH,2
INT 21H ;输出十位数
MOV DL,BH
INT 21H ;输出个位数
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END MAIN ;程序结束