ورود

نسخه کامل مشاهده نسخه کامل : برنامه فاكتوريل به زبان اسمبلي



msaeedd
30-10-2010, 09:30
سلام كسي برنامه فاكتوريل به زبان اسمبلي رو داره؟
فوري فوري
لازم دارم

AQOUA
30-10-2010, 11:05
با سلام



# The same function in C would look something like this
# int fact(int n)
# {
# if (n < 1)
# return (1);
# else
# return (n * fact(n - 1));
# }



.data

input_request: .asciiz "Input the first operand: "
output1: .asciiz "The result is "
newline: .asciiz "\n"

.align 2

.globl main

.text

main:
# request input from user
la $a0, input_request
li $v0, 4
syscall

# retrieve input from user
li $v0, 5
syscall

# store user input as first operand
move $a0, $v0

# calculate factorial
jal fact

# store result
move $t0, $v0

# display result
la $a0, output1
li $v0, 4
syscall

move $a0, $t0
li $v0, 1
syscall

la $a0, newline
li $v0, 4
syscall

# exit program
li $v0, 10
syscall

fact:
# make room on stack for $ra and $a0
move $fp, $sp
addi $sp, $sp, -8

# store both those registers on the stack
sw $a0, 0($fp)
sw $ra, -4($fp)

# recursive condition
bgtz $a0, fact_L1
li $v0, 1
j fact_return

# recursive calls
fact_L1:
addi $a0, $a0, -1
jal fact
addi $fp, $sp, 8
lw $a0, 0($fp)
mult $a0, $v0
mflo $v0
j fact_return

# return sequence
fact_return:
# restore $ra and $a0 registers
lw $ra, -4($fp)
lw $a0, 0($fp)

move $sp, $fp

jr $ra


با تشکر

msaeedd
30-10-2010, 12:42
خيلي ممنون ولي اين اسمبلي نيست كه؟

AQOUA
30-10-2010, 13:45
خيلي ممنون ولي اين اسمبلي نيست كه؟

کاربرد زبان اسمبلی در زبان c و شباهت توابع!

---------- Post added at 01:45 PM ---------- Previous post was at 01:42 PM ----------

این یکی به زبان اسمبلی :


print macro msg

mov dx,offset msg

mov ah,09h

int 21h

endm



data segment

msg1 db "Enter the number:$"

msg2 db 10,13,"Factorial is:$"

data ends



code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

print msg1

mov ah,01h

int 21h

sub al,48

mov dl,al

mov ax,1



l:mul dl

dec dl

cmp dl,0



JNZ l

add ax,48

mov dx,ax

mov ah,02h

int 21h

mov ah,4ch

int 21h

code ends

end start


با تشکر