当前位置: 代码迷 >> 汇编语言 >> 分享本人今日编写的一个质数程序(原创)
  详细解决方案

分享本人今日编写的一个质数程序(原创)

热度:141   发布时间:2016-05-02 04:29:14.0
分享本人今天编写的一个质数程序(原创)
本人今天编写了一个例出2-65535之间所有质数的程序,特拿出来分享。程序如下:
(本程序在MASM5.0下编译通过,在DOS环境下成功执行。)
DATA SEGMENT
ZCS DW 10000,1000,100,10,1
SJZ DB 5 DUP(0),09H
DATA ENDS

CODE SEGMENT
     ASSUME CS:CODE,DS:DATA
START:
     MOV AX,DATA
     MOV DS,AX
     MOV CX,65534
     MOV BX,2
DXH:
     PUSH CX
     MOV CX,BX
     SUB CX,2
     CMP CX,0
     JZ SAVE
     MOV BP,2
XXH:
     XOR DX,DX
     MOV AX,BX
     DIV BP
     CMP DX,0
     JE NEXT
     INC BP
     LOOP XXH
SAVE:
     MOV CX,5
     LEA DI,ZCS
     LEA BP,SJZ
     MOV AX,BX
ASCII:     
     XOR DX,DX
     DIV WORD PTR[DI]
     ADD AL,30H
     MOV DS:[BP],AL
     MOV AX,DX
     ADD DI,2
     INC BP
     LOOP ASCII
     MOV CX,6
     LEA SI,SJZ
DISP:
     MOV DL,[SI]
     MOV AH,2
     INT 21H
     INC SI
     LOOP DISP
NEXT:
     INC BX
     POP CX
     LOOP DXH


     MOV AH,4CH
     INT 21H
CODE ENDS
     END START
------解决思路----------------------
感谢分享,不过不定义一个栈段真的没问题吗?
------解决思路----------------------
程序本身很小(远不到 64KB),对内存使用没有额外要求和操作(比如进行内存的释放和申请操作其大小加上程序本身近乎甚至大于 64KB),堆栈的使用也无特别要求(比如极深的递归调用可能导致的堆栈要求加程序近乎甚至大于64KB了),可以不定义堆栈段,因为这时会将程序首个 64K 段的末尾作为默认的堆栈空间;前面的条件就是简单地约束这部分空间不被程序使用到,堆栈的增长也不会威胁到低地址部分的程序自身。
------解决思路----------------------
是这样呀,长姿势了。
  相关解决方案