写一个基于汇编语言的求阶乘程序
时间: 2024-05-04 20:21:39 浏览: 86
以下是 x86 架构汇编语言实现的求阶乘程序:
```
section .data
msg db "Enter a number to find its factorial: "
len equ $ - msg
nl db 10, 0
res db "Factorial is: "
len1 equ $ - res
section .bss
num resw 1
fact resw 1
section .text
global _start
_start:
; Print message to take input
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, len
int 80h
; Read user input
mov eax, 3
mov ebx, 0
mov ecx, num
mov edx, 2
int 80h
; Convert input to integer
mov ebx, [num]
mov ecx, ebx
mov eax, 1
cmp ebx, 0
je endprog
; Calculate factorial
factloop:
imul eax, ebx
dec ebx
cmp ebx, 0
jg factloop
; Store result in memory
mov [fact], eax
; Print result
mov eax, 4
mov ebx, 1
mov ecx, res
mov edx, len1
int 80h
mov eax, 4
mov ebx, 1
mov ecx, fact
mov edx, 4
int 80h
endprog:
; Exit program
mov eax, 1
xor ebx, ebx
int 80h
```
该程序首先提示用户输入一个数字,然后读取用户的输入并将其转换为整数。接下来,它使用一个循环来计算输入数字的阶乘,并将结果存储在内存中。最后,程序打印出结果并退出。
阅读全文