PDA

View Full Version : سوال: مبتدی در خصوص تبدیل مبنا



Kboy-9043
جمعه 26 خرداد 1391, 08:39 صبح
سلام دوستان

در مورد تبديل مبنا شانزده دهي به دهدهي سوال داشتم
روال زير رو ببنيد ار کتاب مزيدي برداشتم.
در خط 23 روال زیر نوشته or dl,30h مگه خود اعداد کد اسکي خاص خودشون رو ندارند؟
براي چي بايد دوباره با 30h جمع بشه؟بعضي موقع ها هم ديدم که در تبديل مبنا از 30h کم شده.
اگر مي شه يه توضيح بدهيد. چون من توي اين مورد کاملا گيج شدم.

در ضمن يه سوال هم داشتم توي کتاب عنوان همين روال زير رو نوشته تبديل دودويي(مبناي شانزده) به اسکي(دهدهي)
مگه مبناي دو فرق نميکنه؟ منظورش از تبديل دودويي به اسکي چي هستش؟مگه مبناي شانزده با دودويي فرق نمي کنه.





seg1 segment
db 64 dup(?)
seg1 ends

seg2 segment
binnum dw 246dh
org 10h
ascnum db 5 dup('0')
seg2 ends

seg3 segment
b2 proc far
assume cs:seg3,ds:seg1,ss:seg2
mov ax,seg1
mov ds,ax
mov bx,10
mov si,offset ascnum
add si,5
dec si
mov ax,binnum
back: sub dx,dx
div bx
or dl,30h
mov [si],dl
dec si
cmp ax,0
ja back
mov ah,4ch
int 21h
b2 endp
seg3 ends
end b2



ممنونم.

MostafaMohammadi
جمعه 26 خرداد 1391, 11:32 صبح
در ضمن يه سوال هم داشتم توي کتاب عنوان همين روال زير رو نوشته تبديل دودويي(مبناي شانزده) به اسکي(دهدهي)
مگه مبناي دو فرق نميکنه؟ منظورش از تبديل دودويي به اسکي چي هستش؟مگه مبناي شانزده با دودويي فرق نمي کنه.
باینری میشه مبنای دو
دسیمال میشه مبنای ده
هگزادسیمال میشه مبنای شانزده
و همه اینا اصولا با کد اسکی فرق می کنه.

Kboy-9043
جمعه 26 خرداد 1391, 11:46 صبح
ممنونم دوست خوبم.
این ها رو دیگه خودم می دونم چی به چی هستش.
منظور سوالم چیز دیگری بوده نه اونی که شما گفتید.
منظورم این بود که چرا توی کتاب عنوان زیربرنامه رو نوشته تبدیل دودویی به کد اسکی چرا ننوشته تبدیل شانزده دهی(هگزا دسیمال) به دهدهی(دسیمال)؟
جواب سوال اولم هم که با رنگ قرمز و بنفش نشون دادم رو هم خواهشا بگویید.
ممنونم.

xman_1365_x
پنج شنبه 01 تیر 1391, 23:19 عصر
منظورم این بود که چرا توی کتاب عنوان زیربرنامه رو نوشته تبدیل دودویی به کد اسکی چرا ننوشته تبدیل شانزده دهی(هگزا دسیمال) به دهدهی(دسیمال)؟
داده ها در کامپیوتر به صورت باینری ذخیره میشه، درسته که در ادیتور میتونید با چهار مبنای اصلی اعداد رو بنویسید اما هنگامی که برنامه را اسمبل کنید،اسمبلر آنرا به صورت باینری در حافظه ذخیره میکنه!
در کل یادتون باشه مبنای 8 و هگز برای راحتی انسان به وجود اومده اگرنه پردازنده فقط 0 و 1 رو میشناسه

مگه خود اعداد کد اسکي خاص خودشون رو ندارند؟
براي چي بايد دوباره با 30h جمع بشه؟
برای اینکه شما یم عدد در دیتا سگمنت دارید برای نمایش آن روی صفحه نمایش نیاز دارید عدد رو به صورت کد اسکی در بیارین
پس برنامه شما میاد ارقام رو جدا میکنه و با 48 دسیمال یا 30هگز or میکنه که برابر با جمع هست تا عدد به کد اسکی تبدیل شه و قادر به نمایش آن بروی صفحه نمایش باشیم

بعضي موقع ها هم ديدم که در تبديل مبنا از 30h کم شده.
اگر مي شه يه توضيح بدهيد. چون من توي اين مورد کاملا گيج شدم.
حالا بلعکس حرف بالا برای سرعت در محاسبات و استفاده کمتر از حافظه ،رشته اسکی که در حافظه داریم رو به عدد تبدیل میکنیم برای این کار اول هر کاراکتر رو از 48 دسیمال کم میکنیم

ضمنا این سوال تکراری هست و بارها پاسخ داده شده ، لطفا قبل از ایجاد تاپیک از سایت برنامه نویس یا گوگل برای جستجوی استفاده کنید
موفق باشید.