У тебя тут три разных вопроса.
Моя программа запускается в bosh но не реагирует на прерывания клавиш
А какую реакцию ты ожидаешь? Введённый символ ты не печатаешь, si ты не перезагрузил, так что puts_loop загружает из памяти следующий 0 и тоже ничего не печатает. Можно сделать так чтобы увидеть, что int 16h таки работает:
keyboard_loop:
mov ah, 0
int 16h
mov ah, 0Eh
int 10h
jmp puts_loop
iso образ созданный dd не запускается в VB
А почему ты думаешь, что из mbr можно создать iso с помощью dd? Его вообще-то надо в правильное место поместить, не абы куда. Например это можно сделать так:
mkisofs --no-emul-boot -o test.iso -b test.bin .
где
test.bin
-- это твой бинарник бут-сектора.
а загрузочная флешка не отображается в BIOS
Это видимо следствие из того, как ты сделал iso который закатал на флэшку.