프로그래밍

 3198, 1/160 회원가입  로그인  
   thunder994
   [어셈] nasm 코드를 masm코드로 바꿔주세요 부탁드려요

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3210 [복사]


;Amount of double words (32 bits each) that we will reserve
%define RESSIZE 10000000        
;Uninitialized data goes in bss segment  
segment .bss      
     ;Reserve plenty of space for primes (38MB)              
     Primes resd RESSIZE    
     ;Reserve space for answer
RetVal resd 1                
;Code goes in the text section
segment .text
;global <procedure name>
global _asm_main lets C program "see" the procedure
      ;procedure start
      _asm_main:    
         ;setup routine            
         enter 0,0    
          ;save register states for when we return to C              
pusha
     ;indexer for prime number array          
mov esi,0  
;ebp-1 points to last found prime                
mov ebp,0                    
;first prime given free
mov [Primes], DWORD 3
  ;set up to hold next prime      
inc ebp                      
;find primes from 3 to X
mov ecx, DWORD 3        
;outer loop
i:
     ;check that we haven't gone past max      
     cmp ecx,10000000        
             ja  end
    ;clear "j" (inner loop)
     mov esi,0              
         j:
             ;if we've gone past our current list of primes, we're prime
cmp esi,ebp
       ja prime              
    ;divide by previous prime
     mov edx, 0              
     mov eax, ecx
     div DWORD [Primes + (esi-1)*4]
       ;if we have no remainder, skip
     cmp edx, 0
     je  next                  
     ;go to next prime
     inc esi                
jmp j
      ;Add new prime to list
     prime:                
          mov [Primes + ebp * 4], ecx
         inc ebp
             next:
         add ecx,2
         jmp i
end:
  mov eax,[Primes + (ebp-1)*4]
         mov [RetVal],eax
          ;Get register states from before we ran procedure        
popa
         ;return back to C
         mov eax, [RetVal]      
         leave
         ret
----------------------------------------------------------------------------
여기까지구요. nams전용으로 만드어진 코든데 masm으로좀 바꿔주세요~부탁드립니다 ㅜ
주석은 필요없어요

  Hit : 4937     Date : 2011/11/15 08:23