广元到三亚机票多少钱:特急~~求解一道编程题~~~高手进

来源:百度文库 编辑:高校问答 时间:2024/04/27 17:58:53
题目是:设在变量单元A,B,C中存有三个数,若三个数都不为零,则计算三个数之和并存入变量单元D若三个变量中有一个为零,则将其他两个单元也清零。请编此程序。
我真的好笨......- -!!!
~~麻烦大家了~得用DATA SEGMENT
...............
DATA ENDS
这样的才行~

我想楼主要的是汇编程序吧,好久没用了,你看看符合你的要求不。

sseg segment stack \'stack\'
ssega dw 100 dup(?)
sseg ends

Data segment \'data\'
a db 1
b db 2
c db 3
d dw ?
Data ends

cseg segment \'code\'
assume cs:cseg;ds:Data;ss:sseg
start:
mov ax,Data
mov ds,ax
or a,0
jz zero
or b,0
jz zero
or c,0
jz zero
xor ax,ax
mov al,a
add al,b
adc al,c
mov d,ax
jmp return

zero:
mov a,0
mov b,0
mov c,0

return:
mov ah,4ch
int 21h
cseg ends
end start

呵呵 汇编?
stack segment para 'stack'
db 100 dup('stack')
stack ends

data segment
A db 1
B db 2
C db 3
D dw ?
data ends

code segment 'code'
assume cs:code, ds:data,es:data,ss:stack

start:
mov ax,data
mov ds,ax
mov es,ax

mov ax,A
and ax,B
and ax,C
jnz add
mov A, ax
mov B, ax
mov c, ax
jmp last
add:
mov ax,A
add ax,B
add ax,c
mov D,ax
last:
mov al, 4ch
int 21h
code ends
end start

dim a, b, c, d
if a&b&c≠0 then
a+b+c=d
if a&b&c=0 then
a&b&c=0

#include<stdio.h>
void main()
{
int i,A[3],D=0,temp=0;
for(i=0;i<3;i++)
{
scanf("%d",&A[i]);
D+=A[i];
if(A[i]==0)
temp=1;
}
if(temp==1)
{
for(i=0;i<3;i++)A[i]=0;
D=0;
}
printf("%d",D);
}

呵呵,三种不错的想法,不过,似乎第三种比较好,因为他用到了位运算,效率高些

显然这个问题是用汇编来回答的。
汇编学完都忘记了。
DATA SEGMENT
...............
DATA ENDS
是汇编的格式。。。。