这是《arm嵌入式系统基础教程》的一个示例。 ; 文件名:TEST1.S ; 功能:实现两个寄存器相加 ; 说明:使用ARMulate软件仿真调试 AREA Example1,CODE,READONLY ENTRY CODE32 START MOV R0,#0 MOV R1,#10 LOOP BL ADD_SUB B LOOP
ADD_SUB ADDS R0,R0,R1 MOV PC,LR END 这个程序是无限执行的。 问题:如果将B LOOP改为BPL LOOP 程序还是无限执行。当R0=R0+R1执行了一定时间后一定会使条件码0100(即N=1),那么根据条件就不会执行 BPL LOOP ,也就是不会执行子程序ADD_SUB了。但是根据编译运行还是无限制执行同时还执行子程序ADD_SUB。我就不明白。希望各位朋友帮我明白其中的原因。谢谢!!! |