微机原理实验-顺序实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安交通大学实验报告
课程:微机原理与接口技术实验实验名称:顺序程序设计第 1页共页
系别:理学院应用物理系实验日期 2016年11月19日专业班级:应物42班组别____________ 实验报告日期 2016年月日
姓名:茹世浩学号: 2140903034 报告退发 ( 订正、重做) 1.实验目的
学习8086汇编语言程序的基本结构和顺序程序设计的基本方法。
2.实验设备
微型电脑、、、
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〕
→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 DS,AX
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
MOV AH,2
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
ASSUME CS:CSEG, DS:DSEG START:
MOV AX,DSEG
MOV DS,AX
MOV AL,[NUM+2]
CBW
MOV BX,AX
MOV AL,[NUM+3]
CBW
IMUL BX
MOV BX,AX
MOV AL,[NUM]
CBW
MOV DX,AX
MOV AL,[NUM+1]
CBW
ADD AX,DX
SUB AX,BX
IDIV BYTE PTR[NUM+4]
MOV BL,AL
MOV CL,4
SHR AL,CL
CMP AL,0AH
JB A1
ADD AL,07H
A1:ADD AL,30H
MOV DL,AL
MOV AH,2
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
编译链接:
运算结果。