X84 Assembly のプログラミングで1から10までの和を出したいです
今のこのコードでは0が十回出力されます。
なので数字を上手にたせていないことがわかるのですが、どこを直せばいいのかわかりません。
assembly
1 .global main 2 3format: 4 .asciz "%5ld\n" 5 6 .text 7 8main: 9 10 push %rbx 11 12 mov $0, %rax #set rax to 0 to store value 13 mov $1, %ecx #ecx will count up from 1 14 15printandadd: 16 17 add %rax, %rcx #add rax to rcx 18 call printnumbers 19 inc %ecx #increment 20 cmp $11, %ecx 21 jle printandadd #compare and if %ecx is greater or eaqual to 11, increment again 22 23 pop %rbx #restore rbx before using it 24 25 ret 26 27 28printnumbers: 29 30 # We need to call printf, but we are using eax, ebx, and ecx. printf 31 # may destroy eax and ecx so we will save these before the call and 32 # restore them afterwards. 33 34 push %rax # save the register 35 push %rcx # save the register 36 37 lea format(%rip), %rdi #set 1st parameter for format 38 mov %rax, %rsi #set second parameter 39 xor %rax, %rax 40 41 call printf #printf(format, current_number) 42 43 pop %rcx # restore caller-save register 44 pop %rax # restore caller-save register 45 46 ret
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/24 01:43
2021/04/24 01:46
2021/04/24 01:48