| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2352 人关注过本帖
标题:大家帮帮我啊~汇编语言求质数~明天交,我编不出来
取消只看楼主 加入收藏
hyukfei
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-1-6
收藏
 问题点数:0 回复次数:2 
大家帮帮我啊~汇编语言求质数~明天交,我编不出来
显示‘PLEASE IN PUT THE DATA:’输入一个十进制数以回车结束,在新的一行显示从1到这个数的所有质数(十进制)
搜索更多相关主题的帖子: 质数 汇编语言 
2008-01-06 16:11
hyukfei
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-1-6
收藏
得分:0 
我把我写的贴在着~
大家看下帮我改改吧~
能运行
但我觉得有点繁~~
DATA SEGMENT
STR1 DB 'Please input the data(1-9999): ','$'
STR2 DB 'The primes are:',0DH,0AH,'$'
NUM  DW ?
K    DB ?
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
  ASSUME CS:CODE,DS:DATA
START: MOV  AX,DATA
       MOV  DS,AX
       MOV  DX,OFFSET STR1
       MOV  AH,9
       INT  21H
       CALL TERN1
       MOV  NUM,BX
       CALL HUI_HUAN           ;回车,换行
       MOV  DX,OFFSET STR2
       MOV  AH,9
       INT  21H  
       MOV  CX,1
LOP1:  INC  CX
       PUSH CX
       MOV  BX,2
       CALL PrimeNum
       POP  CX
       CMP  CX,NUM                  ;输出Num以内的质数
       JB   LOP1
       MOV  AH,4CH
       INT  21H
MAIN   ENDP
;子程序   CALL PrimeNum  
;功能:    判断一个数是否为质数 ,并输出.
;入口条件   BX=2  CX=1
PrimeNum PROC NEAR
LOP2:      CMP  BX,CX
           JZ   PrNumOut
           XOR  DX,DX
           MOV  AX,CX
           DIV  BX
           CMP  DX,0
           JZ   PrNumRet
           INC  BX
           JMP  LOP2
PrNumOut:  MOV  BX,CX
           MOV  K,00H
           CALL TERN
PrNumRet:  RET
PrimeNum   ENDP
;*****************************************
;   将输入的十进制数转换成十六进制数子程序
;*****************************************
TERN1  PROC
       XOR BX,BX
       XOR AX,AX
SHURU: MOV AH,1
       INT 21H
       CMP AL,0DH
       JZ  NET
       SAL BX,1
       MOV DX,BX
       MOV CL,2
       SAL BX,CL
       ADD BX,DX
       SUB AL,30H
       MOV AH,0
       ADD BX,AX
       JMP SHURU
NET:   RET
TERN1  ENDP
;***************************************
;  回车,换行
;***************************************
HUI_HUAN PROC NEAR
       MOV DL,0DH
       MOV AH,2
       INT 21H
       MOV DL,0AH
       MOV AH,2
       INT 21H  
       RET
HUI_HUAN ENDP
;****************************************
;将十六进制转换成十进制输出子程序,入口BX,使用前将K置零,即MOV K,00H
;****************************************
TERN  PROC  NEAR
       MOV CX,1000D
       CALL DEC_DIV      ;转换千位数
       MOV CX,100D
       CALL DEC_DIV      ;转换百位数
       MOV CX,10D
       CALL DEC_DIV      ;转换十位数
       MOV CX,1D
       CALL DEC_DIV      ;转换个位数
       RET
TERN   ENDP
;****************************************
;   从高位到低显示每位十进制数,省略前面的0
;****************************************
DEC_DIV PROC NEAR
       MOV AX,BX
       MOV DX,0
       DIV CX            ;商为转换后的1位十进制数
       MOV BX,DX         ;将余数保存在BX
       OR  K,AL
       JZ  TN
       MOV K,01H
       MOV DL,AL
       ADD DL,30H        ;将商转换成ASCII码
       MOV AH,2
       INT 21H           ;显示
       RET
TN:    MOV DL,20H
       MOV AH,2
       INT 21H
       RET
DEC_DIV ENDP
;****************************************
CODE ENDS
     END START
2008-01-07 16:00
hyukfei
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-1-6
收藏
得分:0 
谢谢谢谢~能不能写点解释和思路呀~好长~
2008-01-07 21:51
快速回复:大家帮帮我啊~汇编语言求质数~明天交,我编不出来
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031707 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved