PDA

نسخه کامل مشاهده نسخه کامل : تمامي سوالات و مسايل راجع به زبان assembly



مهمان
13-05-2005, 08:53
سلام
تاپيک زبان assembly بايد خيلي جالب باشه :)

Beelzebub
16-07-2005, 23:16
من تازگی یه کتاب برای یادگیری اسمبلی گرفتم این کتاب یه کم
گنگه برای همین یه سوال برام پیش اومده اگه سوالام مسخره
بود به بزرگی خودتون ببخشید.
مقصود از این کد چیه بود , نبودش فرقی می کنه اصلا مهمه(تقریبا می دونم چیکار می کنه ولی نمی دونم برای چی باید باشه)

sseg segment stack
db 32 dup("stack")
sseg ends

تا الان که این کتابو خوندم مغزم داره صوت می کشه :| :|

Nesta
17-07-2005, 00:23
سلام دوست عزیز کلا زبان اسمبلی‌ خیلی‌ مشگل هست .و باید خیلی‌ وقت بگذارید تا خوب مسلط بشید .
مخصوصا زمانی‌ که به بیت های پرچم می‌ رسید یا بیت های نقلی‌ دیگه هیچی‌ .
در مورد این سوال هم من زیاد دیریست متوجه نشدم و این در مورد افست و سگمنت هست .که اسمبلی‌ بیشتر با اینا کار می‌کنه اینا آدرس هائی‌ از حافظه هستند .البته در مورد stack که خیلی‌ ساخت می‌شه کار خود stack یک جریان خاصی‌ داره .
ولی‌ من کمی‌ به این زبان مسلط هستم و منم با این که نمره 18 گرفتم در دانشگاه ولی‌ خیلی‌ متوجه نشدم .
و اگه دنبال نکنی‌ و ولش کنی‌ هر چی‌ هم بلد باشی‌ و یاد گرفته باشی‌ همش از یادتون میره .
امید وارم دوستانی‌ که خیلی‌ به این زبان خوب مسلط هستند .بیان و بیشتر توضیح بدن.
:roll:

Beelzebub
17-07-2005, 00:54
ممنون نستا جان بخواطر توضیحاتت خودمم امیدوارم بتونم باهاش کنار
بیام.

husssein
21-07-2005, 07:23
اسمبلی محیط خاصی برای برنامه نویسی داره؟
اگه نداره کدهاش کجا نوشته و اجرا میشه؟
واسط گرافیکی داره؟
اگه میشه یه مقدار در مورد اسمبلی توضیح بدید؟
ممنوم

مهمان
21-07-2005, 12:23
سلام دوست گرامي

من که چند سال پيش با اين زبان کار مي کردم محيط خاصي نداشت و بايد توي يک محيط تايپي نوشته مي شد و بعد کامپايل مي شد.
شايد شرکت خاصي editor براي اين زبان نوشته باشه که من خبر ندارم.
البته مطمئن هستم که يک editor داره.
چون اين زبان هنوز هم استفاده ميشه.
موفق باشيد

husssein
21-07-2005, 17:33
دوست عزیز ممنون.
کسی ادیتور و کامپایلرش را میتونه معرفی کنه؟

یکیه یا چندتا ادیتورش را میگم؟

Nesta
21-07-2005, 18:55
سلام اگه اشتباه نکنم منظور امیر جان tasm asm اینا بوده که اینا هم در انجمن درخواست نرم افزار معرفی‌ شده .
کامپیلر های زبان اسمبلی‌.

Beelzebub
21-07-2005, 19:24
این زبان ادیتور زیاد داره یعنی خیلی از برنامه ها این زبان رو هم
پشتیبانی می کنند مثل

Gvim این ادیتور بیشتر زبانهارو پشتیبانی می کنه(پیشنهاد من)
SlickEdit اینم بیشتر زبانها رو پشتیبانی می کنه ولی حجمش زیاده
asmedit فقط برای اسمبلی ولی مثل قبلی ها نمی شه
....

در ضمن این سوال مارو کسی جواب نداد:?

Nesta
21-07-2005, 20:54
این برنامه ادیتور زیاد داره یعنی خیلی از برنامه ها این زبان رو هم
پشتیبانی می کنند مثل

Gvim این ادیتور بیشتر زبانهارو پشتیبانی می کنه(پیشنهاد من)
SlickEdit اینم بیشتر زبانها رو پشتیبانی می کنه ولی حجمش زیاده
asmedit فقط برای اسمبلی ولی مثل قبلی ها نمی شه
....

در ضمن این سوال مارو کسی جواب نداد:?
سلام آقا دست شما درد نکنه.
کدوم سوال رو جواب ندادیم .من که جواب دادم دوست من .یا شایدم چیز دیگه مد نظر شما هست.
:wink:

Beelzebub
21-07-2005, 21:51
Nesta, جان شما فقط گفتی که اینا در مورد سگمنت stack و افست است و
توضیح کلیی دادین که تقریبا اینارو خودم می دونستم
شاید من منظورمو بد رسوندم که اگه اینجوریه منو ببخشید
من سوال این بود که وجود این کد چه تاثیری در برنامه داره چون کتابی که دارم می خونم تقریبا در بیشتر مثالهاش این کد رو قرار داده
ولی نگفته برای چی باید باشه حالا نستا جان اگه میشه یکم بیشتر برام توضیح بده

Nesta
21-07-2005, 22:00
Nesta, جان شما فقط گفتی که اینا در مورد سگمنت stack و افست است و
توضیح کلیی دادین که تقریبا اینارو خودم می دونستم
شاید من منظورمو بد رسوندم که اگه اینجوریه منو ببخشید
من سوال این بود که وجود این کد چه تاثیری در برنامه داره چون کتابی که دارم می خونم تقریبا در بیشتر مثالهاش این کد رو قرار داده
ولی نگفته برای چی باید باشه حالا نستا جان اگه میشه یکم بیشتر برام توضیح بده
سلام دوست عزیز.
والا من خودم هم دیگه خیلی‌ وقت پیش با این برنامه کار می‌کردم و 3 سالی‌ می‌گذره باید از دوستانی‌ که در کار کرک هستند کمک بگیری اینطوری من فقط می‌تونم کلی‌ برات بگم که امیر هم همینطور .اینطور که خودش در جای دیگه گفته ولی‌ اگه اطلاعات خوبی‌ میخای باید افراد مسلط به این زبان یا این که کسانی‌ که در حال حاضر هم با این زبان کار می‌کنن بیان نظر و توضیح بدن.
متشکرم

hamidma
02-08-2005, 14:52
با سلام و عرض احترام
راستش من ترم گذشته اسمبلی داشتم و متاسفانه نتونستم اون رو پاس کنم . کتاب درسی معرفی شده به ما کتاب اصول اساسی برنامه نویسی به زبان اسمبلی ترجمه جابر هاشمی اصل از انتشارات دانشگاه علم و صنعت ایران بود .
راستش من تصمیم گرفتم که به صورت جدی هر چند نتونستم برای تابستان دوباره این درس رو بگیرم ولی برای ترم بعد به خوبی از الان دوباره شروع کنم و دوباره از اول بخونشم از دوستان عزیز که در این زبان کارکشته هستن ممنون می شم که در مورد این زبان من رو راهنمایی کنن. شاید یه کتاب بهتر و یا سی دی اموزشی تخصصی باشه .ممنون می شم. :) :)

double_n
02-08-2005, 16:07
عزیز کتابی با همین نام نوشته پیتر ایبل رو بخونی بهتره :arrow:

sa3er
02-08-2005, 16:53
دوست عزیز ممنون.
کسی ادیتور و کامپایلرش را میتونه معرفی کنه؟

یکیه یا چندتا ادیتورش را میگم؟

با سلام؛
البته به نظر میاد بنده خیلی دیر این سوال شما دیدم و دارم جواب میدم ولی در هر صورت برای استفاده بقیه کاربرانی که ممکن است بعدها به این تاپیک مراجعه کنند.. پاسخهای دوستان را کامل می کنم:

برای compile یک برنامه نوشته شده تحت asm شما نیاز به یک assembler دارید؛
ببينيد بهترين assembler شناخته شده MASM هست؛
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

MASM forum:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

حالا تعداد زيادی هم IDE برای برنامه نويسی در محيط assembly ارايه شده که می توانيد با يک search ساده پيداشون کنيد. IDE ارايه شده همراه پک خود MASM هم که QuickEdit نام دارد متاسفانه کارايی لازم برای پروژهای سنگين رو نداره.

ولی در هر صورت بنده RadASM رو پیشنهاد می کنم؛
سايت برنامه:‌
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

در ضمن حتما يه سری به سايت استاد بزرگ assembly بزنيد:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

بازم اگه سوالی داشتيد بپرسيد در خدمتيم.
وقت بخير.

ali_yousefian19
03-08-2005, 21:04
سلام Beelzebub جان
اگه من درست متوجه شده باشم سوالتون را در مورد سگمنت كد پرسيده بودين
تا اوونجا كه بلدم مينويسم
سگمنت كد يكي از اجزاي برنامهاي است كه به زبان اسمبلي وجود داره(يعني يك برنامه ي اسمبلي بدون سگمنت كد نمي باشد)
در ضمن در سكمت كد حاوي دستور العملهاي برنامه هست كه توسط زبان ماشين ترجمه و اجرا ميشود(يعني تقريبا برنامه ي اصلي در اسمبلي در اين سگمنت نوشته ميشه)
توجه داشته باش كه در زبان اسمبلي بايد اول سگمنت پشته را تعريف كني و بعد سگمنت داده و بعد سگمنت كد

اين جدول هم قالب كلي يك برنامه ي اسمبلي هست
تعريف سگمنت پشته
تعريف سگمنت داده
segment نام سگمنت كد
(proc (far or near نام برنامه
..
..
..
endp نام برنامه
ends نام سگمنت كد
نام برنامه end
اميدوارم تونسته باشم كمكت كنم

Beelzebub
04-08-2005, 00:09
ali_yousefian19, جان ممنون بخواطر توضيحاتت
ولي اين سوال من نبود و يادم نمياد در مورد سگمنت كد
سوال كرده باشم البته بازم ممنون كه جوابه مارو دادي
نميدونم چرا كسي اصل مطلبو نمي گه حالا بگزريم
سواله من در رابطه با سگمنت پشته بود.
كه چرا ما اين كد رو داخلش مي زاريم يعني بودنش چه تاثيري داره
db 32 dup("stack")
حالا اميدوارم منظورمو درست فهميده باشين

ali_yousefian19
04-08-2005, 11:17
سلام
آقا شرمنده :oops: –
تا اوونجایی که من میدونم ما با این کد مقدار فضایی که حدس میزنیم برای برنامه لازم باشه را مینویسیم
دستور db برای تعریف داده های یک بایتی هست
با استفاده از عملگر dup در دستور db میتوان چندین بایت از حافظه را مورد استفاده قرار داد
تا اوونجايي كه من ميدونم مهم اوون چیزی نیست که داخل dup میزاریم بلکه مهم اوون دو تا چیزی هست که قبل از dup مینویسیم
مثل
(Db 12 dup(0
تا جایی که یادمه –
اگه یکم بیشتر بخونی میبینی که در سگمنت کد مثلا میگی AX را بریز تو این خونه و bx را بریز تو این خونه و ....حالا این 12 هم تعداد این خونه ها را مشخص میکنه
من جزوه اسمبلی و کتاب را نگاه کردم ولی توضیحی در مورد این کد نگفته بود پس اگه کسی این مطالب را خوند و دید جاییش را اشتباه گفتم – بگه تا بگیه بقیه اشتباه نفهمن
اميدوارم اين يكي بدردت خورده باشه :wink:

Beelzebub
05-08-2005, 09:23
ali_yousefian19, جان دستت درد نکنه :wink:
حسابی استفاده کردیم

shadi6121361
14-01-2007, 12:33
سلام
نستا جان ممنون میشم کمکم کنی. چند تا برنامه اسمبلی میخواستم.
1ــ برنامه ای بنویسید که اطلاعات را از درون MBR (Master Boot Record) خوانده و به صورت متنی روی صفحه نمایش دهد. ( یک string را خوانده و در آرایه ریخته و چاپ کند.)
2ــ برنامه ای بنویسید که از درون boot sector درایو C ظرفیت، شماره سریال، volume name و نوع fat را نمایش دهد.
3ــ برنامه ای بنویسید که به صورت رقص نور سه چراغ Num Lock ، Scroll Lock و Caps Lock را به ترتیب روشن و خاموش کند. تا موقعی که یک کلید فشرده شود، این رقص نور ادامه پیدا کند.

پروژه : برنامه ای بنویسید که اطلاعات مربوط به اندازه حافظه Ram، ظرفیت هارد دیسک، شماره سریال هارد دیسک، نوع CPU، تاریخ و ورژن ساخت Bios و وضعیت کلیدهای صفحه کلید را نشان دهد.

F.K
19-01-2007, 10:43
سلام من چند خط کد اسمبلی مربوط به یک سیستم عامل Open Source دارم که نمی فهمم چکار میکنه, کسی هست که زبان اسمبلی بلد باشه؟ ممنون میشم اگه راهنماییم کنید.:tongue:

rezapazahr
05-04-2007, 23:49
سلام(درخواست خیلی فوری)

اگه میشه در مورد مطالب زیر اطلاعاتی بهم بدید:

1)بررسی دستورات mov,xchg,lea ومحدودیت های آنها

2)بررسی ساختار پردازنده های pentium 4

3)بررسی مجموعه دستورات پردازنده pentium 4

4)ررسی وقفه های 21h,10h وتوابع آنها

درضمن برنامه ای (به زبان اسمبلی)میخوام که نام ونام خانوادگی کسی رو گرفته ودر صفحه نمایش چاپ کند.

ممنون میشم.

seidagha
06-08-2012, 17:56
سلام دوست عزیز.
در زبان اسمبلی برنامه به چند بخش مجزا تقسیم میشه که به هر بخش یک سگمنت میگن. هر سگمنت باید اول تعریف بشه که تعریف شامل نام و نوع اون میشه. دستورات تعریف پشته در سگمنت اون یعنی سگمنت پشته قرار میگیره. این دستور میگه یه سگمنت پشته به نام sseg با سایز 32 بایت در نظر بگیر.

seidagha
06-08-2012, 18:01
دوست عزیر، دستور lea همون mov offset هست یعنی ادرس متغیر رو در عملوند اول که یک ثبات هست میگذارد. دستور xchg مقدار دو عملوند رو با هم عوض میکنه. دستور mov هم که دستور کپی هست. این دو وقفه هم بیشتر واسه عملیات پاک کردن صفحه نمایش و انتقال مکان نما و ورود و خروج اطلاعات بکار میرن.

seidagha
06-08-2012, 18:02
کدهاتو بنویس

sarzabita
07-12-2012, 21:46
این فروم که بیشترش سوال شده تا جواب. منم دارم از دست اسمبلی چل می شم:sq_3: والقصه. دوستان اگر از نرم افزار emu8086
استفاده کنید هم ادیتور دارید هم کامپایلر هم همه چی. کلا خوش بخت می شید به جز موارد زیر
من الان 5 تا سگمت به برنامه معرفی کردم فقط برای امتحان مطالب تئوری خوب خدا رو شکر ارور نمی ده اما تو یه سگمنت یه دستور رو جا می ندازه؟ ممکنه مشکل از امولاتور باشه؟ چون با سون کار می کنم الان نمی تونم از masm استفاده کنم.
اما کلا فهمیدم هر چی تو کتاباست خیلی هم جدی نیست. مثلا همون خط
db 64 dup(?);f



stseg segment
db 64 dup(?)
stseg ends

dtseg segment
;add your data here
data1 db 90h
dtseg ends

cdseg segment
data db 90h

ends
eseg segment
mov cx,10h
mov dx,20h
sub cx,dx
push cx
push cx


ends
panj segment
add ax,4589h
mov bx,ax
ends


اینکه هر جایی هم که می خوام متغیر تعریف می کنم خیلی جالبه. فقط مشکلش اینه که رجیستر DS باید مقدارش با مقدار شروع سگمنت داده پر بشه که من با این کد نمی تونم حالا بازم امتحان می کنم. اونوقت این امولاتور یه هلپ داره که یه بخشش سیستم عامل بنویسید و ایناست. من ازونم سر در نیاوردم.

حمید جان
10-12-2012, 21:31
این فروم که بیشترش سوال شده تا جواب. منم دارم از دست اسمبلی چل می شم:sq_3: والقصه. دوستان اگر از نرم افزار emu8086
استفاده کنید هم ادیتور دارید هم کامپایلر هم همه چی. کلا خوش بخت می شید به جز موارد زیر
من الان 5 تا سگمت به برنامه معرفی کردم فقط برای امتحان مطالب تئوری خوب خدا رو شکر ارور نمی ده اما تو یه سگمنت یه دستور رو جا می ندازه؟ ممکنه مشکل از امولاتور باشه؟ چون با سون کار می کنم الان نمی تونم از masm استفاده کنم.
اما کلا فهمیدم هر چی تو کتاباست خیلی هم جدی نیست. مثلا همون خط
db 64 dup(?);f



stseg segment
db 64 dup(?)
stseg ends

dtseg segment
;add your data here
data1 db 90h
dtseg ends

cdseg segment
data db 90h

ends
eseg segment
mov cx,10h
mov dx,20h
sub cx,dx
push cx
push cx


ends
panj segment
add ax,4589h
mov bx,ax
ends


اینکه هر جایی هم که می خوام متغیر تعریف می کنم خیلی جالبه. فقط مشکلش اینه که رجیستر DS باید مقدارش با مقدار شروع سگمنت داده پر بشه که من با این کد نمی تونم حالا بازم امتحان می کنم. اونوقت این امولاتور یه هلپ داره که یه بخشش سیستم عامل بنویسید و ایناست. من ازونم سر در نیاوردم.

یه مدل هست به اسم .model small که بصورت زیره و کدنویسی توش خیلی راحت تره(دنگو فنگش هم کمتره:sq_25:)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اون خط
db 64 dup(?);f منظورتون از اینکه مهم نیست چیه؟ تعریف یه آرایه...

هرجایی نمیشه متعیر تعریف کردا ... تا جایی که من emu کار کردم
:n13:

sarzabita
05-01-2013, 01:03
کتاب مزیدی در قسمت استک همیشه آرایه تعریف می کنه که تو امولاتور نیازی بهش نیست. البته من فهمیدم
masm و tasm
خیلی هم حساسند و بیشتر از 4 تا سگمنت نمیشه تعریف کرد. من تو امولاتور وسط کد ها متغیر تعریف کردم هیچی نشد. راستی برای خواندن عدد از ورودی باید از چه وقفه و تابعی استفاده کرد؟ من هر چی می گردم همش با کاراکتر کار می کنه.:n16:

n00b
05-01-2013, 01:36
سلام......//// :20:
*******************

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
*************************
موفق باشید! :46:

abasi3270
24-01-2013, 11:01
سلام
من به دنبال یک روشی هستم که بشه یه برنامه اسمبلی را مبهم کرد یعنی ظاهر برنامه را یه کم تغییر بده ولی برنامه همان کار قبلی را انجام بده.در زیر چند روش را که تاکنون بهشون دست پیدا کردم عرض می کنم ولی من به دنبال یه روش جدیدتر هستم.ممنون میشم اگه دوستان کمکم کنند.
روش های یافت شده:
استفاده از دستورات زباله(دستورات بدون اثر در برنامه) در لابه لای دستورات برنامه
جابه جایی ثبات های استفاده شده در برنامه با ثبات های استفاده نشده
جابه جایی کد برنامه و پیگیری رفتار و روال اصلی برنامه با دستورات پرش
جابه جایی زیرروال های برنامه

samasara
30-01-2013, 10:37
سلام
من به دنبال یک روشی هستم که بشه یه برنامه اسمبلی را مبهم کرد یعنی ظاهر برنامه را یه کم تغییر بده ولی برنامه همان کار قبلی را انجام بده.در زیر چند روش را که تاکنون بهشون دست پیدا کردم عرض می کنم ولی من به دنبال یه روش جدیدتر هستم.ممنون میشم اگه دوستان کمکم کنند.
روش های یافت شده:
استفاده از دستورات زباله(دستورات بدون اثر در برنامه) در لابه لای دستورات برنامه
جابه جایی ثبات های استفاده شده در برنامه با ثبات های استفاده نشده
جابه جایی کد برنامه و پیگیری رفتار و روال اصلی برنامه با دستورات پرش
جابه جایی زیرروال های برنامه

احتمالا مقصودتون آنتی کرک کردن برنامه بود که وقتی دی کامپایل و دیباگ مشه دیگه نشه کرکش کرد!!
یک روش سازمانی ای هم علاوه بر اینها که فرمودید هست و تا الان هیچ کرکی رو من ندیدم برای دور زده اون چون بیشتر کرک کردن ها به قسمت کد رجستری برنامه مربوط میشه آنلاین با توجه به شناسه ی سخت افزاری فرد که عملا غیر قابل تغییر هست کدی و یا ریجستری ای در سیستم میشه که با توجه به شناسه سخت افزاری که در سایت ثبت شده دیگر امکان استفاده از اون برنامه به در دیگر سیستم ها نیست بازی smis یک نسخه ی آزار دهنده برای گیمر ها بود که البته با توجه به قشر استفاده کننده شرکت سازنده از اجرای اون طرح منصرف شد..

ehsan-mt
03-06-2013, 08:51
سلام

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

با تشکر