我想把数字放在一个长度为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中,这也不起作用。
如何每次将索引添加到下一个数组的值?
发布于 2017-05-21 14:51:50
myArray = 0,1,2,3,4,5,6,7,8,9。
这些是您希望数组包含的数字。但是,由于将索引变量(用于索引和存储的)初始化为1(使用index db 1),这将导致另一个结果。
只需使用以下内容设置索引:
index db 0还有另一个理由把它设成这样!在表示法[intArray+index]中,index部件表示为数组中的偏移量。偏移量总是基于零的数量。按照您编写程序的方式,它将在数组后面写入第十个值。
添加intArray+index,al;下面是问题所在
你说得对,这就是问题所在。有些汇编程序不会编译这一点,而其他汇编程序只会添加这两个变量的地址。都不适合你的目的。您需要的是将索引变量的内容放在寄存器中,并使用操作数的组合。
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的情况下继续运行。
当然,您完全可以不使用索引变量来编写这个程序。
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如果数组最初填充了零,则可以替换:
mov [intArray+bx], bl ;Give the BX-th array element the value BL通过以下方式:
add [intArray+bx], bl ;Give the BX-th array element the value BL要记住,只有在数组预先填充了0时才能工作!
https://stackoverflow.com/questions/44079893
复制相似问题