【发布时间】:2013-11-06 14:52:47
【问题描述】:
我正在尝试学习汇编语言。这是我尝试运行的第一个程序。我遇到的问题是 arr 正在被加载并且 instisd 它加载了 1,2 权利,但随后它将 12 作为 c 加载。然后当我添加它时,它会添加字母+数字并给出错误的答案。谢谢你的帮助。
org $10000
clr.l d0 ; i = 0, we use the .l since i takes part in .l calculation
clr.l d3 ; sum = 0 (temporarily sum lives in d3)
move.w n, d1 ; d1 = n
loop cmp.w d1, d0
bge endloop ; if (i >= n) goto endloop
movea.l #arr, a0 ; a0 = &arr[0]
adda.l d0, a0
adda.l d0, a0 ; a0 = &arr[0] + 2 x i
add.w (a0), d3 ; d3 = d3 + arr[i]
addq.w #1, d0 ; i = i + 1
bra loop ; repeat loop
endloop
move.w d3, sum ; write the sum into memory
org $11000
arr dc.w 1, 2, 12, 4, 21
n dc.w 5
sum dc.w 0
P.S 我明白十进制 12 是十六进制 C 我真的需要知道如何使用十进制数而不是十六进制数
【问题讨论】:
-
你用的是什么汇编程序?
-
“给出错误答案”是什么意思?十进制和十六进制是文本表示,在对数值进行算术运算时没有相关性。
-
这是错误的,因为它正在添加十六进制,我需要它来添加十进制
-
没有区别。数字完全相同。仅当您以文本形式查看数字时,基数才重要。
-
"好吧,那么为什么当我运行它时我得到 1+2+12=5"。如果我在
n设置为 3(添加 1、2 和 12)的情况下运行它,我会得到D3= 0x0000000F,即 15,这是正确的结果。