DIV nguồn (Unsigned Divide)
G A8 A7 A6 A5 A4 A3 A2 A1 A0 O0 O1 O2 O3 O4 O5 O6 O7 00010110000111
6.2.2. Đáp ứng của CPU khi có yêu cầu ngắt
Khi có yêu cầu ngắt với số hiệu ngắt N tác động đến chân tiếp nhận yêu cầu ngắt của CPU và nếu yêu cầu ngắt đó được chấp nhận (với những yêu cầu ngắt che được) thì CPU sẽ thực hiện dãy cơng việc sau:
• SP <= SP-2; {SP} <= FR (*chỉ ra đỉnh mới của Stack, cất thanh ghi cờ vào stack, trong đó {SP} là ơ nhớ do SP lưu giữ địa chỉ (trỏ tới)*).
• IF <= 0; TF <= 0; (*cấm các ngắt che được, chạy suốt*).
• SP <= SP-2; {SP} <= CS; (*chỉ ra đỉnh mới của Stack, cất địa chỉ segment của địa chỉ trở về vào stack*).
• SP <= SP-2; {SP} <= IP; (*chỉ ra đỉnh mới của Stack, cất địa chỉ offset của địa chỉ trở về vào stack*).
• IP <= {N*4}; CS <= {N*4+2}; (*lấy lệnh tại địa chỉ mới của chương trình con phục vụ ngắt kiểu N (số hiệu ngắt N) tương ứng trong bảng vector ngắt*).
• Tại cuối chương trình con phục vụ ngắt, khi gặp lệnh IRET, CPU sẽ thực hiện dãy các công việc trên theo thứ tự ngược lại, cụ thể:
o {SP} => IP; SP <= SP+2
o {SP} => CS; SP <= SP+2
o {SP} => FR; SP <= SP+2
(* Bộ vi xử lý quay lại thực hiện chương trình chính tại địa chỉ với giá trị cũ và thanh ghi cờ được lấy ra từ stakc *)
Trong thực tế, các ngắt mềm INT N đã bao trùm các loại ngắt khác nhau bởi vì Intel đã quy định một số kiểu ngắt đặc biệt được xếp vào đầu dãy ngắt mềm như sau:
• INT 0: Ngắt mềm do phép chia cho 0 gây ra.
• INT 1: Ngắt mềm để chạy từng lệnh với trường hợp cờ TF=1.
• INT 2: Ngắt cứng do tín hiệu tích cực tại chân NMI gây ra.
• INT 3: Ngắt mềm để đặt điểm dừng của chương trình tại một địa chỉ nào đó.
• INT 4: (Hoặc lệnh INTO) là ngắt mềm ứng với trường hợp tràn (OF=1).
Các kiểu ngắt khác còn lại được dành cho Intel và người sử dụng (IBM khơng hồn toàn tuân thủ các quy định này khi chế tạo các máy tính PC/XT, PC/AT):
• INT 5 – INT 1Fh: Dành riêng cho Intel trong các bộ vi xử lý cao cấp.
• INT 20h – INT FFh: Dành cho người sử dụng (trong đó hệ điều hành và BIOS đã sử dụng một phần).
Các kiểu ngắt N (trong INT N) đều tương ứng với các địa chỉ xác định của ISR mà ta có thể tra (lấy – hoặc đọc trực tiếp) trong bảng vector ngắt. Intel quy định bảng này nằm trong RAM bắt đầu từ địa chỉ 00000h và kéo dài 1 KB (kích thước này là vì: 8088 và 80x86 có 256 kiểu ngắt, mỗi kiểu ngắt ứng với một vector ngắt, một vector ngắt cần 4 byte để chứa địa chỉ đầy đủ cho CS và IP của chương trình con phục vụ ngắt, 2 byte để lưu CS, 2 byte khác để lưu IP nên: 256 (byte) x 4 = 1024 (byte) = 1 KB).