首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >装配x86用循环将值放入数组中

装配x86用循环将值放入数组中
EN

Stack Overflow用户
提问于 2017-05-19 22:33:38
回答 1查看 31.2K关注 0票数 2

我想把数字放在一个长度为10的数组中,但每个数字比最后一个数字大1。意思是:myArray = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

我试过这样做:

理想 模型小 堆栈100小时数据采集 intArray db 10 dup (0) 索引db 1 CODESEG启动: mov,@DATA mov ds,ax loopArray: mov al,指数 添加intArray+index,al;下面是问题所在 inc指数 “议定书”/“公约”缔约方会议指数,11 jb loopArray 出口: mov ax,4c00h int 21h 结束启动

但是我不能将索引添加到intArray +索引中,所以我尝试将它添加到intArray+al中,这也不起作用。

如何每次将索引添加到下一个数组的值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-21 14:51:50

myArray = 0,1,2,3,4,5,6,7,8,9。

这些是您希望数组包含的数字。但是,由于将索引变量(用于索引和存储的)初始化为1(使用index db 1),这将导致另一个结果。

只需使用以下内容设置索引:

代码语言:javascript
运行
复制
index db 0

还有另一个理由把它设成这样!在表示法[intArray+index]中,index部件表示为数组中的偏移量。偏移量总是基于零的数量。按照您编写程序的方式,它将在数组后面写入第十个值。

添加intArray+index,al;下面是问题所在

你说得对,这就是问题所在。有些汇编程序不会编译这一点,而其他汇编程序只会添加这两个变量的地址。都不适合你的目的。您需要的是将索引变量的内容放在寄存器中,并使用操作数的组合。

代码语言:javascript
运行
复制
    intArray db 10 dup (0)
    index    db 0
    ...
loopArray:
    movzx    bx, [index]
    mov      [intArray+bx], bl ;Give the BX-th array element the value BL
    inc      [index]
    cmp      [index], 10
    jb       loopArray

使用此代码,索引将从0开始,然后循环将在索引小于10的情况下继续运行。

当然,您完全可以不使用索引变量来编写这个程序。

代码语言:javascript
运行
复制
    intArray db 10 dup (0)
    ...
    xor      bx, bx            ;This make the 'index' = 0
loopArray:
    mov      [intArray+bx], bl ;Give the BX-th array element the value BL
    inc      bx
    cmp      bx, 10
    jb       loopArray

如果数组最初填充了零,则可以替换:

代码语言:javascript
运行
复制
    mov      [intArray+bx], bl ;Give the BX-th array element the value BL

通过以下方式:

代码语言:javascript
运行
复制
    add      [intArray+bx], bl ;Give the BX-th array element the value BL

要记住,只有在数组预先填充了0时才能工作!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44079893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档