|
发表于 2011-4-23 15:38:16
|
显示全部楼层
回复【9楼】jrcsh 邪恶的小会会
回复【5楼】jq_lin
请教楼主,能否用于删除汇编语言中分号(;)后面的注释?
-----------------------------------------------------------------------
k51 不 哈哈 如果是我有空到也可以试试写个玩玩
你给些代码我试试
楼主能写得出c 用的 哪汇编的也一样
-----------------------------------------------------------------------
小会会,应你之求,如下一段汇编和注释,供你试试、玩玩。
要求:
1.分号不在行首的注释行要删除;
2.分号前的空格和Tab也要删除;
3.分号在行首的注释行要保留;
4.行首有分号的语句要保留。
; ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
; ....................................................................................................
; 正常运行时的循环等待区,循环等待期间响应按键和中断。 (041024建立)(081018更新)
again:
btfss PORTC,2 ; 检测是否处于制动进程中 (081018增加)
btfsc PORTC,1
goto rb0check ; 应对制动进程中禁止制动开关被闭合的特例
goto rb1230 ; 确无制动,才准许RB1、RB2、RB3键操作和显示RB0位的状态。
rb0check: ; 制动进程中,检测禁止制动开关是否闭合。 (081018增加)
call dly_10ms ; 等待半个周期再检测,以错开低电平的同步信号。 (081018增加)
movfw PORTB ; 读取输入口状态数据
movwf RBtemp
btfss RBtemp,0 ; 检测RB0的状态
goto rb0 ; 结果为0,禁止制动开关被闭合,转去制动进程的终止处理。
goto again ; 结果为1,禁止制动开关没有闭合,返回等待INT中断。
rb0: ; 制动进程的终止处理 (081018增加)
bcf INTCON,INTE ; 清INT中断允许位
bcf PORTC,2 ; 制动结束,清正转制动标志位,“正转制动FB”灯灭。
bcf PORTC,1 ; 制动结束,清反转制动标志位,“反转制动RB”灯灭。
clrf DELAYK ; 清制动前延时完成标志位(制动前延时计数器7位)
clrf BRAKES ; 清制动同步脉冲间隔计数器
goto stop ; 停止处理
rb1230: ; 确无制动,才准许RB1、RB2、RB3键操作和显示RB0位的状态。
movfw PORTB ; 读取输入口状态数据
movwf RBtemp
btfss RBtemp,1 ; 检测RB1的状态,结果为0,表明RB1键被按下。
call rb1 ; 逐次显示输入、输出口状态历史记录
btfss RBtemp,2 ; 检测RB2的状态
call rb2 ; 逐次显示运行参数(含硬件、软件版本记录)
btfss RBtemp,3 ; 检测RB3的状态
goto rb3 ; 休眠关机及其唤醒处理。注意用goto,而不是call。
btfss PORTA,0 ; 检测RA0的状态
goto ra0 ; 特殊管理员处理全部运行参数和ID (090830增加)
btfss PORTA,1 ; 检测RA1的状态
goto ra1 ; 用户管理员处理多数运行参数和ID (090830增加)
btfss PORTA,2 ; 检测RA2的状态
goto ra2 ; 用户操作员处理少数运行参数和ID (100818增加)
movfw RBtemp ; 检测RB0的变化,显示RB0位的状态。 (050816增加)
xorwf iSTATE,0 ; 与前一次输入状态比较
andlw 0x01 ; 取得RB0位的变化
skpz
call dispio ; 在无制动、RB0位有变化时,强制刷新输入、输出口状态显示。
;lcddsp: ; LCD显示其它数据后恢复显示当前输入、输出口状态 (081018增加)
; btfss LCDDSP,0 ; 检测标志参数LCDDSP的0位,确定是否应RB1、RB2键要求显示过其它数据。
; ; 为1,表示LCD显示过其它数据,可能需要恢复显示当前输入、输出口状态。
; goto again ; 为0,表示LCD未曾应RB1键或RB2键要求显示其它数据,不需要恢复显示。
; btfsc LCDDSP,7 ; 检测标志参数的7位,为0,表示没有恢复LCD显示当前输入、输出口状态。
; goto again ; 为1,表示已经恢复显示当前输入、输出口状态,不再刷新,以消除屏闪。
; clrf LCDDSP ; 清标志参数0、7位。
; bsf LCDDSP,7 ; 恢复LCD显示当前输入、输出口状态之前,先置已经恢复LCD显示标志位7。
; call st0 ; 恢复LCD显示当前输入、输出口状态。
; 逐次显示输入、输出口状态历史记录子程序(rb1)已经更新重建,以上注销并留存。 (090911注销)
goto again
; ****************************************************************************************************
杯具了,忘记本论坛不支持Tab,只好重新编辑,所有的Tab都用空格代替。 |
|