صفحه اول آخرین ارسال ها جستجو بایگانی راهنما تقویم تماس با ما
مـحل تبلیــغات 

 

مـحل اخبــار و اطلاعیــه ها

«درصـورت بـروز هـرگـونه مشــکلات بـراي ســايت ... جـهت اطـاعات به وبــلاگ پشــتيبـان سـايت مـراجعـه فـرماييد»

«درخــواست مـديـريـت تـوسط شـما کـاربـران عـزيز و گــرامي»

«آپـلود سـنتر پـرقدرت بـا حجم آپـلود بـالاي فـايل هـاي شـما»

مــشاهـدۀ ســایـت به زبــان دیــگر

قدیمی 23 Jan 2011   #1
GodMaster
Administrator
 
GodMaster آواتار ها
 
تاریخ عضویت: Dec 2010
نوشته ها: 1,498
Thanks: 76
Thanked 6 Times in 5 Posts
پیش فرض محاسبه میانگین چند عدد در زبان اسمبلی

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

کد:
.MODEL      SMALL
.DATA
    msg1    DB "Please enter a number (Just ENTER for Exit) :",13,10,"$"
    msg2    DB 13,10,"Average = $"
    msg3    DB 13,10,"Press any key to continue.",13,10,"$"
    number  DB 5
            DB ?
            DB 5 DUP (?)
.CODE
.STARTUP
    MOV     AX, 0
    MOV     CX, 0
loop_1:
    PUSH    AX
    MOV     AH, 9
    LEA     DX, msg1
    INT     21h
    POP     AX
    CALL    get_number
    CMP     BX, -1
    JE      next_1
    INC     CX
    ADD     AX, BX
    JMP     loop_1
next_1:
    CMP     CX, 0
    JZ      next_2
    PUSH    AX
    MOV     AH, 9
    LEA     DX, msg2
    INT     21h
    POP     AX
    MOV     DX, 0
    DIV     CX
    CALL    print_ax
    CMP     DX, 0
    JZ      next_2
    MOV     AX, 100
    MUL     DX
    DIV     CX
    MOV     DL, 10
    DIV     DL
    ADD     AX, "00"
    MOV     CX, AX
    MOV     AH, 2
    MOV     DL, "."
    INT     21h
    MOV     DL, CL
    INT     21h
    CMP     CH, "0"
    JE      next_2    
    MOV     DL, CH
    INT     21h
next_2:
    MOV     AH, 9
    LEA     DX, msg3
    INT     21h
    MOV     AH, 8
    INT     21h
.EXIT
get_number:
    PUSH    AX
    PUSH    CX
    PUSH    DX
    MOV     AH, 0ah
    LEA     DX, number
    INT     21h
    MOV     BX, -1
    MOV     CL, number[1]
    CMP     CL, 0
    JZ      next_4
    MOV     AH, 2
    MOV     DL, 13
    INT     21h
    MOV     DL, 10
    INT     21h
    MOV     CH, 0
    LEA     SI, number[2]
    MOV     DI, 10
    MOV     BX, 0
loop_2:
    MOV     AL, [SI]
    CMP     AL, "0"
    JB      next_3
    CMP     AL, "9"
    JA      next_3
    SUB     AL, "0"
    MOV     AH, 0
    XCHG    AX, BX
    MUL     DI
    ADD     BX, AX
next_3:
    INC     SI
    LOOP    loop_2
next_4:
    POP     DX
    POP     CX
    POP     AX
    RET
print_ax:
    PUSH    AX
    PUSH    BX
    PUSH    CX
    PUSH    DX
    MOV     CX, 0
    MOV     BX, 10
loop_3:
    MOV     DX, 0
    DIV     BX
    PUSH    DX
    INC     CX
    CMP     AX, 0
    JNE     loop_3
    MOV     AH, 2
loop_4:
    POP     DX
    ADD     DL, "0"
    INT     21H
    LOOP    loop_4
    POP     DX
    POP     CX
    POP     BX
    POP     AX    
    RET
.STACK
END
__________________
سوالات خود را در اينجا مطرح كنيد تا در كمترين زمان ممكن به پاسخ خود برسيد
GodMaster آنلاین نیست.   پاسخ با نقل قول

5 Lastest Threads by GodMaster
Thread Forum Last Poster Replies Views Last Post
قیمت خودروهای وارداتی - بهمن 92 قيمت اتومبيل GodMaster 0 8255 01 Feb 2014 00:17
قیمت مدلهای پروتون – زاگرس خودرو - بهمن 92 قيمت اتومبيل GodMaster 0 5992 01 Feb 2014 00:16
قیمت خودروهای هوندا – فامیلی موتور - بهمن 92 قيمت اتومبيل GodMaster 0 5862 01 Feb 2014 00:16
قیمت خودروهای ولوو – افراموتور - بهمن 92 قيمت اتومبيل GodMaster 0 5592 01 Feb 2014 00:15
قیمت خودروهای آلفارومئو – آلفاموتور - بهمن 92 قيمت اتومبيل GodMaster 0 5272 01 Feb 2014 00:14

پاسخ


کاربران در حال دیدن موضوع: 1 نفر (0 عضو و 1 مهمان)
 
ابزارهای موضوع جستجو در موضوع
جستجو در موضوع:

جستجوی پیشرفته
نحوه نمایش

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

BB code فعال است
شکلک ها فعال است
[IMG] فعال است
کد HTML غیر فعال است

انتخاب سریع یک انجمن


اکنون ساعت 08:47 برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد.