如何在nasm中请求输入

问题描述 投票:0回答:1

;使用函数递归求阶乘 3 ;事实 (n) = n * 事实 (n-1)(n > 0

节.text 全局_开始

_开始:

mov bx, 3 ; 3 是阶乘极限 调用 proc_fact 添加斧头,30小时 mov [事实], ax

mov edx, len;打印消息 mov ecx, 消息 移动 ebx, 1 移动 eax, 4 持续 80 小时

mov edx, 1 ;打印阶乘 mov ecx,事实 移动 ebx, 1 移动 eax, 4 持续 80 小时

mov eax, 1 ;出口 持续 80 小时

过程事实: CMP BL,1 ;计算下一个数字的阶乘的循环 jg do_计算 移动斧头,1 ret

计算: 十二月 BL ;将 bl 减 1 以用于下一个数字 (n-1) 调用 proc_fact ;处理下一个阶乘 公司 BL ;将 bl 加 1 以用于下一个数字 (n) 穆尔 BL ;斧头 = 阿尔 * BL ret

.data 部分 msg db“阶乘 3 是:” len equ $ - 味精

.bss 节 事实 resb 1

我什么也没尝试过,因为我在这方面非常糟糕,所以一些专业将不胜感激。

nasm
1个回答
0
投票

您似乎正在为 32 位 x86 Linux 使用 nasm。在这种情况下,您可能希望使用 read 系统调用从 STDIN 加载输入。

代码会是这样的:

mov eax, 3     ; read syscall number
mov ebx, 0     ; STDIN file descriptor
mov ecx, fact  ; buffer to store input
mov edx, 1     ; number of bytes to load

在此示例中,数字被加载到

fact
中,但您可能想在
.bss
中为其创建一个单独的缓冲区。

© www.soinside.com 2019 - 2024. All rights reserved.