实验一南昌航空大学两个多位十进制数相减实验

  • 格式:doc
  • 大小:78.00 KB
  • 文档页数:4

下载文档原格式

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

微机原理实验

南昌航空大学实验报告

学生姓名:学号:专业班级:电子信息工程

实验类型: 验证□综合□设计□创新实验日期:实验成绩:

一、实验项目名称

实验一、多位十进制数相减实验

二、实验目的

(1)学习数据传送和算术运算指令的用法。

(2)熟悉在PC机上建立、汇编、连接、调试和运行汇编语言的过程。

三、实验要求

将两个多位十进制数相减,要求被减数、减数均以ASCII码形式按顺序存放在以DATA 1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。

实验程序框图如下图所示:

四、实验程序

DATA SEGMENT

DATA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)

DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)

MES1 DB'-','$'

MES2 DB'=','$'

DATA ENDS

STACK SEGMENT;堆栈段

STA DB 20 DUP(?) ;定义由20个字节组成的数据缓冲区

(数组),每个字节的初值不确定TOP EQU LENGTH STA 返回利用DUP定义的数组元素的个数到TOP,

TOP=20;

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA; START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AX,STACK

MOV SS,AX

MOV AX,TOP 段使用设定语句,确定段寄存与段的对应关系:从现在开CS寄存器对应CODE段,

段使用设定语句是伪指令,它不能设置段寄存器的值,只能通过指令语句给DS, ES, SS赋值,CS由系统自动赋值。

堆栈指针寄存器赋值

MOV SP,AX MOV SI,OFFSET DATA1 被减数送SI

MOV BX,05 位数5送

BX 中,作为显示子程序的循环控制变量

CALL DISPL ;调用显示子程序,显示被减数 MOV AH,09H

LEA DX,MES1

INT 21H

MOV SI,OFFSET DATA2 减数送SI MOV BX,05

CALL DISPL 调用显示子程序,显示减数 MOV

AH,09H

LEA DX,MES2

INT 21H

MOV SI,OFFSET DATA1 被减数送SI MOV DI,OFFSET DATA2 减数送

DI

CALL SUBA ;调用减法子程序 ,进行减法运算

MOV SI,OFFSET DATA1

运算结果送SI MOV BX,05 ;

CALL DISPL 调用显示子程序,显示运算结果

MOV DL,0DH

MOV AH,02H

INT 21H MOV DL,0AH

MOV AH,02H

INT 21H INT 21H MOV AX,4C00H INT 21H

DISPL PROC NEAR ;显示子程序(显示5个字符:BX=5) DSI: MOV AH,02 AH=02H,显示一个字符到屏幕 MOV DL,[SI+BX-1] ;显示字符串中一字符 INT 21H

DEC BX ;修改偏移量

JNZ DSI BX 不等于0,继续显示 RET DISPL ENDP

SUBA PROC NEAR

MOV DX,SI 把被减数数据地址送到DX

MOV BP,DI 把减数数据地址送到BP MOV BX,05

SU1: SUB DOS 功能调用:AH=09H,显示字符串到

屏幕,DX::要显示的内容。显示“-”号

DOS 功能调用:AH=09H,显示字符串到

屏幕,DX::要显示的内容。显示“=”号

DOS 功能调用:AH=02H,显示一个字符到屏幕

,DX::要显示的内容:CR(回车)的ASCII 码0D

DOS 功能调用:AH=02H,显示一个字符到屏幕

,DX::要显示的内容:LF(换行)的ASCII 码0A 。

DOS 功能调用:AH=4CH,退出程序

SUB BYTE PTR[DI+BX-1],30H

DEC BX 将5位数据进行转换 JNZ SU1 ; MOV

MOV DI,BP

MOV CX,05 ;置循环初始值,包括进位,共5位

CLC ;清进位位 SU2: MOV AL,[SI] 被减数送SI MOV BL,[DI] 减数送 DI

SBB AL,BL ;带进位相减

AAS ;非组合BCD 码的减法调整 MOV [SI],AL ;结果送被减数区 INC SI 指向下一位 INC DI ;指向下一位 MOV SI,DX MOV DI,BP

ADD BYTE PTR [DI+BX-1],30H DEC BX JNZ SU3

RET

SUBA ENDP CODE ENDS

END START

五、实验步骤

1、先进入DOS 系统,按照路径进入EDIT 编写上述程序1.ASM ,并保存;

2、用MASM 编译1.ASM 产生1.OBJ ,在用LINK 链接1.OBJ ,最后用DEBUG 调

试1.EXE ;

3、运行程序,看结果是否正确。

4、实验结果如下图: