نمایش نتایج 1 تا 8 از 8

نام تاپیک: فاکتوریل

  1. #1

    فاکتوریل

    سلام به همه دوستان

    فوری فوری فوری

    mov ax,0
    mov al,x
    mov cl,al
    mov al,0
    mov al,1
    l1:mul cx
    mov ch,0
    jcxz p1
    loop l1:
    p1:

  2. #2

    نقل قول: فاکتوریل

    این تکه کد اسمبلی تا 5 فاکتوریل را محاسبه میکنه
    لطف کنید این تکه کد را واسه ما ترمیم کنید

  3. #3

    نقل قول: فاکتوریل

    لطف کنید این تکه کد را واسه ما ترمیم کنید
    منظورتون از ترمیم چیه ؟
    ضمنا این برنامه تا 8 فاکتوریل رو درست محاسبه میکنه که بیشتر بخواین به این روش نمیشه

  4. #4

    نقل قول: فاکتوریل

    میشه یکم کمکم کنید و سورس برنامه فاکتوریل واسه دانلود بگذارید

  5. #5

    نقل قول: فاکتوریل



    mEnter macro
    mov dl,13
    mov ah,2
    int 21h
    mov dl,10
    int 21h
    endm

    datasg segment
    pkey db "press any key...$"
    num db 6 dup(?)
    x db ?
    ends

    stacksg segment
    dw 128 dup(0)
    ends

    codesg segment
    assume cs:codesg, ds:datasg, es:datasg, ss:stacksg
    start:
    main proc far
    mov ax, datasg
    mov ds, ax
    mov es, ax


    lea bx,num
    call getnum
    call asctobin
    mov x,al

    xor cx,cx
    mov ax,0
    mov al,x
    mov cl,al
    mov al,0
    mov al,1
    l1:mul cx
    mov ch,0
    jcxz p1
    loop l1:
    p1:



    lea bx,num
    call bintoasc

    mEnter

    lea dx,num
    mov ah,9
    int 21h

    mEnter

    lea dx, pkey
    mov ah, 9
    int 21h ; output string at ds:dx

    ; wait for any key....
    mov ah, 1
    int 21h

    mov ax, 4c00h ; exit to operating system.
    int 21h

    main endp

    asctobin proc near

    mov si,10
    mov ax,0
    next: mul si
    mov dl,[bx]
    inc bx
    sub dl,48
    add ax,dx
    cmp byte ptr[bx],13
    jne next

    ret
    asctobin endp


    bintoasc proc near

    mov si,10
    xor cx,cx
    next2: xor dx,dx
    div si
    push dx
    inc cx
    or ax,ax
    jnz next2
    l_1: pop dx
    add dl,48
    mov [bx],dl
    inc bx
    loop l_1


    mov byte ptr[bx],'$'

    ret
    bintoasc endp


    getnum proc near
    push ax
    push bx
    push dx
    again: mov ah,8
    int 21h
    cmp al,13
    je finish
    cmp al,'0'
    jl again
    cmp al,'9'
    jg again
    mov [bx],al
    inc bx
    mov dl,al
    mov ah,2
    int 21h
    jmp again
    finish:mov [bx],al
    pop dx
    pop bx
    pop ax
    ret
    getnum endp

    ends
    end start ; set entry point and stop the assembler.


    موفق باشی

  6. #6

    نقل قول: فاکتوریل

    تشکر فراوان را از شما دارم دوست عزیز

  7. #7

    نقل قول: فاکتوریل

    میشه اون تبدیل مبنا را را یکم توضیح دهید
    تشکر

  8. #8

    نقل قول: فاکتوریل

    نقل قول نوشته شده توسط r_s1389@yahoo.com مشاهده تاپیک
    میشه اون تبدیل مبنا را را یکم توضیح دهید
    تشکر
    قبلا بارها توضیح داده شده در تالار(فروم) جستجو کنید
    محاسبات:برای محاسبات ما نیاز داریم بر روی اعداد عملیات را انجام دهیم بدلیل سرعت بیشتر و استفاده بهینه تر حافظه(بر روی کد اسکی هم میشود محاسبات را انجام داد اما نیاز به حافظه بیشتر و سرعت پایین تر دارد)
    نمایش:برای نمایش روی نمایشگر و چاپگر به صورت کد های اسکی میباشد

    حال برای راحتی دو پروسیجر برای این کار نوشته شده که این تبدیل ها را انجام دهیم

    پروسیجر bintoasc عدد رو به صورت متوالی بر تقسیم میکنه تا برابر با صفر بشه با این کار ما اعداد رو جدا کردیم کافیه با 48 جمع کنیم هر رقم رو تا به صورت اسکی در بیاد تا بتوان در چاپگر یا مانیتور نمایش داد

    پروسیجر asctobin هر کاراکتر رو از 48 کم میکنیم تا به عدد تبدیل بشه و بعد به صورت ضرب های متوالی بر 10 ادامه میدهیم با شرط پایان 13 اسکی که همان کد اینتر می باشد که هنگام دادن ورودی در بافر ذخیره شده که انتهای ورودی را مشخص میکند


    موفق باشید

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •