| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1816 人关注过本帖
标题:请用nasm编写一段计算pi值的code.
只看楼主 加入收藏
shrluxiao
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2023-6-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
请用nasm编写一段计算pi值的code.
使用莱布尼茨算法即可。
nasm+ld编译器。
搜索更多相关主题的帖子: nasm 编译器 code 计算 编写 
2023-07-03 13:47
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:340
专家分:2482
注 册:2016-5-15
收藏
得分:20 
程序代码:
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

2023-07-04 04:50
shrluxiao
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2023-6-29
收藏
得分:0 
以下是引用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]?
2023-07-05 06:21
快速回复:请用nasm编写一段计算pi值的code.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032747 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved