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

نام تاپیک: جمع دو عدد 32 بیتی

  1. #1
    کاربر تازه وارد آواتار atenaa
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    کرج
    پست
    96

    جمع دو عدد 32 بیتی

    چه طوری می تونم 2 عدد 32 بیتی رو با هم جمع کنم؟
    یا اصلا یه عدد که از DOUBLE WORD تعریف شده رو می تونم تو رجیستر ها بریزم و بعدش با هم جمعشون کنم
    می دونم ساده است ولی منم مبتدی ام
    لطفا راهنماییم کنید

  2. #2

    نقل قول: جمع دو عدد 32 بیتی

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

    یا اینکه مثلا ثبات ax رو به سه ثبات دیگه گسترشش بدی.در این مورد کمتر میدونم.

  3. #3

    نقل قول: جمع دو عدد 32 بیتی

    d1 dd 0
    d2 dd 0
    d3 dd 0

    mov ax,word ptr d1
    add ax,word ptr d2
    mov word ptr d3,ax
    mov ax,word ptr d1+2
    adc ax,word ptr d2+2
    mov word ptr d3+2,ax

    mov

  4. #4

    نقل قول: جمع دو عدد 32 بیتی

    میشه یه مثال کامل بزنید که دو عدد را بگیرد و ...

    لطفا راهنمایی کنید.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: جمع دو عدد 32 بیتی

    سلام:
    باید بدونید که هر کدوم از رجیسترها 16 بیت یعنی 2 بایت هستند پس شما به دو رجیستر احتیاج دارید تا یه رقم 32 بیتی رو درش قرار بدید یعنی شما عددتون رو در دو قسمت در axو bx قراردهید و روش زیر رو پیاده سازی کنید.(توجه داشته باشید که ممکن است حمع عددها carry هم داشته باشن پی اونها رو هم add کنید.)

     
    number1 dd 12365
    number2 dd 73365
    result dd ?

    mov ax, word ptr number1+0
    mov bx, word ptr number2+0
    add ax, bx
    mov dx, ax

    mov ax, word ptr number1+2
    mov bx, word ptr number2+2
    adc ax, bx
    mov word ptr result+0, dx
    adc ax, bx
    mov word ptr result+2, ax

    نتیجه در resultقرار خواهد گرفت.
    اگه اشکال دستوری درش باشه اصلاحش کن و لی روش کلی همینه.
    موفق باشید
    آخرین ویرایش به وسیله tdkhakpur : شنبه 26 اردیبهشت 1388 در 18:04 عصر

  6. #6

    نقل قول: جمع دو عدد 32 بیتی

    اینی که من نوشتم و تست شده با امولاتور 8086
    sseg segment stack
    DW 32 DUP(?)
    sseg ends
    ;---------------------------------
    dseg segment
    number1 dd 1234H
    number2 dd 5678H
    number3 dd AB55H
    number4 dd 65AFH
    result dd ?
    dseg ends
    ;----------------------------------
    cseg segment
    assume cs:cseg,ds:dseg,ss:sseg
    main proc near
    mov AX,dseg
    mov DS,AX
    mov ax, number1
    mov bx, number2
    mov cx,number3
    mov dx,number4


    add bx,dx
    adc ax,cx


    add [result+2],ax
    mov result,bx

    mov ax,4c00h
    int 21h

    cseg ends
    endp main
    end main

  7. #7

    نقل قول: جمع دو عدد 32 بیتی

    ممكنه تفريق 32 بيتي با SUB رو هم بفرماييد؟




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

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