汇编语言实现2个任意数相加

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

D A TAS SEGMENT

X DB 100 DUP(?)

Y DB 100 DUP(?)

Z DB 100 DUP(?),'$';此处输入数据段代码

DA TAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV BX,0

DA TAX:

MOV AH,01H ;01回显,将数据存放在AL中

INT 21H

CMP AL,'+' ;"+"与输入的数据相减是否为0,即用“+作为X的结束标志”

JZ A1 ;判断,为0时,跳转A1,不为0,执行下一条语句

PUSH AX ;将AX整个16位(包括AH,AL)一起进栈

INC BX ;计数

JMP DATAX ;循环将X的每个位依次输入

A1:

MOV CX,BX

MOV SI,0

A11:

POP AX ;将AX内的数据出栈

MOV X[SI],AL ;将AL的数据保存到X段中

INC SI

LOOP A11 ;依次循环保存

MOV BX,0

DATAY:

MOV AH,01H

INT 21H

CMP AL,'='

JZ A2

PUSH AX

INC BX

JMP DATAY

A2:

MOV CX,BX

MOV SI,0

A12:POP AX

MOV Y[SI],AL

INC SI

LOOP A12 ;同理,此处是以"="作为Y值的结束标志,输入Y值并保存在Y段

RESULT:

CLC

PUSHF ;CF先进栈

MOV CX,100

MOV SI,0

MOV DI,99

A3:

MOV AL,X[SI] ;将X段数据放在AL中

MOV DL,Y[SI] ;将X段数据放在DL中

POPF

ADC AL,DL ;考虑进位运算,AL+DL+CF

AAA

PUSHF

ADD AL,30H ;转换成ASCII码

MOV Z[DI],AL ;将结果从第99位倒着保存到Z段中

INC SI

DEC DI

LOOP A3 ;依次循环将结果保存到Z段

MOV SI,0

A4:

CMP Z[SI],30H

JNZ A5

INC SI

JMP A4 ;从第0位开始判断,看Z[SI]中的数据是否为0

A5:

LEA DX,Z[SI]

MOV AH,09H ;直到不为0的数据那一位是开始显示到第99位

INT 21H

MOV AH,4CH

INT 21H

CODES ENDS

END ST

相关文档
最新文档