ورود

View Full Version : مدیریت صفحه کلید - دربافت کاراکتر از صفحه کلید بدون استفاده از وقفه



tahmtan
پنج شنبه 22 فروردین 1392, 11:49 صبح
سلام
ضمن تبریک سال نو،من میخوام یه کد بنویسم که بدون استفاده از وقفه بتونم از صفحه کلید کاراکتر دریافت کنم.
ES رو با 0040h مقدار دهی میکنم و یه سری کارایی که به ذهنم میرسید رو انجام دادم ولی به نتیجه نرسیدم!!
لطفا راهنمایی کنید
ممنون

m.j_banitaba
دوشنبه 26 فروردین 1392, 09:05 صبح
سلام تحت کدام سیستم عامل ؟ در سیستم عاملهای با هسته nt کلیه ورودی و خروجی ها محافظت می شوند در ضمن تمامی سیستمهای لینوکس نیز از این حالت استفاده می کنند.:متفکر:

tahmtan
دوشنبه 26 فروردین 1392, 15:53 عصر
تحت سیستم عامل 7
از نرم افزار استفاده می کنم emu8086
این کارو واسه درس برنامه سازی سیستم می خوام انجام بدم،توی جزوش یه چیزایی گفته ولی انجامش که میدم به کاری که مد نظرم رو انجام نمیده!!!!

m.j_banitaba
سه شنبه 27 فروردین 1392, 09:50 صبح
شما تنها می توانید از سیستم عاملهای 98 به قبل استفاده کنید. یا اینکه kernel driver بنویسید.البته جهت تست می توانید یک سیستم مجازی مثل vmware , virtualbox,... را نصب کرده سپس بر روی آن سیستم عامل dos نصب کنید و تحت آن برنامه خود را اجرا کنید.

tdkhakpur
سه شنبه 27 فروردین 1392, 15:32 عصر
سلام
ضمن تبریک سال نو،من میخوام یه کد بنویسم که بدون استفاده از وقفه بتونم از صفحه کلید کاراکتر دریافت کنم.
ES رو با 0040h مقدار دهی میکنم و یه سری کارایی که به ذهنم میرسید رو انجام دادم ولی به نتیجه نرسیدم!!
لطفا راهنمایی کنید
ممنون
برای کار با اسمبلی و نتیجه گیری صحیح باید مد سیستم رو بیارین رو داس.
دوم اینکه همون مکان جای درستیه اما یه قدم دیگه باید انجام بدید و اون اینکه سیگنال int رو کنترل کنید بعد همون مکان رو تحت نطر بگیرید در غیر اینصورت بافر پر و خالی میشه و شما هرگز نمیتونید بدونید که کی پر شده.
خود وقفه ها هم باید به جایی گوش داده باشند وگرنه از کجا مشخص میشه کلید فشار داده شده.

tahmtan
چهارشنبه 28 فروردین 1392, 11:04 صبح
من این کد رو از یکی از سایت ها برداشتم که گفته کد زیر مشخص میکنه که دکمه Caps Lock سیستم روشنه یا خیر
حالا من که این کد رو میزنم و تست میکنم جواب نمیده و همیشه به برچسب Caps Lock is on پرش میکنه!!!!
لطفا واسم این کد رو تشریح کنید
سوال:من با لب تاپ کار میکنم امکان داره که مکان offset وضیعت کیبورد تو لب تاپ ها یه جای دیگه باشه و توی PC توی این مکان باشه؟
ممنون از کمک هاتون


mov ax,0040h
mov es,ax
mov di,0017h
lodsb
And al,00100000b
cmp al,0
je Caps Lock is on
.
.
.

xman_1365_x
چهارشنبه 28 فروردین 1392, 12:55 عصر
تاریخ عضویت
اردیبهشت 1391
پست
28
تشکر کردن
2
2 بار تشکر شده در 2 پست
مدیریت صفحه کلید - دربافت کاراکتر از صفحه کلید بدون استفاده از وقفه
سلام
ضمن تبریک سال نو،من میخوام یه کد بنویسم که بدون استفاده از وقفه بتونم از صفحه کلید کاراکتر دریافت کنم.
ES رو با 0040h مقدار دهی میکنم و یه سری کارایی که به ذهنم میرسید رو انجام دادم ولی به نتیجه نرسیدم!!
لطفا راهنمایی کنید
0040h:001Eh Keyboard Buffer


من این کد رو از یکی از سایت ها برداشتم که گفته کد زیر مشخص میکنه که دکمه Caps Lock سیستم روشنه یا خیر
حالا من که این کد رو میزنم و تست میکنم جواب نمیده و همیشه به برچسب Caps Lock is on پرش میکنه!!!!
لطفا واسم این کد رو تشریح کنید
سوال:من با لب تاپ کار میکنم امکان داره که مکان offset وضیعت کیبورد تو لب تاپ ها یه جای دیگه باشه و توی PC توی این مکان باشه؟
ممنون از کمک هاتون
آدرس کدتون درسته اما ناقص هست lodsb مشکل داره به این شکل مقایسه کنید TEST es:Byte ptr[0017h],01000000b ، در emu8086 و dosbox نمیتونید چک کنید چرا که همیشه صفر هست، باید داس روی ماشین مجازی VMWARE بریزین بعد تست کنید.
موفق باشی