实验二:简单汇编语言程序设计与调试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深圳大学实验报告

课程名称微型计算机技术

项目名称实验二:简单汇编语言程序设计与调试

学院

专业

指导教师

报告人学号

实验时间 2015-11-01 提交时间 2015-11-15

教务处制

一、实验目的与要求

1.1掌握使用运算类指令编程及调试方法。

1.2掌握运算类指令对各个状态标志位的影响及其测试方法。

二、实验内容与方法

8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表2-1所示的数据类型进行算术运算。

表2-1 数据类型算术运算表

2.1二进制双精度加法运算

2.1.1 实验要求:

计算X+Y=Z,将结果Z存入某存储单元。

2.1.2 实验原理:

本实验程序是双精度(2个16位,既32位)运算,利用累加器AX,先求低16位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需要用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。

2.1.3 参考程序清单:

STACK SEGMENT STACK

DW 64 DUP(?)

STACK ENDS

DATA SEGMENT

XL DW ?;请在此处给X低位赋值

XH DW ?;请在此处给X高位赋值

YL DW ?;请在此处给Y低位赋值

YH DW ?;请在此处给Y高位赋值

ZL DW ?

ZH DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AX,XL ;X的值送AX

ADD AX,YL ;X低位加Y低位

MOV ZL,AX ;存低位和

MOV AX,XH ;X高位送AX

ADC AX,YH ;X高位加Y高位

MOV ZH,AX ;存高位和

CODE ENDS

END START

2.2十进制数的BCD码减法运算

2.2.1 实验要求:

计算X-Y=Z,其中X,Y,Z为BCD码。

2.2.2 参考实验程序及流程图如下:

STACK SEGMENT STACK

DW 64 DUP(?) STACK ENDS

DATA SEGMENT

X DW ? ;请在此处给X赋值

Y DW ? ;请在此处给Y赋值

Z DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AH,00H

SAHF

MOV CX,0002H

MOV SI,OFFSET X

MOV DI,OFFSET Z

A1: MOV AL,[SI]

SBB AL,[SI+02H]

DAS

PUSHF

AND AL,0FH

POPF

MOV [DI],AL

INC DI

INC SI

LOOP A1

A2: JMP A2

CODE ENDS

END START

2.3乘法运算

2.3.1实验要求:

本实验实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,乘积在屏幕显示。

2.3.2 参考程序清单:

STACK SEGMENT STACK

DW 64 DUP(?)

STACK ENDS

DATA SEGMENT

DATA1 DB 5 DUP(?) ;乘数

DATA2 DB ? ;被乘数

RESULT DB 6 DUP(?) ;乘积

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

CALL INIT

MOV SI,OFFSET DATA2

MOV BL,[SI]

AND BL,0FH

CMP BL,09H

JNC ERROR

MOV SI,OFFSET DATA1

MOV DI,OFFSET RESULT

MOV CX,0005H

A1: MOV AL,[SI+04H]

AND AL,0FH

CMP AL,09H

JNC ERROR

DEC SI

MUL BL

AAM

ADD AL,[DI+05H]

AAA

MOV [DI+05H],AL

DEC DI

MOV [DI+05H],AH

MOV CX,06H

MOV SI,OFFSET RESULT

DISPLAY:MOV AH,01H

MOV AL,[SI]

ADD AL,30H ;得到ASCII码

INT 10H ;显示器显示

INC SI

LOOP DISPLAY

A2: JMP A2

INIT: MOV SI,OFFSET RESULT ;RESULT区清零

MOV CX,0003H

MOV AX,0000H

A3: MOV [SI],AX

INC SI

INC SI

LOOP A3

RET

ERROR: MOV AX,0145H ;显示“E”

INT 10H

JMP A2

CODE ENDS

END START

2.4设计性实验-----开平方运算(选作)

2.4.1 设计要求:

设计一个用减奇数法的开平方运算程序

2.4.2 设计提示:

8086/8088指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通

过程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。我们知

道,N个自然数中的奇数之和等于N²,即:

1+3+5=9=3²

1+3+5+7=16=4²

1+3+5+7+9+11+13+15=64=8²

若要做S的开方运算,那么就可以从S中逐次减去自然中的奇数1,3,5,7。。。,一

相关文档
最新文档