چه طوری می تونم 2 عدد 32 بیتی رو با هم جمع کنم؟
یا اصلا یه عدد که از DOUBLE WORD تعریف شده رو می تونم تو رجیستر ها بریزم و بعدش با هم جمعشون کنم
می دونم ساده است ولی منم مبتدی ام
لطفا راهنماییم کنید
چه طوری می تونم 2 عدد 32 بیتی رو با هم جمع کنم؟
یا اصلا یه عدد که از DOUBLE WORD تعریف شده رو می تونم تو رجیستر ها بریزم و بعدش با هم جمعشون کنم
می دونم ساده است ولی منم مبتدی ام
لطفا راهنماییم کنید
فکرکنم فکرکنم فکرکنم که باید اون رو به چهار عدد هشت بیتی تقسیم کنی و بعد این اعداد رو باهم جمع کنی.
یعنی برنامه از کاربر چهار بار عدد هشت بیتی رو بگیره و هر باز با دستور adc رقم نقلی قبلی رو هم حساب کنه.
یا اینکه مثلا ثبات ax رو به سه ثبات دیگه گسترشش بدی.در این مورد کمتر میدونم.
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
میشه یه مثال کامل بزنید که دو عدد را بگیرد و ...
لطفا راهنمایی کنید.
سلام:
باید بدونید که هر کدوم از رجیسترها 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 در 19:04 عصر
اینی که من نوشتم و تست شده با امولاتور 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
ممكنه تفريق 32 بيتي با SUB رو هم بفرماييد؟