登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

关于一条PIC18的汇编指令

作者:Dick Hou 栏目:单片机
关于一条PIC18的汇编指令
Addr    Opcode   ;
01F8    E019     BZ 0x22c

BZ n指令的机器码是 1110 0000 nnnn nnnn,但是上述指令E019为什么会跳到0x22C?
我的理解是这样的:
01F8+2+19<<1,即
0000 0001 1111 1000
+                10
+        1 0011 001
--------------------
0000 0010 0010 1100
结果为022C,但上面的第一个1应该省掉,即002C,要不然怎么往回跳(nn看成负数)?例如下面这条指令是往回跳的:

022A    D7DE     BRA 0x1e8

BRA n的机器码是1101 0nnn nnnn nnnn,所以
0000 0010 0010 1010
+                10
+     1111 1011 110
--------------------
0001 0001 1110 1000
     |___________|这11位组成新的PC[11:1],PC的其它位保留,所以可以跳到0x1e8。

* - 本贴最后修改时间:2005-7-31 17:33:01 修改者:Dick Hou

参与讨论
昵称:
讨论内容:
 
 
相关帖子
问一个很弱的问题
这几个语言,是什么意思?
请教个PIC加法进位的问题
请教基准电源的选用
大家好,我对分频器不太了解,书也看过了
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号