组装新手请求帮助:将一些东西放在一个数组中

时间:2016-04-10 19:51:10

标签: assembly x86 masm32 irvine32

最终,我要做的是让requestInput重复25次,并将每次迭代接收的输入存储到SINTArray中的以下索引中,但我不确定如何将某些内容放入数组中。循环我将在稍后处理,但是如何使它使requestInput的第一次迭代将接收的输入放入索引0,第二次迭代将接收的输入放入索引1,依此类推?

.data
theSINTArray BYTE 25 dup(?)              
prompt BYTE "Please enter a value: ",0


.CODE

main PROC

push    TYPE theSINTArray
push    LENGTHOF theSINTArray
push    OFFSET theSINTArray
call    requestInput
exit

main ENDP

requestInput PROC

push    edx                                        
mov     edx,OFFSET prompt                          
mov     edi,OFFSET theSINTArray                    
call    WriteString                                
call    ReadInt                                    
pop     edx                                        
ret

requestInput ENDP


END     main

我的第二次尝试基于@SepRoland的回答:

.data
theSINTArray BYTE 25 dup(?)              
prompt BYTE "Please enter a value: ",0


.CODE

main PROC

push    TYPE theSINTArray
push    LENGTHOF theSINTArray
push    OFFSET theSINTArray
call    requestInput
exit

main ENDP

requestInput PROC

Next:
push    edx                                        
mov     edx,OFFSET prompt                          
call    WriteString                                
call    ReadInt 

mov     edx, offset theSINTArray
mov     [edx], al
inc     edx
cmp     edx, offset theSINTArray + 25
jb      Next

pop     edx                                        
ret

requestInput ENDP


END     main

1 个答案:

答案 0 :(得分:1)

您将 theSINTArray 定义为字节数组,因此您需要{"type" : "foo"} {"query" : {"match": {"name": "bar"}}, "terminate_after": 5} {"type" : "bar"} {"query" : {"match": {"name": "bar"}}, "terminate_after": 5} {"type" : "baz"} {"query" : {"match": {"name": "bar"}}, "terminate_after": 5} 之类的指令来存储值,然后使用mov [edx], al指向字节大小的数组中的下一个元素。

inc edx

响应您将值分配放在 requestInput 过程中的努力。

  • 您已将 Next 标签放在 mov edx, offset theSINTArray Next: call requestInput mov [edx], al inc edx cmp edx, offset theSINTArray + 25 jb Next 指令上方。这意味着push edx必须在循环中完成。
  • 您在每次迭代时重新初始化指针,因此将始终在第一个数组元素中写入。将其移到循环上方。

这是:

pop edx