PDA

نسخه کامل مشاهده نسخه کامل : با چه دستوري مي تونم تو 8051 دو عدد را با هم مقايسه كنم؟



amir_8051
28-10-2006, 20:10
با سلام خدمت دوستان
يه مشكلي پيدا كردم تو 8051 كه اميدوارم راهنماييم كنيد
با چه دستوري مي تونم دو عدد را با هم مقايسه كنم به طوري كه بفهمم با هم مساوي اند يا كدوم از ديگري بزرگتر يا كوچكتره؟

Iran-PC
30-10-2006, 22:16
اگر منظورتون به زبان اسمبلی هست با دستور cjne اینکار انجام میشه.
به این شکل که
مثلا شما میخواهید X و Y را با هم مقایسه کنید
و اگر X بزرگتره تابع X_Proc اجرا بشه و اگر Y بزرگتره تابع Y_Proc اجرا بشه و اگر با هم مساوی هستند تابع XTOY اجرا بشه.
دستورش میشه این
CJNE X , Y , NAMOSAVI
CALL XTOY
SJMP MOSAVI
NAMOSAVI:
JC CLX
CALL Y_Pros
SJMP MOSAVI
CLX:
CALL X_Pros
MOSAVI:
lبا این مثال میتونی یاد بگیری (اگر تو بقیه دستوراتش مشکل پیدا نکنی).

amir_8051
03-11-2006, 20:44
اگر منظورتون به زبان اسمبلی هست با دستور cjne اینکار انجام میشه.
به این شکل که
مثلا شما میخواهید X و Y را با هم مقایسه کنید
و اگر X بزرگتره تابع X_Proc اجرا بشه و اگر Y بزرگتره تابع Y_Proc اجرا بشه و اگر با هم مساوی هستند تابع XTOY اجرا بشه.
دستورش میشه این
CJNE X , Y , NAMOSAVI
CALL XTOY
SJMP MOSAVI
NAMOSAVI:
JC CLX
CALL Y_Pros
SJMP MOSAVI
CLX:
CALL X_Pros
MOSAVI:
lبا این مثال میتونی یاد بگیری (اگر تو بقیه دستوراتش مشکل پیدا نکنی).

خيلي ممنون از جوابت و واقعاً بهم كمك كردي ولي يه جايي رو نمي فهمم. تو خط پنجم دستور چرا از jc استفاده كرديمو آخه ما كه كاري به C نداريم پس چه چرا ازش استفاده مي كنيم؟و x و y چه ربطي به C دارند؟ يه عمر ممنون ميشم اگه جواب بديد

Iran-PC
05-11-2006, 22:10
سلام.
ما (در این دستور) کاری به C که یک بیت کنترلی هست نداریم و این بیت رو سی پی یو پس از اجرای دستور تغیر میده .
اگر c 1 بود یعنی عدد اولی شرط بزرگتره و اگر c صفر بود یعنی عدد دومی شرط بزرگتره و اگر هم مساوی باشند به آدرسی که در انتهای دستور بهش اشاره شده پرش میکنه.
X و Y اینجا یک مثال بودند .

amir_8051
06-11-2006, 21:14
ممنون مرسي