Почему в данном коде не работают остальные модели памяти (работает только модель памяти flat)?
Так у вас же 32-битный код. Все эти "модели памяти" и различия между ними - это все из мира 16-бит. В мире 32-бит модель задает ОС, прикладная программа ничего с этим не может поделать.
Потому что в них нет необходимости. "Модели памяти" были введены от безысходности, от невозможности адресовать всю область памяти одним регистром чтобы хоть как-то дать возможность программисту адресовать память и для того, чтобы обьем exe файла выходил меньше. Идея com-файлов и модели памяти .TINY оттуда же. Если только не для МК программируете, про "модели памяти" можно спокойно забыть - она всегда будет .FLAT