如何解决为什么我不能添加数组?
我正在尝试将值添加到数组中,然后求平均值。 但是我注意到当我求和时,数组中的值不会超过256。
SECTION .data ;data section
array: db 15,15,15
SIZE EQU 20
;sum all positions of vector,length of 20
SECTION .text ;code section
global _start
_start:
xor bl,bl
xor ecx,ecx
jmp for_cond
for_body:
mov al,[array+ECX]
add bl,al
inc ecx
for_cond:
cmp ecx,SIZE
jl for_body
mov eax,1 ; exit command to kernel
int 0x80 ; interrupt 80 hex,call kernel
解决方法
您尝试将整个和添加到phi = qubits[0]
for i in range(1,len(qubits)):
phi = phi + qubits[i]
寄存器中-寄存器只有8位宽,因此最多只能计数255。您最好将主循环更改为
BL
这将实现使用最多可计数65535的16位寄存器。for_body:
movzx ax,byte [array+ECX]
add bx,ax
inc ecx
指令会将您的8位值从存储器扩展为MOVZX
中的16位值。然后,您可以使用类似AX
的16位寄存器,以便按元素数量(保留在BX
或常量CX
中)进行最终除法。
注意:
如果您使用带符号的数字而不是无符号的数字,则必须将SIZE
替换为MOVZX
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。