微机实验 两个多位十进制数相加的实验

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

实验2 两个多位十进制数相加的实验

一、实验目的

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

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

二、实验内容

将两个多位十进制数相加,要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。附加题要求将加法过程显示与屏幕。

同学可以自己设计程序也可对代码段进行填空以及问答来完成程序。(附加题范例在第二页)

;该程序完成54321+54321=108642的多位十进制加法运算,和存放与DAT3

DATA SEGMENT

DAT1 DB'12345';问一个多位十进制数各位是以何种顺序存放于内存的。

DAT2 DB'12345';个位存放于高地址或者为低地址。

DAT3 DB 6 DUP(0)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

LEA BX,DAT1

LEA SI,DAT2

LEA DI,DAT3

MOV CX,5

CLC ;为什么要加入这条指令

L1: MOV AL[BX]

ADC AL,[SI] ;BYTE PTR[BX]+[SI]+CF→AL 例‘1’+‘1’+0= 62H→AL

__________;填空________________; AL=02H

PUSHF;为什么要加入pushf popf这两条指令

OR AL,30H;为什么要加入这条指令

POPF

MOV [DI],AL

__________;填空________

__________;填空________

__________ ;填空________

LOOP L1

JNC L2

MOV [DI],31H

INC DI

hlt

CODE ENDS

END START

三、程序框图(见下页)

附加题1范例

;该程序完成54321+54321=108642的多位十进制加法运算,和存放与DAT3并显示于屏幕DATA SEGMENT

DAT1 DB'12345';问一个多位十进制数各位是以何种顺序存放于内存的。

DAT2 DB'12345'

DAT3 DB 6 DUP(0)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

LEA BX,DAT1

LEA SI,DAT2

LEA DI,DAT3

MOV CX,5

CLC

L1: MOV AL[BX]

ADC AL,[SI]

;填空________________

PUSHF;为什么要加入pushf popf这两条指令

OR AL,30H;为什么要加入这条指令

POPF

MOV [DI],AL

;填空________

;填空________

;填空________

LOOP L1

JNC L2

MOV [DI],01H

;下面是附加显示

L2: ADD [DI],30H

INC DI

PUSH DI ;分析此时DI指向和的哪一位?

PUSH SI

PUSH BX

POP SI

DEC SI ;为什么要减一

MOV CX,5

CALL DISP

MOV DL,'+'

MOV AH,2

INT 21H

;填空_________

DEC SI

MOV CX,5

CALL DISP

MOV DL,'='

MOV AH,2

INT 21H

POP SI

DEC SI

MOV CX,;______填空

CALL DISP

HLT

;disp入口参数SI为显示字符串的末偏移地址以及显示字符串的个数CX

;DISP以倒序的方式逐个显示一个多位十进制数的

DISP PROC

L3: MOV DL,[SI]

MOV AH,2

INT 21H

;填空_____________

LOOP L3

;填空________

DISP ENDP

CODE ENDS

附加题2:

程序中变量如下数据段所定义,D1-D4为用ASCII字符串表示的十进制数字(说明:低地址为高的权位如DA1字符串表示一千两百三十四),完成D1-D4的累加并存入D5 DATA SEGMENT

D1 DB ‘1234’

D2 ‘DB ‘2234’

D3 DB ‘3234’

D4 DB ‘5345’

D5 DB 5 DUP(0)

DATA ENDS

附加题3:

程序中变量如下数据段所定义,D1-D4为用ASCII字符串表示的十进制数字(说明:低地址为高的权位如DA1低地址为十位,高地址为个位),每个字符串以0DH结束。要求将D1-D4转换为数值形式存入DA1-DA4(说明:’34’十进制数字符串转换后DA4为20H

DATA SEGMENT

D1 DB ‘16’,0DH

D2 ‘DB ‘123’,0DH

D3 DB ‘2344’, 0DH

D4 DB ‘55345’,0DH

相关文档
最新文档