質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

Q&A

解決済

2回答

2335閲覧

アセンブリ言語で1から10までの和を計算し、その都度出力したいです。

ChieSuzuki

総合スコア5

アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

0グッド

0クリップ

投稿2021/04/24 01:30

編集2021/04/24 01:36

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

rcxは初期化されてませんね

add %rax, %rcx #add rax to rcx

これはなにをしてるんでしょうか

投稿2021/04/24 01:38

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ChieSuzuki

2021/04/24 01:43

%rax の要素を%rcxに加算しようとしています。 %rcxではなく%ecxを使うべきということですか?
y_waiwai

2021/04/24 01:46

いや、たんにrcxが初期化されてないため、そこになにがはいってるか不定だ、ってことです。 で、加算結果はどこに入るのでしょうか
ChieSuzuki

2021/04/24 01:48

回答していただいたことに基づいてもう一度コードを見直し %raxと%rcxの位置を変えてみると正しく1から55まで出力することができました! ありがとうございます
guest

0

add %rax, %rcx #add rax to rcx

で加算しているようですが、raxは、最初に 0にセットされたまま、全く変更されていないようですが、、

投稿2021/04/24 01:36

pepperleaf

総合スコア6385

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問