Are we able to move a memory operand to a segment register in these ways using MOV instruction in assembly(x86) language ?
1.
MOV DS,[BX]
2.
MOV DS,[6401H]
Are we able to move a memory operand to a segment register in these ways using MOV instruction in assembly(x86) language ?
1.
MOV DS,[BX]
2.
MOV DS,[6401H]
Yes, both addressing modes are valid.
You've got this question tagged both Masm and Nasm. They're not the same, y'know! To convince Masm you want a memory reference, you may need to do mov ds, ds:[6401h] - strange, I know, but that's the syntax of the assembler - or was, the last time I used Masm (long time ago!). The redundant ds: is optimized away in Masm, Nasm would emit it. If Fasm won't do this, Fasm is broken (which I doubt! Tomasz is a genius!)... just tried it with Fasm - works fine!
Incidentally, 32-bit addresses do involve a segment register - the OS sets 'em up, and it is rare to use 'em in "userland" code, but they're still there! (64-bit code, no - but I'm less sure of that).
Dude - nobody even uses the DS register this century :)!
I'd strongly encourage you to learn 32-bit assembler. If you have access to Linux, this is an excellent resource:
To answer your question - I believe "No". You typically load DS from the AX register (although you can certainly use any of the other three general-purpose registers).
To be absolutely sure, you should look it up in the Intel reference manual (you should be able to find it on Google).
PS:
When I say "32-bit", I hasten to add that anything you learn for x86-32 is directly applicable to x86-64. But much (most?) of the stuff you learn for 16-bit DOS is not applicable to any contemporary (read: virtual memory/linear address space) system.
IMHO...