basic question
BebopALot
Posts: 79
Hey folks, I have some code generated for a delay. I am new to assembly - what is the JMP$+2 command doing? I assume this is some type of nested loop arrangement...Hex 93 = 147 (decimal) and 0b = 11 (decimal). How does this loop waste 18940 cycles? The product of the 2 is only 1617. Does it serve a multiplier function?
; Delay = 0.0037 seconds
; Clock frequency = 5.12 MHz
; Actual delay = 0.0037 seconds = 18944 cycles
; Error = 1.92038577232e-014 %
;18940 cycles
mov w, #$93
mov Long_Delay1, w
mov w, #$0B
mov Long_Delay2, w
Delay_A:
decsz Long_Delay1
jmp $+2
decsz Long_Delay2
jmp Delay_A
;4 cycles
jmp $+1
nop
; Delay = 0.0037 seconds
; Clock frequency = 5.12 MHz
; Actual delay = 0.0037 seconds = 18944 cycles
; Error = 1.92038577232e-014 %
;18940 cycles
mov w, #$93
mov Long_Delay1, w
mov w, #$0B
mov Long_Delay2, w
Delay_A:
decsz Long_Delay1
jmp $+2
decsz Long_Delay2
jmp Delay_A
;4 cycles
jmp $+1
nop
Comments
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
·1+1=10
-BBAL