I coded in ASM for last time 4 years ago, so things could have changed since then.
VirtualBox is popular. This is the main plus of it. Although Virtual Box is an emulator(it is slower). I don't know if it changed in the last years.
KVM is super mega fast in my own experience. But it is Linux…. at the risk to touch the feelings of some Linux-Akbar members of the forum, in my own experience, Linux is very unstable. I can watch a simple video and it can crash in all possible ways. In windows you can see a blue screen with some vague explanation. On Linux you can see green aliens on screen, or it can start painting picassos around. But if you want to super mega learn, Linux is your option.
Personally, i developed in Hyper-V. It is a hypervisor, not an emulator, so it is much faster than Virtual Box. It is stable. You have not hardware choices more than the number of the CPUs, the number of the HDDs etc. If you download the 90 days trial of Windows enterprise, Hyper-V is free, because it is included in the Windows Enterprise version.
For Hyper-V you need to create by hand a virtual disk file. It is just a header and then your code. I don't know if Virtual Box is allowing you to just copy paste the content of the disk in a file and go. Hyper-V requires a header.
If you work with the drivers of BIOS, all you need to cover as hardware support is AMD and Intel. They are similar, but they have differences. I worked only for Intel because of my own choice and needs.
I used NASM to code in ASM, never had a single problem with it. I hope it still exists! It was 4 years ago i coded for last.
Some DOS games to inspire you:
https://www.dosgames.com/game/chex-quest-2/
You can play it in the browser.
https://www.mobygames.com/images/promo/l/99532-ancient-domains-of-mystery-screenshot.jpg
(If you want to learn ASM in order to find a job in ASM… think twice… ASM is so specific, if you did amazing things in OS, you might not be able to find a job in ASM app programming. Because you are not specialized in the field. Anything you do in ASM is very specific and you can find a job ONLY in that very specific field. Not like with high level languages where you could be coding an App for Windows a day and another kind of App the other day… for a fridge.)