こんにちは私はアセンブリに不慣れで、2部構成のプログラムを機能させるのに苦労しています。このx86アセンブリにはVisualStudioを使用しています。
パートI)私の最初の目標は、最大13までカウントし、そこに向かう途中で各値を追加することです。例:0 + 1 + 2 + 3 ... + 13=91。その合計を合計で保存したいと思います。
パート2)次に、2^0から2^6までの2の累乗でカウントアップしたいと思います。例、0、1、2、4、8、32、64。私はそう思っています*私はそうしていますが、私は行くにつれてそれぞれの値を保存していません。これらを連続したメモリ位置に保存したい。
私はこれまでにこれを持っています、
.586
.MODEL FLAT
.STACK 4096
.DATA
num1 BYTE 13 ;Initialize number to count to
totall BYTE 0 ;Total of all counted numbers
temp BYTE 0 ;Temp for loop adding
shiftme BYTE 1 ;Start of counting 2^0 so I can reach 2^6
.CODE
main PROC
;code here
increment: ;Increment label
inc temp ;Increment temp by 1
mov eax, temp
add totall, eax ;Add temp+totall and store in totall
cmp eax, num1 ;Compare for jump
jne increment ;Jump if not equal
;this part should store each value 1,2,4,8,32.. in consecutive memory locat
shiftallthethings: ;Shift label
shl shiftme, 1 ;Shifting bits to the left one
cmp shiftme, 64 ;Comparing for the jump
jne shiftallthethings ;Jump if not equal to
ret
main ENDP
END
私が理解するのに役立つ質問。
- 連続するメモリ位置に値を格納するにはどうすればよいですか?
- ジャンプとラベルの説明を正しく使用していますか?
- これらの問題を実行するには、eaxなどの特定のレジスタを使用する必要がありますか?なんで?
どんな助けでも大歓迎です、ありがとう。