PDA

View Full Version : مبتدی: تبدیل مبنا



majid_labbeiky
چهارشنبه 05 بهمن 1390, 21:55 عصر
با سلام خدمت دوستان
برای تبدیل کردن اعداد باینری به ده دهی چیکار باید کرد

کسی نمونه برنامه داره:گریه:

IamOverlord
چهارشنبه 05 بهمن 1390, 22:05 عصر
لطفا مشکلتون رو دقیق تر بگین.
تاپیکی که لینکشو گذاشتم سورس کد هاشو ببینید...:
کمک در مورد دستور cmp در زبان اسمبلی (http://barnamenevis.org/showthread.php?322765-%DA%A9%D9%85%DA%A9-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-cmp-%D8%AF%D8%B1-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A7%D8%B3%D9%85%D8%A8%D9%84%DB%8C)

majid_labbeiky
چهارشنبه 05 بهمن 1390, 23:36 عصر
برای برنامه سازی سیستم استاد یه پروژه داده که : از کاربر یه عدد باینری بگیره اون عدد رو به ده دهی تبدیل کنه و بعد با حروف نشون بده و توی یه فایل ذخیرش کنه .
مثلا کاربر عدد 1100111 رو وارد کرد جواب بده 103 - sad o seh

majid_labbeiky
یک شنبه 09 بهمن 1390, 20:42 عصر
از دوستان کسی نیست کمک کنه

xman_1365_x
دوشنبه 10 بهمن 1390, 18:46 عصر
برای برنامه سازی سیستم استاد یه پروژه داده که : از کاربر یه عدد باینری بگیره اون عدد رو به ده دهی تبدیل کنه و بعد با حروف نشون بده و توی یه فایل ذخیرش کنه .
مثلا کاربر عدد 1100111 رو وارد کرد جواب بده 103 - sad o seh

برای هر بخش بخش یک پروسیجر بنویسید
برای ورودی یک پروسیجر که فقط کاراکتر 0و1 به تعداد بایت یا ورد بگیره

یک روال برای تبدیلش به باینری
که با تشخیص هر عنصر ورودی 1 یا 0 آنرا به ثبات هدف شیفت میکنید

تبدیل باینری به اسکی فبلا گفته شده همینطور وقفه برای نمایش رشته

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

majid_labbeiky
دوشنبه 10 بهمن 1390, 19:25 عصر
از راهنمایی شما ممنون
من برای این کار اومدم یه متغییر به نام مبنای 2 تعریف کردم و توانهای 2 رو مثل یه آرایه تعریف کردم
حالا میخوام عددی رو که از کاربر گرفتم رو یکی یکی بخونم و در توانش ضرب کنم مثل
10101
1*1 + 0*2 + 1*4 + 0*8 + 1*16

برای خوندن تک تک عدد چیکار کنم ؟

xman_1365_x
دوشنبه 10 بهمن 1390, 20:06 عصر
از راهنمایی شما ممنون
من برای این کار اومدم یه متغییر به نام مبنای 2 تعریف کردم و توانهای 2 رو مثل یه آرایه تعریف کردم
حالا میخوام عددی رو که از کاربر گرفتم رو یکی یکی بخونم و در توانش ضرب کنم مثل
10101
1*1 + 0*2 + 1*4 + 0*8 + 1*16
چرا کار سخت تر و با محاسبه بیشتر رو انجام میدین ؟


برای خوندن تک تک عدد چیکار کنم ؟
با یک واحد shr کردن cf=0 یا 1 میشه بعد با تشخیص کری با کمک jc به قسمت مربوطه پرش کنید ، در یک حلقه برای ورد باید 16 بار تکرار شه
موفق باشی

majid_labbeiky
سه شنبه 11 بهمن 1390, 20:18 عصر
منظور شما اینه که به سمت راست شیفت بدم بعدشم کری رو چک کنم درست فهمیدم

xman_1365_x
چهارشنبه 12 بهمن 1390, 15:36 عصر
وقتی شما ورودی میگیرین و فرضا رشته عددی را در آدرس x قرار میدین برای تبدیل از اسکی به باینری رو براتون نوشتم اگر سوال داشتین بپرسین



org 100h

lea bx,x
mov cx,16
xor ax,ax
l1:
cmp byte ptr [bx],'1'
je carry
clc
rcl ax,1
jmp next
carry:
stc
rcl ax,1
next:
inc bx
loop l1

ret

x db "1000000010010111b"

end

میبینید این بسیار کوتاه تر و سریع تر از روش قبل با محاسبات زیاد هست
موفق باشی