• Log in or sign up for an account here: https://www.sythe.org/login

Assembly Help <.<

Ezluz

Active Member
Joined
Jan 2, 2009
Sythe Gold
0
Messages
192
So, I'm trying to learn the basics of Assembly. I'm trying to create a program that finds all of the prime numbers from 1-20. I have most of the code done, but I have no idea what to do next. Please help; Thank you in advance.

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
 
Runescape Gamblingrunescape gambling
Back
Top