完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
先贴下PIC官方的介绍 :
GOTO 无条件跳转 语法: [ 标号] GOTO k 操作数: 0 ≤ k ≤ 2047 操作: k → PC<10:0> PCLATH<4:3> → PC<12:11> 受影响的状态位: 无 说明: GOTO 是无条件跳转指令。 11 位立 即数地址被装入PC 位<10:0>。 PC 高位从PCLATH<4:3> 装入。 GOTO 是一条双周期指令。 CALL 调用子程序 语法: [ 标号] CALL k 操作数: 0 ≤ k ≤ 2047 操作: (PC)+ 1 → TOS, k → PC<10:0>, (PCLATH<4:3>) → PC<12:11> 受影响的状态位: 无 说明: 调用子程序。首先,将返回地址 (PC+1)压入堆栈。 11 位立即数 地址被装入PC 位<10:0>。 将 PCLATH 装入PC 的高位。CALL 是一条双周期指令。 本人就是有个疑问,比如: GOTO S1 CALL S2 S1: XXXXXXX XXXXXX S2: xxxxxx xxxxxx CALL S2 XXX XXX 第一个CALL会不会起作用,GOTO S1运行到哪里结束? 是S1的最后一个语句么? 怎么返回? 第二个CALL S2运行到哪里? 在哪里结束?怎么返回? 刚接触这个东西,好多不懂,虚心请教,哪位可以帮我解答下迷惑,他们到底有什么不一样的? |
|
相关推荐
|
|
大家看下这样理解对不对:
GOTO的特点就是顺序执行,到达某个点,就顺序执行下去,单纯的跳跃 CALL则属于函数的调用,与他对应的必定有个RETURN 不遇到RETURN CALL就不会返回断点? |
|
|
|
|
|
上面程序是不是应该这样执行:
S1 S2 CALL S2(S2中必定有个RETURN 否则,不停的循环 语句 S2和CALL S2) S2 接下来执行的是CALL S2下面的语句XXX XXX 有没有人?大家来讨论一下? |
|
|
|
|
|
不容易啊。。。”bbs.elecfans.com
|
|
|
|
|
|
|
|
|
|
|
|
GOTO 是强制跳转指令,不管在子程序里还是别的地方(任何位置),PC都会到相应的地址。CALL是跳转指令,通常调用一个子程序时候用,是用返回指令的。如果在CALL的子函数中 执行GOTO 指令的话 将强制跳转,可能不执行RETURN
|
|
|
|
|
|
意思是不是 GOTO的话 就直接跳转到指定地址,然后顺序执行下去,没有返回 CALL的话,是不是先保存现在的地址,然后跳转到指定的地址,也是顺序执行下去,直到遇到RETURN后,返回 我就是有点分不清,他们的作用范围是多少 比如: CALL X1 X1 : **** **** X2: **** **** RETURN 在这个里面,CALL是执行完X1后返回,还是执行到RETURN后返回? GOTO的话,有没有返回的功能? |
|
|
|
|
|
GOTO 没有返回功能 CALL是入栈(保存地址),RETURN是出栈(还原地址),GOTO是程序跑到固定的地址往下执行。 比如 CALL X1 X1:NOP BTFSC LOGIC_FLAG,4 GOTO X2 RETURN 就是说 如果L_F,4是0的话 就执行RETURN 去入栈处的那地方 网下执行 如果L-F,4是1的话,就去X2那个地方往下执行了。所以说GOTO 是强制跳转。
|
|
|
|
|
|
非常感谢,刚接触,很多基本概念不是太清楚, 总看书,在理解上还是达不到,还是要通过实践和讨论来提升 多谢您了~~~~~ |
|
|
|
|
|
LADR_0x0707 MOVF LRAM_0x7F,W CALL LADR_0x070F MOVWF INDF INCF LRAM_0x7F,F INCF FSR,F DECFSZ LRAM_0x7E,F GOTO LADR_0x0707 RETURN LADR_0x070F ADDWF PCL,F ; !!Program-Counter-Modification RETLW 0xC8 ; b'11001000' d'200' RETLW 0xC4 ; b'11000100' d'196' RETLW 0x97 ; b'10010111' d'151' RETLW 0x36 ; b'00110110' d'054' "6" RETLW 0xA2 ; b'10100010' d'162' RETLW 0x8F ; b'10001111' d'143' RETLW 0xFC ; b'11111100' d'252' end 请问一下这样的,遇到end了,call是不是结束了呢??如果结束了,call后面的语句是不是多余了吗? |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2096 浏览 1 评论
3648 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2345 浏览 2 评论
2774 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
4058 浏览 5 评论
1000浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6386浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 11:15 , Processed in 0.918624 second(s), Total 93, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号