您好,我是组装新手,我正在努力让一个由两部分组成的程序工作。我正在为这个 x86 程序集使用 Visual Studio。
第 I 部分)我的第一个目标是数到 13,并在途中添加每个值。例如,0+1+2+3...+13=91。我想总共存储该总数。
第 2 部分)其次,我想用 2 的幂从 2^0 数到 2^6。例如,0、1、2、4、8、32、64。我想*我正在这样做,但我并没有随时存储每个值。我想将这些存储在连续的内存位置。
到目前为止,我有这个,
.586
.MODEL FLAT
.STACK 4096
.DATA
num1 BYTE 13 ;Initialize number to count to
totall BYTE 0 ;Total of all counted numbers
temp BYTE 0 ;Temp for loop adding
shiftme BYTE 1 ;Start of counting 2^0 so I can reach 2^6
.CODE
main PROC
;code here
increment: ;Increment label
inc temp ;Increment temp by 1
mov eax, temp
add totall, eax ;Add temp+totall and store in totall
cmp eax, num1 ;Compare for jump
jne increment ;Jump if not equal
;this part should store each value 1,2,4,8,32.. in consecutive memory locat
shiftallthethings: ;Shift label
shl shiftme, 1 ;Shifting bits to the left one
cmp shiftme, 64 ;Comparing for the jump
jne shiftallthethings ;Jump if not equal to
ret
main ENDP
END
帮助我理解的问题。
- 如何将值存储在连续的内存位置?
- 我是否正确使用了跳转和标签指令?
- 我是否需要使用像 eax 这样的特定寄存器来执行这些问题?为什么?
非常感谢任何帮助,谢谢。