![]() | อินเทอร์รัพท์ (DOS Interrupt) | ![]() |
|
อินเทอร์รัพท์ (Interrupt) หมายถึง อะไร
Interrupt List (http://www-2.cs.cmu.edu #A .. #F) อินเทอร์รัพท์ที่น่าสนใจ (Interested Interrupt) |
:: สร้างโปรแกรมขนาด 4 byte ชื่อ test.com เพื่อหยุดการทำงานของโปรแกรม
C:\>debug test.com -a 11BD:0100 mov ah,0 11BD:0102 int 21 11BD:0104 -rcx CX 0000 :4 -w Writing 00004 bytes -q C:\>test.com C:\> |
// ex1 : รับค่าจากแป้นพิมพ์ส่งให้ errorlevel ใน DOS mov ah,8 int 21 mov ah,4c int 21 // ex2 : รับค่าจากแป้นพิมพ์ แล้วแสดงผล mov ah,8 int 21 mov ah,2 mov dl,al int 21 mov ah,4c int 21 // ex3 : สั่ง Clear screen โดยกำหนด mode ของจอภาพ mov ah,0 mov al,2 int 10 mov ah,0 int 21 // ex4 : กำหนด cursor ให้เป็นแถบทึบ mov ah,1 mov ch,0 mov cl,7 int 10 mov ah,0 int 21 // ex5 : เปลี่ยน Mode การแสดงผล ด้วย int 10h mov ah,0 mov al,12 int 10h mov ah,4c int 21h |
|
Download interrupt listing from http://www-2.cs.cmu.edu
# http://www.cs.cmu.edu/~ralf/interrupt-list/inter61a.zip # http://www.cs.cmu.edu/~ralf/interrupt-list/inter61b.zip # http://www.cs.cmu.edu/~ralf/interrupt-list/inter61c.zip # http://www.cs.cmu.edu/~ralf/interrupt-list/inter61d.zip # http://www.cs.cmu.edu/~ralf/interrupt-list/inter61e.zip # http://www.cs.cmu.edu/~ralf/interrupt-list/inter61f.zip # http://www.cs.cmu.edu/~ralf/interrupt-list/faq.lst # http://www.cs.cmu.edu/~ralf/pub-files/dvint43.zip | ข้อมูลด้านล่างนี้ เรียบเรียงโดย
|
|
ไบออสและดอสอินเทอร์รัพท์
อินเทอร์รัพท์หมายเลข 0 : อินเทอร์รัพท์หมายเลข 1 : อินเทอร์รัพท์หมายเลข 2 : อินเทอร์รัพท์หมายเลข 3 : อินเทอร์รัพท์หมายเลข 4 : โอเวอร์โฟลว์ (Overflow) อินเทอร์รัพท์หมายเลข 5 : พิมพ์หน้าจอ (Print Screen) อินเทอร์รัพท์หมายเลข 6 และ 7 : สงวนไว้ (Reserved) อินเทอร์รัพท์หมายเลข 8 : อินเทอร์รัพท์หมายเลข 9 : อินเทอร์รัพท์หมายเลข 0AH : สงวนไว้ (Reserved) อินเทอร์รัพท์หมายเลข 0BH - 0FH : |
อินเทอร์รัพท์หมายเลข 10H บริการที่ 0 : กำหนดสกรีนโหมด (Set Screen Mode) อินพุต AH = 0 AL = โหมด
อินเทอร์รัพท์หมายเลข 10H บริการที่ 1 : กำหนดชนิดของเคอร์เซอร์ อินพุต AH = 1 CH = เส้นเริ่มต้นของเคอร์เซอร์ CL = เส้นสุดท้ายของเคอร์เซอร์ เอาต์พุต เคอร์เซอร์ขนาดใหม่ตามที่กำหนด อินเทอร์รัพท์หมายเลข 10H บริการที่ 2 : กำหนดตำแหน่งของเคอร์เซอร์ อินพุต AH = 2 DH,Dl = แถว,คอลัมน์ BH = หมายเลขหน้า อินเทอร์รัพท์หมายเลข 10H บริการที่ 3 : หาตำแหน่งคอร์เซอร์ อินพุต AH = 3 BH = หมายเลขหน้า เอาต์พุต DH,DL = แถว,คอลัมน์ของเคอร์เซอร์ CH,CL = ขนาดปัจจุบันของเคอร์เซอร์ อินเทอร์รัพท์หมายเลข 10H บริการที่ 4 : อ่านตำแหน่งของไลต์เพน อินพุต AH = 4 เอาต์พุต AH = 0 --> ไม่มีการกดสวิตช์บนไลต์เพน AL = 1 --> DH,DL = แถว,คอลัมน์ของตำแหน่งที่ไลต์เพนอยู่ CH เป็นราสเตอร์ไลน์ (แนวดิ่ง)มีค่า 0 ถึง 199 BX เป็นพิกเซลคอลัมน์ (แนวราบ) มีค่า 0 ถึง 319,639 อินเทอร์รัพท์หมายเลข 10H บริการที่ 5 : กำหนดแอ็กทีฟเพจ อินพุต AH = 5 AL = 0 - 7(สกรีนโหมด 0,1) และ0 - 3(สกรีนโหมด 2,3) เอาต์พุต แอ็กทีฟเพจเปลี่ยนไปตามที่กำหนด อินเทอร์รัพท์หมายเลข 10H บริการที่ 6 : เลื่อนแอ็กทีฟเพจขึ้น อินพุต AH = 6 AL = จำนวนบรรทัดว่างที่ส่วนล่างของจอภาพ (0 --> เลื่อนทั้งหน้าจอ) CH,CL = แถว,คอลัมน์ของจุดมุมบนซ้ายของพื้นที่ที่จะเลื่อน DH,DL = แถว,คอลัมน์ของจุดมุมล่างขวาของพื้นที่ที่จะเลื่อน BH = แอตตริบิวต์ของบรรทัดว่าง สำหรับกำหนดสี อินเทอร์รัพท์หมายเลข 10H บริการที่ 7 : เลื่อนแอ็กทีฟเพจลง อินพุต AH = 7 AL = จำนวนบรรทัดว่างที่ส่วนล่างของจอภาพ (0 --> เลื่อนทั้งหน้าจอ) CH,CL = แถว,คอลัมน์ของจุดมุมบนซ้ายของพื้นที่ที่จะเลื่อน DH,DL = แถว,คอลัมน์ของจุดมุมล่างขวาของพื้นที่ที่จะเลื่อน BH = แอตตริบิวต์ของบรรทัดว่าง เอาต์พุต แอกทีฟเพจเลื่อนลงไปตามที่กำหนด อินเทอร์รัพท์หมายเลข 10H บริการที่ 8 : อ่านแอตตริบิวต์และรหัสแอสกีของอักขระที่อยู่ที่ตำแหน่งของเคอร์เซอร์ อินพุต AH = 8 BH = หมายเลขหน้า เอาต์พุต AL = รหัสแอสกีของอักขระที่อยู่ที่ตำแหน่งของเคอร์เซอร์ AH = แอตตริบิวต์ของอักขระที่อยู่ที่ตำแหน่งของเคอร์เซอร์ (เฉพาะแอลฟานัมเบอริกส์เท่านั้น) อินเทอร์รัพท์หมายเลข 10H บริการที่ 9 : แอตตริบิวต์และอักขระที่ตำแหน่งของเคอร์เซอร์ อินพุต AH = 9 AL = รหัสแอสกีของอักขระที่จะเขียน BH = หมายเลขหน้า BL = แอตตริบิวต์ (ในเท็กโหมด) อินเทอร์รัพท์หมายเลข 10H บริการที่ A : เขียนเฉพาะ อักขระที่ตำแหน่งเคอร์เซอร์ อินพุต AH = 0AH AL = รหัสแอสกีของอักขระที่จะเขียน BH = หมายเลขหน้า CX = จำนวนอักขระที่จะเขียน เอาต์พุต อักขระถูกเขียนบนจอภาพที่ตำแหน่งเคอร์เซอร์ อินเทอร์รัพท์หมายเลข 10H บริการที่ B : กำหนดพาเลตต์ของสี อินพุต AH = 11 BH = หมายเลขพาเลตต์ของสี BH = 0 --> สีพื้น BH = 1 --> หมายเลขพาเลตต์ของสีโดย อินเทอร์รัพท์หมายเลข 10H บริการที่ C : เขียนจุด อินพุต AH = 12 AL = ค่าสี (0 ถึง 3) CX = หมายเลขคอลัมน์ของจุดที่จะเขียน (0 ถึง 319,639) DX = หมายเลขแถวของจุดที่จะเขียน (0 ถึง 199) ข้อสังเกต ถ้าบิตที่ 7 ของAL เป็น 1 ค่าสีจะถูกกระทำทางบิตแบบ XORed กับค่าสีปัจจุบันของจุดนั้น อินเทอร์รัพท์หมายเลข 10H บริการที่ D : อ่านจุด อินพุต AH = 13 CX = หมายเลขคอลัมน์ของจุดที่จะเขียน (0 ถึง 319,639) DX = หมายเลขแถวของจุดที่จะเขียน (0 ถึง 199) เอาต์พุต AL = ค่าสี (0 ถึง 3) ข้อสังเกต ถ้าบิตที่ 7 ของAL เป็น 1 ค่าสีจะถูกกระทำทางบิตแบบ XORed กับค่าสีปัจจุบันของจุดนั้น อินเทอร์รัพท์หมายเลข 10H บริการที่ E : เขียนแบบเทเลไทป์บนแอ็กทีฟเพจ อินพุต AL = รหัสแอสกีของอักขระที่จะเขียน BL = โหมดปัจจุบัน(ดู INT 10H บริการที่ 0) BH = แอก็กทีฟเพจ อินเทอร์รัพท์หมายเลข 10H บริการที่ FH : กำหนดพาเลตต์รีจิสเตอร์ ตาราง ก.1 ตารางแสดงค่าสีของดีฟอลต์พาเลตต์ (0 ถึง 15) ใน EGV
อินเทอร์รัพท์หมายเลข 10H บริการที่ 10H ฟังก์ชั่นที่ 0 : กำหนดพาเลตต์รีจิสเตอร์ (ทีละตัว) อินพุต AH = 10H AL = 0 BL = พาเลตต์รีจิสเตอร์ที่จะกำหนด (0 ถึง 15) BH = ค่าที่จะให้แก่พาเลตต์รีจิสเตอร์ (0 ถึง 63) อินเทอร์รัพท์หมายเลข 10H บริการที่ 10H ฟังก์ชั่นที่ 1 : กำหนดโอเวอร์สแกน (บอร์เดอร์) รีจิสเตอร ์ อินพุต AH = 10H AL = 1 BH = ค่าที่กำหนด (0 ถึง 63) อินเทอร์รัพท์หมายเลข 10H บริการที่ 10H ฟังก์ชั่นที่ 2 : กำหนดพาเลตต์รีจิสเตอร์ (ทุกตัว) อินพุต AH = 10H AL = 1 ES:BX = แอดเดรสของตารางขนาด 17 ไบต์ที่เก็บผลการเลือกค่าสี อินเทอร์รัพท์หมายเลข 10H บริการที่ 10H ฟังก์ชั่นที่ 7 : อ่านพาเลตต์รีจิสเตอร์ (ทีละตัว) อินพุต AH = 10H AL = 7 BL = พาเลตต์รีจิสเตอร์ที่จะอ่าน เอาต์พุต BH = ค่าในพาเลตต์รีจิสเตอร์ อินเทอร์รัพท์หมายเลข 10H บริการที่ 10H ฟังก์ชั่นที่ 8 : อ่านโอเวอร์สแกน (บอร์เดอร์) รีจิสเตอร์ อินพุต AH = 10H AL = 8 เอาต์พุต BH = ค่าในโอเวอร์สแกน (บอร์เดอร์) รีจิสเตอร์ อินเทอร์รัพท์หมายเลข 10H บริการที่ 10H ฟังก์ชั่นที่ 10H : กำหนด DAC รีจิสเตอร์ อินพุต AH = 10H AL = 10H BX = รีจิสเตอร์ที่กำหนด CH = ความเข้มของสีเขียว CL = ความเข้มของสีน้ำเงิน DH = ความเข้มของสีแดง อินเทอร์รัพท์หมายเลข 10H บริการที่ 10H ฟังก์ชั่นที่ 12H : กำหนด DAC รีจิสเตอร ์ อินพุต AH = 10H AL = 10H BX = รีจิสเตอร์แรกที่กำหนด (0 ถึง 255) CX = จำนวนรีจิสเตอร์ที่กำหนด (1 ถึง 256) ES:DX = แอสเดรสของตารางความเข้มสีโดยที่ DAC รีจิสเตอร์แต่ละตัวใช้ 3 ไบต์ อินเทอร์รัพท์หมายเลข 10H บริการที่10H ฟังก์ชั่นที่ 13H : เลือกโหมดของหน้าสี อินพุต AH = 10H AL = 13H BL = 0 เลือกโหมดของหน้าสี BH = 0 เลือก 4 DAC เพจรีจิสเตอร์จาก 64 รีจิสเตอร์ BH = 1 เลือก 16 DAC เพจรีจิสเตอร์จาก 16 รีจิสเตอร์ BL = 1 เลือกแอ็กทีฟคัลเลอร์เพจ สำหรับโหมดที่มีเพียง 4 เพจ อินเทอร์รัพท์หมายเลข 10H บริการที่ 11H : คาเรกเตอร์เจนเนอร์เตอร์ อินเทอร์รัพท์หมายเลข 10H บริการที่ 12H : เลือก อินพุต AH = 10H BL = 30H AL = 0 --> 200 สกรีนสแกนไลน์ อินเทอร์รัพท์หมายเลข 11H : ตรวจสอบอุปกรณ์ที่ต่อเข้ากับเครื่อง อินพุต อยู่ในบิตต่าง ๆ ของ AX
อินเทอร์รัพท์หมายเลข 12H : ตรวจสอบขนดของหน่วยความจำ อินพุต AX = จำนวนบล็อกขนาด 1 K ที่ต่อเนื่องกันในหน่วยความจำ อินเทอร์รัพท์หมายเลข 12H บริการที่ 0 : รีเซตดิสก์ อินพุต AH = 0 เอาต์พุต CY = 0 --> AH = 0 , สำเร็จ CY = 1 --> AH = รหัสความผิดพลาด (ดูบริการที่ 1) ข้อสังเกต สำหรับฮาร์ดดิสก์ : DL = 80H --> รีเซตดิสเกตต์ อินเทอร์รัพท์หมายเลข 13H บริการที่ 1 : รีเซตดิสก์ อินพุต AH = 0 เอาต์พุต รหัสความผิดพลาดเกี่ยวกับดิสก์
อินเทอร์รัพท์หมายเลข 13H บริการที่ 2 : อ่านข้อมูลจากเซกเตอร์เข้ามาเก็บไว้ในหน่วยความจำ อินพุต AH = 2 DL = หมายเลขไดรฟ์ DH = หมายเลขของหัวอ่าน CH = หมายเลขของแทร็กหรือไซลินเดอร์ CL = บิตที่ 7,6 เก็บ 2 บิตสูงของหมายเลขไซลินเดอร์ซึ่งมีขนาด 10 บิต CL = บิตที่ 0 ถึง 5 เก็บหมายเลขเซกเตอร์ AL = จำนวนเซกเตอร์ที่จะอ่าน อินเทอร์รัพท์หมายเลข 13H บริการที่ 3 : เขียนข้อมูลลงในเซกเตอร์ของแผ่นดิสก์ อินพุต AH = 3 DL = หมายเลขไดรฟ์ DH = หมายเลขของหัวอ่าน CH = หมายเลขของแทร็กหรือไซลินเดอร์ CL = บิตที่ 7,6 เก็บ 2 บิตสูงของหมายเลขไซลินเดอร์ซึ่งมีขนาด 10 บิต CL = บิตที่ 0 ถึง 5 เก็บหมายเลขเซกเตอร์ AL = จำนวนเซกเตอร์ที่จะอ่าน อินเทอร์รัพท์หมายเลข 13H บริการที่ 4 : ตรวจสอบเซกเตอร อินพุต AH = 4 DL = หมายเลขไดรฟ์ DH = หมายเลขของหัวอ่าน CH = หมายเลขของแทร็กหรือไซลินเดอร์ CL = บิตที่ 7,6 เก็บ 2 บิตสูงของหมายเลขไซลินเดอร์ซึ่งมีขนาด 10 บิต CL = บิตที่ 0 ถึง 5 เก็บหมายเลขเซกเตอร์ AL = จำนวนเซกเตอร์ที่จะอ่าน อินเทอร์รัพท์หมายเลข 13H บริการที่ 8 : ตรวจสอบเซกเตอร์ บริการนี้ใช้เฉพาะฮาร์ดดิสก์ของเครื่อง PS/2 อินพุต AH = 8 DL = หมายเลขไดรฟ์ เอาต์พุต DL = จำนวนไดรฟ์ที่ต่อเข้ากับดิสก์คอนโทรลเลอร์ DH = จำนวนหัวอ่านมากสุด CH = จำนวนไซลินเดอร์มากสุด CL = บิตที่ 7,6 เก็บ 2 บิตสูงของหมายเลขไซลินเดอร์ซึ่งมีขนาด 10 บิต CL = บิตที่ 0 ถึง 5 บิตสูงของหมายเลขเซกเตอร์ BL สำหรับดิสก์เกตต์ที่ใช้กับเครื่อง PS/2 เท่านั้น อินเทอร์รัพท์หมายเลข 13H บริการที่ 0AH และ 0BH : สงวนไว้ อินเทอร์รัพท์หมายเลข 13H บริการที่ 0CH : ตรวจสอบเซกเตอร์ บริการนี้ช้ได้เฉพาะกับฮาร์ดดิสก์ อินพุต AH = 0CH DH = หมายเลขหัวอ่าน DL = หมายเลขของไดรฟ์ (80 ถึง 87H) CH = หมายเลขของแทร็กหรือไซลินเดอร์ CL = บิตที่ 7,6 เก็บ 2 บิตสูงของหมายเลขไซลินเดอร์ซึ่งมีขนาด 10 บิต CL = บิตที่ 0 ถึง 5 เก็บหมายเลขเซกเตอร์ เอาต์พุต CY = 0 --> AL = 0 สำเร็จ CY = 1 --> AH = รหัสบอกความผิดพลาดของดิสก์ (ดูบริการที่ 1) ข้อสังเกต DL = หมายเลขไดรฟ์ ; ถ้าบิตที่ 7 เป็น 1 หมายถึง ฮาร์ดดิสก์ สำหรับฮาร์ดดิสก์แล้ว ค่าใน DL เป็นได้ตั้งแต่ 80H ถึง 87H อินเทอร์รัพท์หมายเลข 13H บริการที่ 0DH : รีเซตดิสก์สลับกัน อินเทอร์รัพท์หมายเลข 13H บริการที่ 0EH และ 0FH : สงวนไว้ อินเทอร์รัพท์หมายเลข 13H บริการที่ 10H : ตรวจสอบความพร้อมของไดรฟ์ อินเทอร์รัพท์หมายเลข 13H บริการที่ 11H : คาลิเบรตไดรฟ์ของฮาร์ดดิสก์ใหม่ บริการนี้ใช้ได้เฉพาะกับฮาร์ดดิสก์ อินพุต AH = 11H (อ่าน) DL = หมายเลขของไดรฟ์ (80 ถึง 87H) เอาต์พุต CY = 0 --> AL = 0 สำเร็จ CY = 1 --> AH = รหัสบอกความผิดพลาดของดิสก์ (ดูบริการที่ 1) ข้อสังเกต DL = หมายเลขไดรฟ์ ; ถ้าบิตที่ 7 เป็น 1 หมายถึง ฮาร์ดดิสก์ สำหรับฮาร์ดดิสก์แล้วค่าใน DL เป็นได้ตั้งแต่ 80H ถึง 87H อินเทอร์รัพท์หมายเลข 13H บริการที่ 12H : วินิจฉัยฮาร์ดดิสก์ บริการนี้ใช้ได้เฉพาะกับฮาร์ดดิสก์ อินพุต AH = 12H (วินิจฉัยแรม) AH = 13H (วินิจฉัยไดรฟ์) AH = 14H (วินิจฉัยดิสก์คอนโทรลเลอร์) DL = หมายเลขของไดรฟ์ (80 ถึง 87H) เอาต์พุต CY = 0 --> AL = 0 สำเร็จ CY = 1 --> AH = รหัสบอกความผิดพลาดของดิสก์ (ดูบริการที่ 1) ข้อสังเกต DL = หมายเลขไดรฟ์ ; ถ้าบิตที่ 7 เป็น 1 หมายถึง ฮาร์ดดิสก์ สำหรับฮาร์ดดิสก์แล้ว ค่าใน DL เป็นได้ตั้งแต่ 80H ถึง 87H อินเทอร์รัพท์หมายเลข 13H บริการที่ 19H : พักการทำงานของหัวอ่านฮาร์ดดิสก์ (Park) บริการนี้ใช้ได้เฉพาะกับฮาร์ดดิสก์ของเครื่อง PS/2 อินพุต DL = หมายเลขของไดรฟ์ เอาต์พุต CY = 0 --> AL = 0 สำเร็จ CY = 1 --> AH = รหัสบอกความผิดพลาดของดิสก์ (ดูบริการที่ 1) ข้อสังเกต DL = หมายเลขไดรฟ์ ; ถ้าบิตที่ 7 เป็น 1 หมายถึง ฮาร์ดดิสก์ สำหรับฮาร์ดดิสก์แล้ว ค่าใน DL เป็นได้ตั้งแต่ 80H ถึง 87H อินเทอร์รัพท์หมายเลข 14H ,AH = 0 : อินนิเชียลพอร์ต RS 232 อินพุต AH = 0 DL = ค่าในบิตต่างๆ มีความหมายดังนี้ บิตที่ 0,1 = ขนาดของเวิร์ค โดย อินเทอร์รัพท์หมายเลข 14H ,AH = 1 : ส่งอักขระไปยังซีเรียลพอร์ต อินพุต AH = 1 AL = รหัสแอสกีของอักขระที่จะส่งไป เอาต์พุต ถ้าบิตที่ 7 ของ AH = 1 แสดงว่า ล้มเหลว ถ้าบิตที่ 7 ของ AH = 0 แล้วบิตที่ 0 ถึง 6 เก็บสถานะ (ดู INT 14H ,AH = 3) อินเทอร์รัพท์หมายเลข 14H ,AH = 2 : ส่งอักขระไปยังซีเรียลพอร์ต อินพุต AH = 2 เอาต์พุต AL = รหัสแอสกีของอักขระที่จะส่งไป AH = 0 แสดงว่า สำเร็จ อินเทอร์รัพท์หมายเลข 14H ,AH = 3 : ตรวจสอบเซกเตอร์ อินพุต AH = 3 เอาต์พุต AH = ค่าในบิตต่าง ๆ ถ้าถูกเซตจะมีความหมายดังนี้ อินเทอร์รัพท์หมายเลข 15H : คาสเซ็ตต์อินพุตและเอาต์พุต อินพุต AH = 0 --> เปิดมอเตอร์ของคาสเซ็ตต์ AH = 1 --> ปิดมอเตอร์ของคาสเซ็ตต์ AH = 2 --> อ่านบล็อกของข้อมูล (ขนาด 1 หรือ 256 ไบต์)
อินเทอร์รัพท์หมายเลข 16H บริการที่ 1 : ตรวจสอบว่าคีย์บอร์ดพร้อมที่จะถูกอ่านหรือไม่ อินพุต AH = 2 เอาต์พุต แฟล็กศูนย์ = 0 --> บัฟเฟอร์ว่าง แฟล็กศูนย์ = 1 --> AH = รหัสสแกน AL = รหัสแอสกี อินเทอร์รัพท์หมายเลข 16H บริการที่ 2 : หาคีย์บอร์ดสถานะคีย์บอร์ด อินพุต AH = 2 เอาต์พุต AL = ไบต์บอกสถานะของคีย์บอร์ด อินเทอร์รัพท์หมายเลข 17H บริการที่ 0 : พิมพ์อักขระที่เก็บใน AL ออกพรินเตอร์ อินพุต AH = 0 AL = อักขระที่จะพิมพ์ DX = หมายเลขพรินเตอร์ (0,1,2) เอาต์พุต AH = 1 --> printer time out อินเทอร์รัพท์หมายเลข 17H บริการที่ 1 : อินนิเชียลพรินเตอร์พอร์ต อินพุต AH = 1 DX = หมายเลขพรินเตอร์ (0,1,2) เอาต์พุต AH = สถานะของพรินเตอร์ ค่าในบิตต่าง ๆ ของ AH ถ้าถูกเซตจะมีความหมายดังนี้ อินเทอร์รัพท์หมายเลข 17H บริการที่ 2 : อ่านสถานะของพรินเตอร์เข้ามาเก็บไว้ใน AH อินพุต AH = DX = หมายเลขพรินเตอร์ (0,1,2) เอาต์พุต AH = สถานะของพรินเตอร์ (เหมือน INT 17H บริการที่ 1) อินเทอร์รัพท์หมายเลข 18H : Resident BASIC อินเทอร์รัพท์นี้ใช้ติดตั้ง ROM Resident BASIC ในเครื่องพีซี อินเทอร์รัพท์หมายเลข 19H : บูตแสตรป (Bootstrap) อินเทอร์รัพท์นี้ใช้บูตเครื่อง (ลองเรียกใช้บริการนี้ด้วยดีบัก) อินเทอร์รัพท์หมายเลข 1AH บริการที่ 0 : อ่านเวลาของวัน อินพุต AH = 0 เอาต์พุต CX = เวิร์ดสูงของ timer count DX = เวิร์ดต่ำของ timer count AL = 0 ถ้าไทเมอร์ยังไม่เกิน 24 ชั่วโมงนับตั้งแต่การอ่านครั้งสุดท้าย ข้อสังเกต timer count มีค่าเพิ่มขึ้นชั่งโมงละ 65,536 อินเทอร์รัพท์หมายเลข 1AH บริการที่ 1 : กำหนดเวลาของวัน อินพุต AH = 0 CX = เวิร์ดสูงของ TIMER COUNT DX = เวิร์ดต่ำของ TIMER COUNT ข้อสังเกต TIMER COUNT มีค่าเพิ่มขึ้นชั่งโมงละ 65,536 อินเทอร์รัพท์หมายเลข 1BH : แอดเดรสของคีย์บอร์ดเบรก อินเทอร์รัพท์หมายเลข 1CH : ไทเมอร์ติกอินเทอร์รัพท์ (Timer Tick Interrupt) อินเทอร์รัพท์หมายเลข 1DH : ตารางวีดิโอพารามิเตอร์ อินเทอร์รัพท์หมายเลข 1EH : ดิสเกตต์พารามิเตอร์ อินเทอร์รัพท์หมายเลข 1FH : นิยามอักขระกราฟิก อินเทอร์รัพท์หมายเลข 20H : เทอร์มิเนตโปรแกรม โปรแกรมส่วนใหญ่จบการทำงานด้วยอินเทอร์รัพท์นี้ |
อินเทอร์รัพท์หมายเลข 21H บริการที่ 0 : เทอร์มิเนตโปรแกรม อินพุต AH = 0 อินเทอร์รัพท์หมายเลข 21H บริการที่ 1 : รับข้อมูลจากคีย์บอร์ด (คีย์บอร์ดอินพุต) อินพุต AH = 1 เอาต์พุต AL = รหัสแอสกีของอักขระที่กดซึ่งจะถูกแสดงบนจอภาพให้เห็นด้วย อินเทอร์รัพท์หมายเลข 21H บริการที่ 2 : ส่งอักขระไปยังจอภาพ อินพุต AH = 2 DL = รหัสแอสกีของอักขระ อินเทอร์รัพท์หมายเลข 21H บริการที่ 3 : รับข้อมูลจากอุปกรณ์ช่วยมาตรฐาน (Standard Auxiliary Device) อินพุต AH = 3 เอาต์พุต AL = รหัสแอสกีของอักขระ อินเทอร์รัพท์หมายเลข 21H บริการที่ 4 : ส่งอักขระไปยังอุปกรณ์ช่วยมาตรฐาน อินพุต AH = 4 DL = รหัสแอสกีของอักขระ อินเทอร์รัพท์หมายเลข 21H บริการที่ 5 : ส่งอักขระไปยังพรินเตอร์ อินพุต AH = 5 DL = รหัสแอสกีของอักขระ อินเทอร์รัพท์หมายเลข 21H บริการที่ 6 : คอนโทรล I/O อินพุต AH = 6 DL = รหัสแอสกีของอักขระ เอาต์พุต DL = FF --> ส่งอักขระไปยังคอนโทรลโดยไม่แสดงบนจอภาพให้เห็น อินเทอร์รัพท์หมายเลข 21H บริการที่ 7 : รับข้อมูลจากคอนโทรลโดยไม่แสดงบนจอภาพให้เห็น อินพุต AH = 7 เอาต์พุต AL = รหัสแอสกีของอักขระที่กด หมายเหตุ บริการนี้ไม่ตรวจสอบการกด < Ctrl > - < Break > หรือ อินเทอร์รัพท์หมายเลข 21H บริการที่ 8 : รับข้อมูลจากคอนโทรลโดยไม่แสดงบนจอภาพให้เห็น เหมือนบริการที่ 7 แต่เพิ่มการตรวจสอบการกด < Ctrl - C > หรือ < Ctrl - Break > อินพุต AH = 8 เอาต์พุต AL = รหัสแอสกีของอักขระที่กด อินเทอร์รัพท์หมายเลข 21H บริการที่ 9 : พิมพ์สตริงก์ อินพุต DS:DX ชี้ไปยังสตริงก์ที่ลงท้ายด้วยเครื่องหมาย $ AH = 9 อินเทอร์รัพท์หมายเลข 21H บริการที่ A : สตริงก์อินพุต อินพุต AH = 0AH [DS:DX] = ขนาดของบัฟเฟอร์ เอาต์พุต สตริงก์ที่รับเข้ามาทางคีย์บอร์ดถูกเก็บไว้ในบัฟเฟอร์ซึ่งอยู่ที่ DS:DX อักขระที่กดจะถูกแสดงบนจอภาพให้เห็นด้วย หมายเหตุ บริการนี้ตรวจสอบการกด < Ctrl > - < Break > หรือ อินเทอร์รัพท์หมายเลข 21H บริการที่ 0BH : ตรวจสอบสถานะของอินพุต อินพุต AH = 0BH เอาต์พุต AL = FF --> มีข้อมูลถูกอ่านเข้ามาแล้ว AL = 00 --> ไม่มีข้อมูลใดถูกอ่านเข้ามา หมายเหตุ บริการนี้ตรวจสอบการกด < Ctrl > - < Break > หรือ อินเทอร์รัพท์หมายเลข 21H บริการที่ 0CH : เคลียร์คีย์บอร์ดบัฟเฟอร์และเรียกใช้บริการ อินพุต AH = 0CH AL = หมายเลขบริการที่เกี่ยวกับคีย์บอร์ด เอาต์พุต แสดงผลตามบริการที่เกี่ยวกับคีย์บอร์ดนั้น ๆ หมายเหตุ บริการนี้ตรวจสอบการกด < Ctrl > - < Break > หรือ อินเทอร์รัพท์หมายเลข 21H บริการที่ 0DH : รีเซตดิสก์ อินพุต AH = 0DH อินเทอร์รัพท์หมายเลข 21H บริการที่ 0EH : รีเซตดิสก์ อินพุต AH = 0EH DL = หมายเลขไดรฟ์ DL = 0 --> A DL = 1 --> B และอื่น ๆ อินเทอร์รัพท์หมายเลข 21 H บริการที่ 0FH : เปิดไฟล์ที่มีอยู่แล้วในดิสก์ อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 10H : ปิดไฟล์ อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 11H : ค้นหาไฟล์ที่ตรงกันเป็นไฟล์แรก อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 12H : ค้นหาไฟล์ต่อไปที่ตรงกัน อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 13H : ลบไฟล์ อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 14H : อ่านไฟล์แบบซีเควนเชียล อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 15H : เขียนไฟล์แบบซีเควนเชียล อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 16H : ครีเอดไฟล์ อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 17H : เปลี่ยนชื่อไฟล์ อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 18H : ใช้งานภายในดอส อินเทอร์รัพท์หมายเลข 21 H บริการที่ 19H : หาดิสก์ปัจจุบัน อินพุต อินเทอร์รัพท์หมายเลข 21 H บริการที่ 1AH : กำหนดตำแหน่ง DTA อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 1BH : ข้อมูล FAT ของดีฟอลต์ไดรฟ์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 1CH : ข้อมูล FAT ของไดรฟ์ที่ระบุ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 1DH ถึง 20H : ใช้งานภายใน DOS อินเทอร์รัพท์หมายเลข 21H บริการที่ 21H : อ่านไฟล์แบบแรนคอม อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 22H : อ่านไฟล์แบบเรนดอม อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 23H : ขนาดของไฟล์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 24H : กำหนดเรนดอมเรคอร์ดฟิลด์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 25H : กำหนดอินเทอร์รัพท์เวกเตอร์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 26H : สร้าง PSP ใหม่ อินเทอร์รัพท์หมายเลข 21H บริการที่ 27H : อ่านบล็อกแบบแรนดอม อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 28H : เขียนไฟล์แบบแรนดอม อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 29H : พารส์ชื่อไฟล์ (Parse File Name) อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 2AH : อ่านวันทื่ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 2BH : กำหนดวันทื่ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 2CH : อ่านเวลา อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 2DH : กำหนดเวลา อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 2EH : กำหนดสถานะของการตรวจสอบ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 2FH : อ่านที่อยู่ของ DTA ปัจจุบัน อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 30H : อ่านหมายเลขรุ่น (เวอร์ชัน) ของดอส อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 31H : จบการทำงานโดยที่โค้ดยังคงค้างอยู่ในหน่วยความจำ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 32H : ใช้งานภายในดอส อินเทอร์รัพท์หมายเลข 21H บริการที่ 33H : ตรวจสอบการกด < BREAK > อินเทอร์รัพท์หมายเลข 21H บริการที่ 34H : ใช้งานภายในดอส อินเทอร์รัพท์หมายเลข 21H บริการที่ 35H : อ่านอินเทอร์รัพท์เวกเตอร์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 36H : อ่านจำนวนที่ว่างในแผ่นดิสก์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 37H : ใช้งานภายในดอส อินเทอร์รัพท์หมายเลข 21H บริการที่ 38H : รีเทิร์นข้อมูลที่ขึ้นกับประเทศ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 39H : สร้างสับไดเรกเทอรี อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 3AH : ลบสับไดเรกทอร์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 3BH : ย้ายสับไดเรกทอรี อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 3CH : สร้างไฟล์ (ใช้ไฟล์แฮนเดิล) อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 3DH : เปิดไฟล์ (ใช้ไฟล์แฮนเดิล) อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 3EH : (ใช้ไฟล์แฮนดิล) อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 3FH : อ่านจากไฟล์หรือดีไวซ์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 40H : เขียนลงไฟล์หรือดีไวซ์ อินพุต อินเทอร์รัพท์หมายเลข 21H บริการที่ 41H : ลบไฟล์ อินพุต |