《汇编语言实现2个任意数相加.docx》由会员分享,可在线阅读,更多相关《汇编语言实现2个任意数相加.docx(3页珍藏版)》请在三一办公上搜索。
1、汇编语言实现2个任意数相加DATAS SEGMENT X DB 100 DUP(?) Y DB 100 DUP(?) Z DB 100 DUP(?),$;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV BX,0 DATAX: MOV AH,01H ;01回显,将数据存放在AL中 INT 21H CMP AL,+ ;+与输入的数据相减是否为0,即用“+作为X的结束
2、标志” JZ A1 ;判断,为0时,跳转A1,不为0,执行下一条语句 PUSH AX ;将AX整个16位一起进栈 INC BX ;计数 JMP DATAX ;循环将X的每个位依次输入 A1: MOV CX,BX MOV SI,0 A11: POP AX ;将AX内的数据出栈 MOV XSI,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
3、YSI,AL INC SI LOOP A12 ;同理,此处是以=作为Y值的结束标志,输入Y值并保存在Y段 RESULT: CLC PUSHF ;CF先进栈 MOV CX,100 MOV SI,0 MOV DI,99 A3: MOV AL,XSI ;将X段数据放在AL中 MOV DL,YSI ;将X段数据放在DL中 POPF ADC AL,DL ;考虑进位运算,AL+DL+CF AAA PUSHF ADD AL,30H ;转换成ASCII码 MOV ZDI,AL ;将结果从第99位倒着保存到Z段中 INC SI DEC DI LOOP A3 ;依次循环将结果保存到Z段 MOV SI,0 A4: CMP ZSI,30H JNZ A5 INC SI JMP A4 ;从第0位开始判断,看ZSI中的数据是否为0 A5: LEA DX,ZSI MOV AH,09H ;直到不为0的数据那一位是开始显示到第99位 INT 21H MOV AH,4CH INT 21H CODES ENDS END ST