p2p.wrox.com Forums (http://p2p.wrox.com/index.php)
-   Assembly Language (http://p2p.wrox.com/forumdisplay.php?f=195)
-   -   Prime number program help (http://p2p.wrox.com/showthread.php?t=74548)

 daddymac1213 May 24th, 2009 05:22 PM

Prime number program help

I need help with a program that finds and displays all of the prime numbers (eg, 1, 2, 3, 5, 7, 11, 13, 17, 19) from 1 to 20. I have most of the code, but am unsure where to go from here, the output displays all numbers from 1 to 20. Here is what I have so far:
Code:

```include 'emu8086.inc' org  100h ; set location counter to 100h jmp CodeStart DataStart:   max dw 20   space db " ", 0 CodeStart:   mov bx, 1       call IsPrime    cmp dx, 0     LoopStart:          ; must be a prime       mov ax, bx       call print_num             ; print a space       mov si, offset space       call print_string             add bx, 1       cmp bx, max   jle LoopStart     ret             IsPrime PROC       ; uses a loop to determine if number in bx is prime       ; upon return if bx not prime dx will be 0, otherwise dx > 0       ; we only have to test divisors from 2 to bx/2             ; prepare to divide dx:ax / 2       mov ax, bx              mov dx, 0       mov cx, 2        div cx             ; move result into si for loop       mov si, ax             ; assume the value is prime       mov dx, 1             ; start loop at 2       mov cx, 2             PrimeLoop:                 ; compare loop count(in cx) and max loop value (in si)           cmp cx, si                     ; jump out of loop if count(cx) > si           ja StopLabel                 ; divide test value (in bx) by loop count (in cx)           mov ax, bx           mov dx, 0                      div cx                     ; check remainder (in dx), if zero then we found a divisor           ; and the number cannot be prime           cmp dx, 0                     ; if dx = 0 then we found a divisor and can stop looking           je StopLabel                     ; increment count           add cx, 1             jmp PrimeLoop             StopLabel:             ret   IsPrime ENDP   DEFINE_PRINT_STRING DEFINE_SCAN_NUM DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS```

 daddymac1213 May 24th, 2009 08:24 PM

Nevermind, I was able to figure out the solution on my own.[:)][:)]

 Silvine January 10th, 2010 07:29 AM

Quote:
 Originally Posted by daddymac1213 (Post 241732) Nevermind, I was able to figure out the solution on my own.[:)][:)]
Can you post the solution?

 All times are GMT -4. The time now is 09:30 PM.