以下是引用Valenciax在2023-7-4 04:50:13的发言:
section .data
pi db 0
section .text
global _start
_start:
; 设置循环次数
mov ecx, 1000000
; 初始化计算变量
mov ebx, 1
mov edx, 0
; 循环计算
loop_start:
; 根据莱布尼茨公式计算
mov eax, ebx
shl eax, 1
dec eax
mov edi, eax
mov eax, ebx
shl eax, 1
inc eax
mov esi, eax
mov eax, 4
mov edx, 0
mov ebx, 1
div esi
mov eax, 4
mov edx, 0
mov ebx, 1
div edi
sub eax, edx
; 更新计算变量
add edx, ebx
mov ebx, edx
; 更新pi值
movzx eax, al
add dword [pi], eax
; 判断循环是否结束
dec ecx
jnz loop_start
; 输出pi值
mov eax, 4
mov ebx, 1
mov ecx, pi
mov edx, 4
int 0x80
; 退出程序
mov eax, 1
xor ebx, ebx
int 0x80
nasm+wsl ubuntu编译后不出结果,之前试过别的code。请问问题是在?得用dword ptr [pi]?