Primero y principal es que eso no parece que deba ser compilado por un compilador de C/C++ sino que parece ser un modulo de assembly independiente. De otra manera solo serian instrucciones encerradas entre asm { } o algo parecido (__asm por ejemplo). Puede ser para enlazar mediante codigo objeto (.obj) por ejemplo o libreria estatica (.lib).
Segundo, el codigo tal como lo mostras no ensambla de ninguna manera. Si cambiamos la linea DATA ends por _DATA ends tal vez podria ensamblar en alguna version de MASM, en la que yo tengo de 16 bits no ensambla por esto:
_DGROUP GROUP _DATA
Segun encontre por ahi es valido pero no se ...
Igualmente si sabes usar TASM, adapta este codigo que es lo unico que realmente hace el trabajo:
PUSH BP
MOV BP,SP
MOV AH,02H
MOV BX,0
MOV DH,[bp+4]
MOV DL,[bp+6]
INT 10H
POP BP
RET
Solo cambie los equ's de row y col pero me parece que TASM tambien los soportaba ... e incluso tenia una forma de ensamblar segun MASM ...