Yes it can be done: just because something isn't directly supported by the processor doesn't mean you can't use it in assembler - think about a BigInt value where each decimal digit is stored in a nibble - so two digits fit in a byte - and an arbitrary number of them can be put together in a block of memory to form an arbitrarily large number that you can still do math with - provided you write the +, -, * / ^, and % operators in assembler to process them!
Decimal numbers in C# are the same:
Decimal Struct (System) | Microsoft Docs[
^] - they don't correspond to any "processor aware" datatype, so the .NET framework contains code with implements maths operations on them.
You would have to use the (brief and seriously lacking in detail) information in the link to write assembler functions that process Decimal values, then accept and return 12 byte value pointers (probably) to communicate with .NET.
I've never seen it done, so it could be an interesting project for you!
[edit]
Have a look at the .NET reference source and you'll see the way Microsoft do it:
Reference Source[
^]
[/edit]