微机原理实验-顺序实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验-顺序实验
西安交通大学实验报告
课程:微机原理与接口技术实验实验名称:顺序程序设计第 1页
共页
系别:理学院应用物理系
实验日期 2016年11月19日
专业班级:应物42班组别____________ 实验报告日期 2016年月日
姓名:茹世浩学号: 2140903034 报告退发 ( 订正、重做)
1.实验目的
学习8086汇编语言程序的基本结构和顺序程序
设计的基本方法。
2.实验设备
微型计算机、MASM.EXE、LINK.EXE、TD.EXE
3.实验原理
顺序程序是控制流仅有一个走向的程序,它主
要用于解决一些无需进行判断分支,也无需循环
执行的简单问题。
本节的实验内容与乘法和除法运算有关。无符
号数乘法运算使用MUL指令,有符号数乘法运算
使用IMUL指令。乘法运算属于隐含操作数的运
算,因此在使用乘法指令前,需要先将乘数放入AL(8位乘法)或AX(16位乘法)中。乘法指令执行后,乘积在AX(8位乘法)或DX:AX(16位乘法)中。无符号数除法运算使用DIV指令,有符号数除法运算使用IDIV指令。除法运算属于隐含操作数的运算,因此在使用除法指令前,需要先将被除数放入AX(8位除法)或DX:AX(16位除法)中。当除数为8位时,被除数应为16位;除数为16位时,被除数应为32位。对无符号数除法,当被除数字长不够时,高位部分可直接补0;而对有符号数除法,当被除数字长不够时,必须使用符号扩展指令进行扩展。除法运算执行后,结果在AX(8位除法)或DX:AX(16位除法),其中AL(8位除法)或AX(16位除法)中是商,AH(8位除法)或DX(16位除法)中是余数。
4.实验内容
在NUM变量中定义了5个有符号数(字节类型),分别是U= 09H,V=16H,W=04H,X=17H,Y=05H,计算(U+V-W*X)/Y,将结果显示在屏幕上。
程序流程图如图错误!文档中没有指定样式的文字。-1。
开始
[NUM]=U,[NUM+1]=V,
[NUM+2]=W,[NUM+3]=X,[NUM+4]=Y
第一步:计算W*X
1. [NUM+2]→AL(数据W送AL)
2. AL*[NUM+3]→AL(W*X乘积送AL)
3.AL→BL(乘积备份到BL)
第二步:计算U+V-W*X
1. [NUM]→AL(数据U送AL)
2. AL+[NUM+1]→AL(U+V之和送到AL)
3. AL-BL→AL(U+V-W*X,结果送到AL)
第三步:计算(U+V-W*X)/Y
1. AL符号扩展到AX
2. AX / [NUM+4]→AX ((U+V-W*X)/Y,商在AL中)
第四步:显示结果的高4位
1. AL中的结果暂存到BL
2. AL逻辑右移4位(取高4位)
3. AL的内容转换成ASCII码
4. 显示
第五步:显示结果的低4位
1. BL中暂存的结果送到AL
2. 保留AL中低4位,高4位清0
3. AL的内容转换成ASCII码
4. 显示
返回DOS
图错误!文档中没有指定样式的文字。-1顺序程序的程序流程图
程序框架如下:
DSEG SEGMENT
NUM DB 09H,16H,04H,17H,05H ;定义U,V,W,X,Y
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
计算W*X
计算U+V-W*X
计算(U+V-W*X)/Y的指令序列
显示结果的高4位
显示结果的低4位
返回DOS的指令序列
CSEG ENDS
END START
根据程序框架输入源程序,然后编译、连接、执行,观察执行结果。
代码:
DSEG SEGMENT
NUM DB 09H,16H,04H,17H,05H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START:
MOV AX,DSEG
MOV AL,[NUM+2] MOV BL,[NUM+3] IMUL BL
MOV BL,AL
MOV AL,[NUM] ADD AL,[NUM+1] SUB AL,BL
CBW
MOV CL,[NUM+4] IDIV CL
MOV BL,AL
MOV CL,4
SHR AL,CL
CMP AL,0AH
JB A1
ADD AL,07H
A1:ADD AL,30H
MOV DL,AL
INT 21H
MOV AL,BL SHL AL,CL SHR AL,CL CMP AL,0AH JB A2
A2:ADD AL,30H MOV DL,AL MOV AH,2 INT 21H
MOV AH,4CH INT 21H CSEG ENDS
END START 编译链接:
运算结果
5.实验习题
将数据改为U=0ABH,V=0EFH,W=12H,X=10H,Y=05H,上机验证结果是否正确?问题出在何处,应如何解决?
问题:溢出
代码:
DSEG SEGMENT
NUM DB 0ABH,0EFH,12H,10H,05H
DSEG ENDS
CSEG SEGMENT