[org 0x0100]

num: db 0
factorial: dw 1
VUID: db 1,2,3,4,5,6,7,8
mov bx,0
jmp start
fact: mov ax, byte[num]
fact_loop: mul word[factorial]
sub ax,1
cmp ax,0
jg fact_loop
start: mov bx,0
mov cx,[VUID+bx]
add bx,1
shr cx,1
jc start
mov [num],cx
call fact

mov ax, 0x4c00
int 0x21

    when i  treid to run upper program in nasm it shows an error :8:error: mismatch in operand sizes

So much wrong here. Your post title doesn't tell me much about what you want to talk about then you post code but not in the right format (some moderators fix this for you) and then I'm left to guess this is some 80x86 code.

Frankly I'd fix some of those issues then try some assembler IDE system where you can single step to the line of where the issue is and then tell what line that is.