汇编语言(订购者)

时间:2016-03-09 11:39:32

标签: arrays assembly storage inventory

我正在努力学习汇编语言。

我真的需要帮助才能在数组中存储不同的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

我的代码确实存在问题。

1 个答案:

答案 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"