这个是义隆单片机的汇编代码,我就截取了一部分,就3个简单的问题,各位大神帮我下吧!感激不尽 只学过C 第一次用汇编有点理不清额 START: R0 ==0X00 //间接地址寄存器 TCC ==0X01 PC ==0X02 STATUS==0X03 R4 ==0X04 IOC5==0X05 IOC6==0X06 PORT5==0X05 PORT6==0X06 IOCB ==0X0B IOCC ==0X0C IOCD ==0X0D IOCE ==0X0E IOCF ==0X0F RF ==0X0F DATA_R==0X10 ;显示缓冲区10H~27H DIS_CNT==0X28 ;行扫描寄存器 R_LOOP ==0X29 R_LOOP_24==0X2A SHIFT_R ==0X2B TIME_R ==0x2E TIME_R_1==0x2F DLY_TIME==@50 NUMBER==@35 CY==STATUS.0 ZERO==STATUS.2 CP_164==PORT5.0 ;定义164_CP端 SCK_595==PORT5.1 ;定义595_CP端 RCK_595==PORT5.2 ;定义595_RCK锁存端 OE_595==PORT5.3 ;定义595_OE端 SI_595_G==PORT6.0 ;定义595绿色SI端 SI_595_R==PORT6.1 ;定义595绿色SI端 SI_164==PORT6.6 ;定义164_SI端 GREEN_TEST==PORT6.7 ;定义595绿色测试端 ORG 0X000 JMP INITIAL_MAIN ////第一个问题是不明白,为什么这里要初始化两次,而且第二次还换了个地址再初始化 DISI RET NOP ORG 0X008 JMP INITIAL_MAIN NOP ORG 0X010 ////第二个问题是到这里换了个地址就结束了?问题是怎么运行到main里面的程序 感觉到这里好像结束了?? ;程序初始化 INITIAL_MAIN: DISI MOV A,@0XF0 IOW IOC5 ORT5设置为输出 MOV A,@0B10111000 IOW IOC6 ORT6设置 MOV A,@0B00111111 IOW IOCD CLRA ;TCC为外触发计数方式 IOW IOCE ;WDT禁止 IOW IOCF ;禁止中断被开放 MOV A,@0B11111000 MOV PORT5,A MOV A,@0B10110000 MOV PORT6,A ;CALL DLY250MS ;250毫秒延时 MAIN: //问题3:这个main 是像start一样固定用法的伪指令 还是就一个标识符没什么意义的伪指令? JBS GREEN_TEST JMP DIS_NO_SIGN ;禁止符号显示程序 MOV A,@NUMBER MOV DIS_CNT,A
|