8086汇编 三数求和

设变量单元DATAA、DATAB、DATAC存放3个数,若3个数都不为零,则求3个数的和,存 放在DATAD中;
若有一个为零,则将其余两个也清零,试编写程序。 尝试上机调试运行及验证上述程序。

DATA SEGMENT
DATAA	DB	1H
DATAB 	DB	2H
DATAC	DB  3H
DATAD	DW  0
DATA ENDS
STACK SEGMENT

STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA
START:MOV AX,DATA
	  MOV DS,AX
 	  LEA SI, DATAA
 	  LEA DI, DATAD
      MOV AL,[SI]
	  CMP AL,00         ;判断DATAA是否为0
 	  JZ ZERO					;0跳转
	  ADC DL,AL				;不为0,相加到DL中,下面同理
	  LEA SI, DATAB
	  MOV AL,[SI]
	  CMP AL,00
	  JZ ZERO
	  ADC DL,AL
	  LEA SI, DATAC
	  MOV AL,[SI]
 	  CMP AL,00
	  JZ ZERO
	  ADC DL,AL
	  MOV [DI],DX
	  JMP EXIT
ZERO: MOV AL,0			;将三个数都置0
	  MOV DATAA,AL
	  MOV DATAB,AL
	  MOV DATAC,AL

EXIT: MOV AX,4C00H;		
	  INT 21H
CODE ENDS
END START

在这里插入图片描述

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Linux汇编语言的代码示例,可将两个数相加并打印结果。 ```assembly section .data message db 'The sum is: ', 0 ; 0 表示字符串的结尾 section .bss num1 resb 2 ; 两个字节的空间用于保存第一个数 num2 resb 2 ; 两个字节的空间用于保存第二个数 result resb 2 ; 两个字节的空间用于保存结果 section .text global _start _start: ; 读取第一个数 mov eax, 3 ; 3 表示 sys_read mov ebx, 0 ; 0 表示标准输入 mov ecx, num1 ; 存储第一个数的地址 mov edx, 2 ; 读取两个字节 int 0x80 ; 调用系统调用 ; 读取第二个数 mov eax, 3 ; 3 表示 sys_read mov ebx, 0 ; 0 表示标准输入 mov ecx, num2 ; 存储第二个数的地址 mov edx, 2 ; 读取两个字节 int 0x80 ; 调用系统调用 ; 将两个数相加 mov ax, [num1] ; 将第一个数读取到 AX 寄存器 add ax, [num2] ; 将第二个数加到 AX 寄存器 mov [result], ax ; 将结果存储到 result 变量 ; 输出结果 mov eax, 4 ; 4 表示 sys_write mov ebx, 1 ; 1 表示标准输出 mov ecx, message ; 打印消息 "The sum is: " mov edx, 14 ; 消息的长度 int 0x80 ; 调用系统调用 ; 输出结果的值 mov eax, 4 ; 4 表示 sys_write mov ebx, 1 ; 1 表示标准输出 mov ecx, result ; 存储结果的地址 mov edx, 2 ; 结果占用两个字节 int 0x80 ; 调用系统调用 ; 退出程序 mov eax, 1 ; 1 表示 sys_exit xor ebx, ebx ; 返回值为 0 int 0x80 ; 调用系统调用 ``` 以上代码将读取两个字节的输入,将它们相加,然后打印结果。它使用`sys_read`和`sys_write`系统调用来读取和打印数据,并使用`sys_exit`系统调用退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值