汇编语言求50以内的阶乘
时间: 2023-07-11 17:27:02 浏览: 99
Windows32位汇编语言课程设计求大数阶乘
5星 · 资源好评率100%
下面是汇编语言实现50以内的阶乘的代码示例:
```
section .data
msg db 'Enter a number between 0 and 50: ', 0
res db 'The factorial is: ', 0
nl db 0Ah, 0Dh, 0
section .bss
num resb 1
section .text
global _start
_start:
; 输出提示信息,等待用户输入
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, 27
int 80h
; 读取用户输入的数字
mov eax, 3
mov ebx, 0
mov ecx, num
mov edx, 1
int 80h
; 将ASCII码转换为数字
sub byte [num], 48
; 计算阶乘
mov edi, 1
mov ecx, [num]
cmp ecx, 0
je print
calc:
imul edi, ecx
dec ecx
cmp ecx, 0
jne calc
print:
; 输出结果
mov eax, 4
mov ebx, 1
mov ecx, res
mov edx, 18
int 80h
; 输出阶乘结果
mov eax, 4
mov ebx, 1
mov ecx, edi
call print_num
; 输出换行符
mov eax, 4
mov ebx, 1
mov ecx, nl
mov edx, 2
int 80h
exit:
; 退出程序
mov eax, 1
xor ebx, ebx
int 80h
print_num:
; 将数字转换为ASCII码,并输出
push ebx
push ecx
push edx
mov ebx, 10
xor edx, edx
loop:
xor eax, eax
div ebx
add dl, 48
push edx
cmp eax, 0
jne loop
pop edx
mov ecx, esp
sub ecx, edx
mov eax, 4
mov ebx, 1
mov edx, edx
int 80h
add esp, edx
pop edx
pop ecx
pop ebx
ret
```
使用方法:
1. 在 Linux 系统下,使用汇编语言编译器如 NASM 进行编译
```
nasm -f elf32 factorial.asm -o factorial.o
ld -m elf_i386 factorial.o -o factorial
```
2. 运行编译后的可执行文件
```
./factorial
```
3. 输入数字,程序将输出该数字的阶乘。
阅读全文