用汇编语言写一个计算阶乘的程序
时间: 2023-03-10 14:59:18 浏览: 94
可以这样:.model small
.data
num dw ?
.code
mov ax, @data
mov ds, ax
mov bx, num
mov ax, 1
mov cx, bx
.loop
mul cx
dec cx
jnz .loop
mov num, ax
mov ah, 4ch
int 21h
end
相关问题
用汇编语言写一段程序实现求阶乘
下面是用x86汇编语言写的一个简单的阶乘计算程序:
```
section .data
msg db "Enter a positive integer: ", 0
res db "Factorial of %d is: %d", 10, 0
section .bss
num resb 2
fact resw 1
section .text
global _start
_start:
; print message to enter number
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, 24
int 0x80
; read number from user
mov eax, 3
mov ebx, 0
mov ecx, num
mov edx, 2
int 0x80
; convert string to integer
mov eax, [num]
sub eax, '0'
mov ebx, 1
mov ecx, 0
mul ebx
mov ebx, eax
; calculate factorial
mov eax, ebx
mov ebx, 1
mov ecx, 1
.loop:
cmp ebx, eax
jg .done
mul ebx
inc ebx
jmp .loop
.done:
mov [fact], eax
; print result
mov eax, 4
mov ebx, 1
mov ecx, res
mov edx, 20
push dword [fact]
push dword ebx
push dword res
mov ecx, esp
int 0x80
; exit program
mov eax, 1
xor ebx, ebx
int 0x80
```
这个程序首先提示用户输入一个正整数,然后读取用户输入的数字并将其转换为整数。接下来,它使用循环计算阶乘并保存结果。最后,它将结果打印到屏幕上并退出程序。
写一个基于汇编语言的求阶乘程序
以下是 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
```
该程序首先提示用户输入一个数字,然后读取用户的输入并将其转换为整数。接下来,它使用一个循环来计算输入数字的阶乘,并将结果存储在内存中。最后,程序打印出结果并退出。