ИМХО, надо преподавать в школах.
Что бы понимали люди Суть программирования.
А зная Ассемблер можно выучить любой другой язык программирования.
-a
119A:0100 xor al,al ;гашение всего окна
119A:0102 mov bh,70 ;белое окно
119A:0104 mov ch,10 ;четыре координаты прямоугольника
119A:0106 mov cl,10
119A:0108 mov dh,20
119A:010A mov dl,20
119A:010C mov ah,06 ;такая-то функция прерывания
119A:010E int 10 ;Go!!
119A:0110 int 20 ;выход...
119A:0112
-r cx ;в CX - сколько байтов программы
;писать 112h-100h=12h
CX 0000
:12
-n @int10.com
-w
Запись: 00012 байтов
:0100 XOR AL,AL ;ПРИМЕЧАНИЕ: с целью экономии пространства и
:0102 MOV BH,10 ;времени мы немножко сократили наш DEBUG-й
:0104 MOV CH,05 ;листинг, т.е. убрали адрес сегмента и
:0106 MOV CL,10 ;машинные коды, соответствующие мнемоническим
:0108 MOV DH,10 ;командам :))
:010A MOV DL,3E ;А так, конечно, в оригинале первая строка вот
:010C MOV AH,06 ;как должна выглядеть:
:010E INT 10 ;11B7:0100 30C0 XOR AL,AL
:0110 INT 20
http://www.wasm.ru/article.php?article=1022001
PS Программу (если угодно, язык программирования) debug можно запустить из любого WIndows:
Кнопка ПУСК-Все программы-Стандартные-Командная строка
(вот вы и запустили виртуальный древний DOS)
C:\>debug
-?
assemble A [адрес]
compare C диапазон адрес
dump D [диапазон]
enter E адрес [список]
fill F диапазон список
go G [=адрес] [адреса]
hex H значение1 значение2
input I порт
load L [адрес] [диск] [превый_сектор] [число]
move M диапазон адрес
name N [путь] [список_аргументов]
output O порт байт
proceed P [=адрес] [число]
quit Q
register R [регистр]
search S диапазон список
trace T [=адрес] [значение]
unassemble U [диапазон]
write W [адрес] [диск] [первый_сектор] [число]
выделение памяти EMS XA [#число_страниц]
освобождение памяти EMS XD [дескриптор]
сопоставление страниц EMS XM [Lстраница] [Pстраница] [дескриптор]
вывод состояния памяти EMS XS
-q
C:\>exit