下のアセンブリプログラム(x86)をで入力した数字の約数を求めたいです。
下のコードですと、エラーが出てしまいます。
segment .data
Message db "Find primes up to: ", 0
segment .bss
Limit resd 1 ; find primes up to this limit
Guess resd 1 ; the current guess for prime
segment .text
global asm_main
asm_main:
enter 0,0 ; setup routine
pusha
mov eax, Message
call print_string
call read_int ; scanf("%u", & limit );
mov [Limit], eax
mov eax, 2 ; printf("2\n");
call print_int
call print_nl
mov eax, 3 ; printf("3\n");
call print_int
call print_nl
mov dword [Guess], 5 ; Guess = 5;
loop_start:
mov eax,[Limit]
mov ecx,eax
add eax,ecx
je eax,0
movabs ecx,eax
call print_int
call print_nl
loop loop_start
leave
ret
Cでいうと、
printf("Recieves a number(limit) and prints its all divisors");
for(int i = 1; i <= limit; i++) {
if((limit%i) == 0){
printf("\n%d", i);
だとは思うのです。
回答1件
あなたの回答
tips
プレビュー