# برنامه نویسی سطح پایین > برنامه نویسی اسمبلی خانواده x86 > سوال: روش روشن خاموش كردن چراغ هاي كيبورد در اسمبلي !

## worldman

با سلام خدمت شما عزيزان

بنده برنامه اي مي نويسم كه تشكيل يك رقص نور رو با استفاده از ال اي دي هاي كيبورد ميده .

براي روشن خاموش كردن ال اي دي ها از دو روش استفاده كردم كه متاسفانه در هر دو با مشكل مواجه شدم .

1 . مقادير موجود در 40:17 , 40:07 , 40:96 , 40:0ED رو تغيير دادم . عملكرد capslock , numlock , scrollLock تغيير پيدا كرد ، ولي ال اي دي ها روشن حاموش نشدن .

2 . خواستم از تابع 05h از اينتراپت 16h استفاده كنم كه به دليل پيدا نكردن كد اسكي اون سه كليد ، از رسيدن به نتيجه باز موندم .

ممنون ميشم اگه به بنده كمك كنيد .

با تشكر

----------


## Open-Source

http://courses.ece.uiuc.edu/ece390/b...20/CH20-2.html

یه سری به اینجا بزن ببین به دردت میخوره؟ :چشمک:

----------


## worldman

خيلي ممنون از جوابتون !

از اونجايي كه من مثل شما حرفه اي نيستم ، بعضي قسمت هاي برنامه برام نامفهوم بود .

فايل stdlib.a , stdlib.lib كه اينكلود شدن ، از كجا ميتونم پيدا كنم .

ظاهرا يكمي برنامه رو پيچوندن ... آيا روال كلي كار اين نيست كه بايد بيت وضعيت ال اي دي : 40:0ED رو تغيير و با پورت 60H به كيبورد ارسال كنم ؟ 

با تشكر

----------


## worldman

اين هم از كد بنده :

 
Bios_Data SEGMENT AT 40H
   ORG 0EDH
   kbstatue DB ?
Bios_Data Ends

XOR    es:kbstatue , 00000100b
MOV   AL , ES:kbstatue
OUT   60H , AL

----------


## worldman

بالاخره به جواب رسيدم ...

برنامه هيچ مشكلي نداشت . مشكل از ويندوز بود كه اجازه ي تغيير بايت 40:97H رو نميداد .

تو محيط داس درست عمل كرد .

ممنون از همه ي عزيزاني كه به اين تاپيك توجه كردند .

----------


## Open-Source

> بالاخره به جواب رسيدم ...
> 
> برنامه هيچ مشكلي نداشت . مشكل از ويندوز بود كه اجازه ي تغيير بايت 40:97H رو نميداد .
> 
> تو محيط داس درست عمل كرد .
> 
> ممنون از همه ي عزيزاني كه به اين تاپيك توجه كردند .


خوشحالم که به نتیجه رسیدی.
وخوشحالم که هر روز یه چیز جالب وجدید یاد میگیرم. :لبخند:

----------

