Прерывание - это способ прерывания процессора с помощью уведомления для обработки чего-то другого, я не уверен в чипе Intel 8080, но из моего опыта лучший способ описать прерывание заключается в следующем:
CS:IP
(Сегмент кода: указатель инструкций) находится на этой инструкции по адресу памяти 0x0000: 0020, в качестве примера для объяснения этого с помощью инструкций Intel 8086, ассемблер является бредом и не имеет реальный смысл ... инструкции творческие
0x0000:001C MOV AH, 07
0x0000:001D CMP AH, 0
0x0000:001E JNZ 0x0020
0x0000:001F MOV BX, 20
0x0000:0020 MOV CH, 10 ; CS:IP is pointing here
0x0000:0021 INT 0x15
Когда CS: IP указывает на следующую строку и выдается INT
с ошибкой 15 шестнадцатеричных, это то, что происходит, CPU помещает регистры и флаги в стек, а затем выполняет код в 0x1000: 0100, который обслуживает INT 15 в качестве примера
0x1000:0100 PUSH AX
0x1000:0101 PUSH BX
0x1000:0102 PUSH CX
0x1000:0103 PUSH DX
0x1000:0104 PUSHF
0x1000:0105 MOV ES, CS
0x1000:0106 INC AX
0x1000:0107 ....
0x1000:014B IRET
Затем, когда CS: IP нажимает на инструкцию 0x1000: 014B, выдается IRET
(Interrupt RETurn), который выскакивает из ВСЕХ регистров и восстанавливает состояние, и когда он выполняется, CPU CS: IP указывает назад здесь, после инструкции в 0x0000: 0021.
0x0000:0022 CMP AX, 0
0x0000:0023 ....
То, как процессор знает, куда перейти к определенному смещению, основано на таблице векторов прерываний, эта таблица векторов прерываний устанавливается BIOS в определенном месте в BIOS, это будет выглядеть так:
INT BIOS's LOCATION OF INSTRUCTION POINTER
--- --------------------------------------
0 0x3000
1 0x2000
.. ....
15 0x1000 <--- THIS IS HOW THE CPU KNOWS WHERE TO JUMP TO
Эта таблица сохраняется в BIOS, и при выполнении INT
15 BIOS перенаправляет CS: IP в местоположение в BIOS для выполнения служебного кода, который обрабатывает прерывание.
В прежние времена, в Turbo C, было средство переопределения подпрограмм таблицы векторов прерываний вашими собственными функциями обработки прерываний, используя функции setvect
и getvect
, в которые были перенаправлены фактические обработчики прерываний. на ваш собственный код.
Надеюсь, я объяснил это достаточно хорошо, хорошо, это не Intel 8080, но это мое понимание, и я уверен, что концепция этого чипа такая же, как и в семействе чипов Intel x86.