spludgey 0 Newbie Poster

I'm doing the following microprocessor assignment (no, I won't ask you to do it for me).

Time Delay: Write a program, which will cause a time delay of N seconds. The number N must
be picked up from a memory location. The time delay must be 2N if the number next to the
above location (at high address) is ODD except when the number in this location is $B, in which
case the time delay is N seconds.

Here is what I've got for the 286 one so far:

start: mov ax,[200]
mov bx, [201]
cmp bx, 0Bh
je even

and bx,01h
jz even
shl ax,01h

even:

How can I put a time delay in? The only thing I think of is that I make a stupid for loop with jumps and then count how many clock cycles it takes and then divide it by the frequency. And make it run how ever many thousand times needed.
Is there a simpler way?

And here is the 68hc11 one I've written:

LDAA 0F00 ;load contents of 0f00 into A
LDAB 0F01 ;load contents of 0f01 into B
CMPB #0B ;compare to see if B=$B
BEQ number1 ;jump to number1 (where ever that is)
LDAB 0F01 ;load B, don't know if it got modified
ANDB #01 ;checks if number is odd
BEQ number1 ;goes to number1 if even
ASLA ;arithmetic shift left, effectifly *2

;number1
LDX   #09C4 ;2500 as the loop is 8 cycles, assuming 2MHz
;number2
NOP
DEX
BNE   number2
DECA  
BNE   number1

;RTS

is it right so far?
he timing loop was taken from here and modified.