求2 到 100 之间的所有素数 5

最汇编中设计这么个程序,该如何写呀?麻烦高手帮帮忙,最好能给出有解释的代码程序,感激不尽,感激不尽~~~!!!我需要的是汇编程序,不是C程序,谢谢·~~~... 最汇编中设计这么个程序,该如何写呀?麻烦高手帮帮忙,最好能给出有解释的代码程序,感激不尽,感激不尽~~~!!!
我需要的是汇编程序,不是C程序,谢谢·~~~
展开
 我来答
深巷夜语
2009-12-28 · 超过20用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:50.1万
展开全部
找到了一个求100内的素数的程序如下:

DSEG SEGMENT
count dw 0;存放素数的个数
sum dw 0;存放素数的和
sushu db 100 dup(?);存放素数
msgsushu db 'all of sushu are:','$';显示素数的提示信息
msgcount db 0dh,0ah,'count of sushu is:',0dh,0ah,'$';显示素数个数的提示信息
msgsum db 0dh,0ah,'sum of sushu is:',0dh,0ah,'$';显示素数和的提示信息
DSEG ENDS

CSEG SEGMENT
assume cs:CSEG, ds:DSEG

MAIN PROC FAR ;主程序入口
call jisuan;将100以内素数的个数存入COUNT单元中,素数的和存入SUM单元中,并将素数存入内存自SUSHU开始的单元中

lea dx,msgsushu;显示素数的提示信息
mov ah,9
int 21h
call dispsushu;显示素数

lea dx,msgcount;显示素数个数的提示信息
mov ah,9
int 21h
call dispcount;显示素数个数

lea dx,msgsum;显示素数和的提示信息
mov ah,9
int 21h
call dispsum;显示素数和

mov ah,1;按任意键退出
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP

jisuan proc near
mov ax, dseg
mov ds, ax
lea di,sushu
mov bh,0
mov bl,2;求从2到100的素数、素数个数、素数的和,BL从2到100变化
next11:
cmp bl,100
ja tj
mov dl,2;如果BL不能被DL从2到BL-1整除的话,则BL为素数
next12:
cmp dl,bl
jae next13
mov ax,bx
div dl
cmp ah,0
jz next14;整除则不是素数
inc dl
jmp next12
next13:
inc count;是素数,则将个数加1
add sum,bx;是素数,则加到和中
mov [di],bl;是素数,则存入相应单元中
inc di
next14:
inc bl
jmp next11
tj:ret
jisuan endp

dispsushu proc near
lea si,sushu
mov cx,count
next21:
mov ax,count;每行10个素数
sub ax,cx
mov bl,10
div bl
cmp ah,0
jnz next22
mov dl,0dh;每行10个素数,行末加回车换行
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
next22:
mov bl,[si];取出一个素数
mov bh,0
call disp10;以十进制形式输出
mov dl,20h;每个素数之间加一个空格,便于区分
mov ah,2
int 21h
call delay;每输出一个素数都有数秒的停顿,延时子程序
inc si
loop next21
ret
dispsushu endp

dispcount proc near
mov bx,count;取出素数个数
call disp10;以十进制形式输出
ret
dispcount endp

dispsum proc near
mov bx,sum;取出素数的和
call disp10;以十进制形式输出
ret
dispsum endp

disp10 proc near;该子程序的作用是将BX中的数以十进制形式输出
push cx
mov cx,1000d
call dec_div
mov cx,100d
call dec_div
mov cx,10d
call dec_div
mov cx,1d
call dec_div
pop cx
ret
dec_div proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,2
int 21h
ret
dec_div endp
disp10 endp

delay proc near;该子程序的功能是延时
push cx
push ax
mov ax,60000
nextd1:
mov cx,6000
nextd2:
loop nextd2
dec ax
jnz nextd1
pop ax
pop cx
ret
delay endp

CSEG ENDS
END MAIN
匿名用户
2009-12-29
展开全部
我的这个程序可以求出任意两个数之间的所有素数,你只要修改一下就可以了。
//求两个数之间的所有素数并显示出来
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>

int prime(int k);

void main()
{
int n,m; //输入的求解范围
int p=0; //用以统计素数个数
cout<<"请输入范围:"; //显示的内容
cin>>n>>m; //输入时明确n<m
//一以下为素数的判断
for(;n<=m;n++)
{
if(prime(n))
{
cout<<setw(5)<<n;
if((p+1)%4==0) //每行四个素数
cout<<endl;
p++;
}
}
getch();
}
//大于2的数是否是素数判断结束

//判断n是素数的函数
int prime(int k)
{
int i; //循环中的变量
if(k==1) //1不是素数
{
return 0;
}

else if(k==2) //2是素数
{
return 1;
}
else
{
for(i=2;i<=sqrt(k);i++)
{
if(k%i==0)
return 0;
}
return 1;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jiukuiiii
2010-01-04
知道答主
回答量:11
采纳率:0%
帮助的人:7.1万
展开全部
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97

参考资料: 数学书

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来去匆匆0824
2010-01-02 · TA获得超过355个赞
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
你再感激不尽,我也不会呀!sorry
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式