我正在努力学习汇编语言。
我真的需要帮助才能在数组中存储不同的10个项目
我想构建一个程序来接受来自10个选项的项目,它将存储它。
这10个项目有不同的价值。
实施例 第1项= 10美元 第2项= 4 $
因此,当用户尝试选择Item1和Item2时,它将显示 这两个项目的总和。
如果有人可以分享他/她自己的代码,可以存储10件物品的总和,我将很高兴。感谢
这是我的代码:
_start:
mov eax,3 ;number bytes to be summed
mov ebx,0 ;EBX will store the sum
mov ecx, x ;ECX will point to the current element to be summed
top: add ebx, [ecx]
add ecx,1 ;move pointer to next element
dec eax ;decrement counter
jnz top ;if counter not 0, then loop again
done:
add ebx, '0'
mov [sum], ebx ;done, store result in "sum"
display:
mov edx,1 ;message length
mov ecx, sum ;message to write
mov ebx, 1 ;file descriptor (stdout)
mov eax, 4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax, 1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
global x
x:
db 2
db 4
db 3
sum:
db 0
我的代码确实存在问题。
答案 0 :(得分:1)
x: db 2 db 4 db 3 sum: db 0
由于您已将所有变量定义为 byte 类型,因此必须将它们作为字节处理!您正在程序中阅读和撰写 dwords 。
这可能没关系:
top: add bl, [ecx]
add ecx, 1 ;move pointer to next element
dec eax ;decrement counter
jnz top ;if counter not 0, then loop again
done:
add bl, '0'
mov [sum], bl ;done, store result in "sum"