有人能解释一下这种类型的循环是如何工作的吗,我从一个总延迟为1秒的代码中提取了它,我不明白LOOP 2和3的功能。
DELAY:
MOVLW 0X44
MOVWF C1
LOOP3:
MOVLW 0X33
MOVWF C2
LOOP2:
MOVLW 0X44
MOVWF C3
LOOP1:
DECFSZ C3
GOTO LOOP1
DECFSZ C2
GOTO LOOP2
DECFSZ C1
GOTO LOOP3
RETURN
END
1条答案
按热度按时间nwnhqdif1#
汇编语言是很难被人类阅读的。它没有我们可以轻易阅读的可见的层次代码结构。但另一方面,汇编语言的局限性只是它的架构的天空,我的意思是它的强大和灵活。
下面这个循环的C实现将帮助初学汇编的人理解这个循环是如何工作的,并给予他们一些启示。实际上,如果你写下面的C代码并看一下它的反汇编,你会看到类似的汇编代码。
正如其他人所说,您将有一个 0x44 * 0x33 * 0x44 迭代,等于 * 235,824 * 迭代,除非我们不计算
CALL
和RETURN
指令。