Como definir 1 segundo atraso de tempo na linguagem assembly 8086

Meu problema é que eu escrevi um código que deveria gerar um resultado em um conjunto de LEDs conectados à porta paralela. Quando eu corri o código, praticamente não fez nada. Meu instrutor me disse que o código correu tão rápido que meus olhos não viram o que aconteceu.

Descobri que existem algumas maneiras de fazer um atraso de tempo, tentei fazer um loop no NOP, mas acho que não posso realmente determinar o que está acontecendo. Existe alguma maneira melhor?

Eu tenho aqui uma parte do código onde eu tenho que adicionar um atraso em:

org 100h

mov ax, 0
mov dx, 378
out dx, ax
mov ax, 1  

; 1st

mov cx, 1ah
start1st:
mov ax, 1
left:
out dx, ax 
; --------------------------------> how to loop?
mov bx, 2
mul bx
cmp ax, 80h
jl left
dec cx
cmp cx,0
jg start1st
; end 1st 

questionAnswers(6)

yourAnswerToTheQuestion