PDA

View Full Version : سوال: نحوه مقایسه دو متغیر از نوع double word در پردازنده 80286



trminator
یک شنبه 21 شهریور 1389, 16:41 عصر
سلام
چطور می تونم دو متغیر از نوع دابل ورد رو با هم مقایسه کنم در صورتی که ثبات ها فقط تا 16 بیت جا دارند. دستور مقایسه cmp هست.

xman_1365_x
دوشنبه 22 شهریور 1389, 05:10 صبح
سلام
چطور می تونم دو متغیر از نوع دابل ورد رو با هم مقایسه کنم در صورتی که ثبات ها فقط تا 16 بیت جا دارند. دستور مقایسه cmp هست.

x dd ?
y dd ?
mov ax,x
mov dx,x+2
cmp ax,y
cmp dx,y+2
بعد از هر cmp بايد فلگ هارو در پشته بريزي بعد ببيني و تصميم بگيري
مثلا براي مساوي يا نامساوي اگر در هر دو مقايسه zf=1 پس اعداد مساوي هستند
در غير اينصورت نامساوي براي حالت هاي بزرگتر،كوچكتر و ... بايد فلگ هاي ديگه مثل cf رو مقايسه كني
موفق باشي

trminator
دوشنبه 22 شهریور 1389, 16:16 عصر
این سوال تمرین فصل پرش و حلقه بود و مبحث پشته 2 فصل حلوتر بحث می‌شه راهی هست که بدون کار با پشته بشه حلش کرد؟

xman_1365_x
دوشنبه 22 شهریور 1389, 18:28 عصر
این سوال تمرین فصل پرش و حلقه بود و مبحث پشته 2 فصل حلوتر بحث می‌شه راهی هست که بدون کار با پشته بشه حلش کرد؟


اگر منظورتون كتاب مهندس نيك مهر هست من كه نديدم اين سوال رو دقيقا كجاشه؟

با اين حال براي مساووي يا نامساوي با اين شكل ميشه اين كارو كرد :


x dd ?
y dd ?
mov ax,x
mov dx,x+2

cmp ax,y
jne l1
cmp dx,y+2
jne l1
jmp l2
l1: ;zf=0 x<>y
jmp l3
l2: ;zf=1 x=y
l3:

حالا شما برو اون بخش انشعاب و تكرار رو دوباره بخون حالت بهتر بنويس كه براي همه حالت ها جواب بده!
مثلا:
y>x -->cf=1
x>=y -->cf=0
x=y -->zf=1
y<>x -->zf=0
موفق باشي