نمایش نتایج: از شماره 1 تا 1 از مجموع 1
  1. #1
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    37
    ارسال ها
    1,308
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37


    آيا اين پست براي شما سودمند بود؟ بله | خیر

    محاسبه عدد کامل در اسمبلی

    سلام به همگی .
    چون اخیرا ازم خواسته شده بود برنامه عدد کامل رو به زبان اسمبلی بنویسم . من هم کد رو برای استفاده سایرین اینجا قرار میدم .
    در این کد من تا جای ممکن سعی کردم کار خیلی راحت و تازه کارانه باشه تا ضعیف ترین بچه ها در اسمبلی هم بتونن بخوبی با کد ارتباط برقرار کنن .

    در کد زیر من سعی کردم قدم هایی لازم برای نوشتن یه برنامه اسمبلی رو نشون بدم . به این صورت که اول از یه شبه کد بزبان سی استفاده کردم و کم کم کم کم اون رو تبدیل به کد معادل زبان اسمبلیش کردم . دلیل استفاده از زبان سی هم بخاطر شباهت بسیار نزدیک اون به زبان اسمبلی هست و راحتی فکر کردن .

    سورس کد به اضافه فایل اجرایی و تمامی فایلهای مورد نیاز برای کامپایل و اجرای برنامه هم در فایل ضیمیمه قرار داده شده .
    امیدوارم مورد استفاده هرکسی که نیاز داره قرار بگیره
    بصورت پیشفرض این برنامه میاد اعداد کامل تا 10000 رو نمایش میده . شما برای اینکه هر عددی که دلتون خواست رو وارد کنید و اعداد کامل تا اون عدد مورد نظر شما رو نمایش بده کافیه عدد مورد نظرتون رو از ورودی دریافت کنید و بعد بجای اون عدد 10000 قرار بدید همین .

    در پناه حق :

    ; IN THE NAME OF ALLAH , THE MOST COMPASSIONATE THE MOST MERCIFUL.
    ;Programmer: Seyyed Hossein Hasan Pour
    ;Program : Prefect Numbers in Assembly
    ;Ustmb.ir

    INCLUDE IO.H

    PRINT MACRO S

    MOV BX,S
    ITOA C,BX
    OUTPUT C

    ENDM

    GETCH MACRO
    MOV AH,07
    INT 21H
    ENDM

    DATA SEGMENT
    MESSAGE1 DB 'ENTER A NUMBER',10,13,0

    C DB 8 DUP(0),0

    SUM DW 0
    I DW 0
    J DW 0


    DATA ENDS


    CODE SEGMENT

    ASSUME CS:CODE , DS:DATA


    OUTPUT_IT:
    MOV BX,SUM
    ITOA C,BX
    OUTPUT C
    RET

    START:
    MOV AX,DATA
    MOV DS,AX


    ; while ( i = 5 ; i <100(NUM) ; i++)
    ; {

    ; sum = 0;

    ; while( j = 1 ; j < i ; j++)
    ; {
    ; if ( i%j == 0)
    ; {
    ; sum = sum + j;
    ; }
    ; if ( sum == i)
    ; {
    ; print ( sum );
    ; }
    ; }

    ; }




    ; i = 5
    ; while ( i <100(NUM) ; i++)
    ; {
    ; sum = 0;

    ; j = 1
    ; while( j < i ; j++)
    ; {
    ; if ( i%j == 0)
    ; {
    ; sum = sum + j;
    ; }
    ; if ( sum == i)
    ; {
    ; print ( sum );
    ; }
    ; }

    ; }




    ; i = 5
    ; while ( i <100 )
    ; {

    ; sum = 0;

    ; j = 1
    ; while( j < i )
    ; {
    ; if ( i%j == 0)
    ; {
    ; sum = sum + j;
    ; }
    ; if ( sum == i)
    ; {
    ; print ( sum );
    ; }
    ; j++
    ; }
    ; i++;
    ; }




    ; i = 5
    ; while ( i <100 ) : CMP i < 100
    ; { JAE EXIT


    ; sum = 0 MOV SUM,0;

    ; j = 1 MOV J,1;
    ; while( j < i ) while2: CMP j<i
    ; { JAE NEXTI
    ; {
    ; MOV AX,i
    ; DIV J
    ; CMP DX,0
    ; JNZ NEXTJ
    ; ADD sum,j
    ; }
    ; if ( i%j == 0)
    ; {
    ; sum = sum + j;
    ; }

    ; NEXTJ:
    ; j++
    ; }

    ; NEXTI:
    ; NEXTCOND:
    ; {
    ; CMP sum,i
    ; JNE INC_I
    ; PRINT sum
    ; }
    ; if ( sum == i)
    ; {
    ; print ( sum );
    ; }

    ;INC_I:
    ;i++;
    ; }



    MOV I , 5
    while_:
    CMP I , 10000
    JAE EXIT

    MOV SUM , 0
    MOV J , 1

    while_2:
    MOV sI,I
    CMP j,sI
    JAE NEXTI

    ;i%j == 0
    MOV AX,I
    CWD
    IDiv J
    CMP DX,0
    JNZ NEXTJ
    MOV DI,J
    ADD sum,DI
    NEXTJ:
    INC J
    jmp while_2

    NEXTI:
    ;NEXTCHECK

    MOV sI,I
    CMP sum,sI
    JNE inc_i
    ;PRINT SUM
    CALL OUTPUT_IT

    INC_I:
    INC I
    jmp while_;

    EXIT:


    GETCH
    MOV AH,4CH
    INT 21H

    CODE ENDS
    END START








    فایل های پیوست شده
    توکل بخدا
    http://DeepLearning.ir
    اولین و تنها مرجع یادگیری عمیق ایران


    هرکس از ظن خود شد یار من
    از درون من نجست اسرار من




 

 

کاربران برچسب خورده در این موضوع

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

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


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 12:33 AM بر حسب GMT +4 می باشد.