Assembly 在8087 nasm编程中计算平均值?
我使用下面的代码来计算nasm中的平均值Assembly 在8087 nasm编程中计算平均值?,assembly,nasm,Assembly,Nasm,我使用下面的代码来计算nasm中的平均值 section .data arr : dq 10000,10000,20000,10000,10000 cnt : dq 5 dec : dq 100000000 section .bss mean rest 1 section .text global _start _start: finit fldz mov rsi,arr mov cl,05 addloop: fadd qword[rsi] add rsi,8 dec cl jnz
section .data
arr : dq 10000,10000,20000,10000,10000
cnt : dq 5
dec : dq 100000000
section .bss
mean rest 1
section .text
global _start
_start:
finit
fldz
mov rsi,arr
mov cl,05
addloop:
fadd qword[rsi]
add rsi,8
dec cl
jnz addloop
fld qword[cnt]
fdiv ST1,ST0
fld qword[dec]
fmul ST0,ST2
fbstp [mean]
mov r15,[mean]
exit:
mov rax,60
mov rdi,0
syscall
但当我通过gdb检查r15时,它显示为0。当我在加法循环后检查r15时
(从堆栈中弹出并移动到r15)它仍然显示0。请告诉我我做错了什么。在nasm中,
dq
可用于存储四字整数或浮点,但格式不同。您已经将dq
常量表示为整数,汇编程序可能会将其存储为整数。这与将它们存储为浮点不同。试试看,arr:dq 1.e4,1.e4,2.e4,1.e4,1.e4
,和cnt:5.0
,和dec:dq 1.e8
非常感谢。它起作用了