反汇编时选择了bank1,却用了bank0的寄存器会发生什么事....

[复制链接]
 楼主| 兮兮松摇 发表于 2016-7-15 14:07 | 显示全部楼层 |阅读模式
如程序,大神们求教
CLRF   FSR
        MOVLW  1FH
        ANDWF  STATUS, 1
        MOVLW  0AH
        BSF    STATUS, RP0
        MOVWF  TXREG
        MOVLW  22H
XIEYUANBIN 发表于 2016-7-15 20:51 | 显示全部楼层
并非用了BANK0的寄存器,在PIC 的8位机中,内存寻址是不管最高位的。最高位和第9位由页面(BANK)位决定。

评分

参与人数 1威望 +1 收起 理由
兮兮松摇 + 1 很给力!

查看全部评分

XIEYUANBIN 发表于 2016-7-15 20:51 | 显示全部楼层
你是否在**别人的程序
NE5532 发表于 2016-7-15 21:39 | 显示全部楼层
访问不在本页面的寄存器,实际操作了本页面该地址上的寄存器。PIC搞反汇编,够弄死人的,楼主不如自己写算了。
 楼主| 兮兮松摇 发表于 2016-7-16 12:02 | 显示全部楼层
XIEYUANBIN 发表于 2016-7-15 20:51
并非用了BANK0的寄存器,在PIC 的8位机中,内存寻址是不管最高位的。最高位和第9位由页面(BANK)位决定。 ...

请你说得再详细一些呢?
XIEYUANBIN 发表于 2016-7-16 13:52 | 显示全部楼层
在汇编中,直接寻址只关心低7位,其余的有两位BANK位管理
 楼主| 兮兮松摇 发表于 2016-7-18 09:00 | 显示全部楼层
XIEYUANBIN 发表于 2016-7-16 13:52
在汇编中,直接寻址只关心低7位,其余的有两位BANK位管理

那么如果说是这样
        BSF    STATUS, RP1
        MOVWF  PIR2
        BSF    STATUS, RP0
        BCF    PIR1, PSPIF
        BSF    PIR1, TMR1IF
已经是bank3了,但是在bank3中对应的PIR1那又是什么情况啊
 楼主| 兮兮松摇 发表于 2016-7-18 09:00 | 显示全部楼层
兮兮松摇 发表于 2016-7-18 09:00
那么如果说是这样
        BSF    STATUS, RP1
        MOVWF  PIR2

bank3中没有对应PIR1的
XIEYUANBIN 发表于 2016-7-19 08:41 | 显示全部楼层
你这是反汇编过来的,反汇编的程序识别是没办法区分你的程序在BANK多少。你自己去看看BANK0 和 BANK3 对应位置内存的地址,去掉最高位都是一样的
zhanzr21 发表于 2016-7-21 13:41 | 显示全部楼层
你可能沒有搞清楚PIC的詢址模式
SFR只存在於最後一個BANK 和 ACCESS BANK
如果用好的反匯編器, 會顯示出你現在用哪種尋址模式的
比如:
  1.         MOVWF 0x9F, BANKED

  1.         BTFSC PORTA, 6, ACCESS
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

9

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部