PDA

View Full Version : سوال: راهنمایی در مورد به صدا درآوردن بوق سیستم در زبان اسمبلی



Football Land
یک شنبه 20 اردیبهشت 1388, 14:48 عصر
با عرض سلام خدمت کلیه دوستان گرامی

دوستان من میخوام برنامه ای بنویسم که کاراکتری از ورودی دریافت کرده و اگر کاراکتر حرف a بود بوق سیستم به صدا در بیاد .
حالا میخوام بدونم چطوری باید در اسمبلی بوق سیستم را به صدا در بیارم ؟

پیشاپیش سپاسگزارم
موفق باشید

tdkhakpur
یک شنبه 20 اردیبهشت 1388, 15:41 عصر
سلام:
شما برای این کار با ارسال مقادیر یه درگاه 61h میتونید صدای بوق رو آزاد کنید


mov al, 100
out 61h, al

ولی اگه بخوایید اناتومی صدای اولیه رو بدونید اینه که به هنگام بوت شده سیستم bios یه تابع در حافظه برای پاسخ گویی به صدای زنگ قرار میده. و شما میتونید بردار این آدرس رو از وقفه 4ah بگیرید و خودتون شخصا آدرس رو به تن یا صدای خاص خودتون ارجاع بدید.
دوست گرامی یه نگاهی به نحوه کار وقفه ها بنداز میتونی خودت ادامشو بری
موفق باشی.

Football Land
یک شنبه 20 اردیبهشت 1388, 23:47 عصر
با سلام مجدد
دوست عزیز از راهنمایی شما ممنونم . راستش من درست متوجه منظورتون نشدم . البته باید اینم بگم که من اصلا دستور out را نخوندم (در کلاس تدریس نشده) و به همین دلیل من منظور شما را درست متوجه نمیشم .
ببینید من میخوام برنامه ای بنویسم که کاراکتری از ورودی دریافت کرده و اگر کاراکتر حرف a بود بوق سیستم به صدا در بیاد .
همه برنامه را میتونم بنویسم به جز قسمتی که باید بوق سستم به صدا دربیاد . یعنی با دستور cmp مقایسه بین کاراکتر ورودی و کاراکتر a انجام میشه اگر این دو با هم برابر بودن باید دستوراتی قرار بدم که بوق سیستم به صدا در میاد و اگر برابر نبودن برنامه تموم بشه . حالا سوالم این هست که این دستورات چی هستن ؟


cmp chr,'a'
jne finish
??????????
??????????
: finish
mov ah,4ch
int 21h



با تشکر

tdkhakpur
دوشنبه 21 اردیبهشت 1388, 02:13 صبح
سلام:
دوست عزیز همانطور که میدونید وقفه ها رو میتونی مثل توابع بدونی که یه پروسه رو call میکنه ولی داخل پروسه دستوراتی هست که مستقیما با خود دستگاه ها یا چیپها سروکار داره که برای این کار میتونی از دستور out برای ارسال و in برای دریافت وضعیت چیپها مقادیر رو ارسال کنید.
بجای ???? توی برنامه ات دستورات زیر رو جایگزین کنی و یکمی هم بهش دستوراتی که با ** نشون دادم اضافه کنید


in al, 61h
or al, 11b
out 61h, al
**
in al, 61h
or al, 00b
out 61h, al

در فوق به جای ** یه حلقه برای زمان بوق قرار بده هر چه قدر بیشتر باشه زمان بوق هم بیشتر خواهد شد.
موفق باشی.

Delphi Coder
چهارشنبه 23 اردیبهشت 1388, 10:31 صبح
حالا میخوام بدونم چطوری باید در اسمبلی بوق سیستم را به صدا در بیارم ؟

mov ah,2
mov dl,7
int 21h