微机原理实验-顺序实验

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

相关文档
最新文档