งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

CS344-321 Assembly Language Programming Period 36.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "CS344-321 Assembly Language Programming Period 36."— ใบสำเนางานนำเสนอ:

1 CS Assembly Language Programming Period 36

2 Keyboard เมื่อผู้ใช้กดปุ่มบน keyboard จะเกิด interrupt INTR บิต 1 ไปยัง 8259 ถ้า interrupt นี้มีผล interrupt handler (9) ของ keyboard จะอ่านค่า scan code จาก keyboard ที่ port 60h เช่น ESC จะมี scan code เป็น 1 เป็นต้น ดู scan code ใน sheet ข้อมูลจาก port 60h ไม่ใช่ ASCII code เป็นหน้าที่ของ interrupt handler ของ keyboard ใน ROM BIOS จะแปลงเป็น ASCII code ให้ และใส่ค่าที่แปลงแล้วไว้ใน queue (memory location 0000:041E ) เพื่อที่ DOS จะได้นำไปใช้ได้

3 scan code ที่เกิดจากการกดปุ่ม keyboard ครั้งแรกมีตั้งแต่ 1 – 83 เรียกว่า “make” codes เมื่อผู้ใช้ปล่อยปุ่ม keyboard จะส่ง scan code ครั้งที่สอง เรียกว่า “break” code ด้วยการบวก 128 ไปที่ “make” code ซึ่งจะมีค่าตั้งแต่ 129 – 211 ( กำหนดให้ bit 7 มีค่า 1) ในกรณีที่ผู้ใช้กดปุ่มแช่ไว้เกิน ½ วินาที keyboard จะส่ง “ make” code ให้ ใหม่ จำนวน 10 ครั้งต่อวินาที จนกว่าจะ ปล่อยจึงจะส่ง “ break” code เมื่อ ROM- BIOS แปลงค่าแล้ว จะมีขนาด 2 bytes เก็บ ไว้ใน queue โดยที่ไบต์เลขที่ต่ำเรียกว่า main byte และ byte เลขที่สูง เรียกว่า auxiliary byte main byte จะเป็นรหัส ASCII ส่วน auxiliary byte จะเก็บ scan code ยกเว้นการใส่ ASCII โดยตรงตามที่กล่าวใน หมายเหตุ ในกรณีนี้ auxiliary byte จะเป็น 0

4 ในกรณีที่ main byte เป็น 0 แสดงว่ามี การกดปุ่มพิเศษ เช่น Function key, Home, End, Ctrl-, Alt เป็นต้น ในกรณีนี้ auxiliary byte จะเก็บค่าดังแสดงใน sheet ดู ROM BIOS keyboard Service, int 16h function 00, 01, 02 DOS keyboard Services, int 21h function 1, 7, 8, a, b, c


ดาวน์โหลด ppt CS344-321 Assembly Language Programming Period 36.

งานนำเสนอที่คล้ายกัน


Ads by Google