|
楼主 |
发表于 2009-12-19 15:27:00
|
显示全部楼层
没人发的话我抛砖引玉,发一个自己写的,小弟初学汇编,希望各位路过的指点一二。谢谢。
PROCESSOR P=P16F76
INCLUDE <P16F76.inc>
#define Arrlong 0x08
R0 EQU 0X20 ;在页0定义5个可直接寻址的内存单元
R1 EQU 0X21
R2 EQU 0X22
R3 EQU 0X23
R4 EQU 0X24
TAB0 EQU 0X28 ;在这里定义一个数组的起始位置
TAB1 EQU 0X38
ORG 0X0000
GOTO START
ORG 0X05
START:
LOOP:
MOVLW TAB0
MOVWF R1 ;传地址1
MOVLW TAB1
MOVWF R2 ;传地址2
MOVLW Arrlong
MOVWF R3 ;传比要较的个数
CALL CompareArr
GOTO LOOP
CompareArr:
MOVF R1,W ;将R0地址的内容读入R4
MOVWF FSR
MOVF INDF,W
MOVWF R4
MOVF R2,W ;指针指R1地址的内容放入 W
MOVWF FSR
MOVF INDF,W
SUBWF R4,W ;比较R4中的值和W的值
BTFSC STATUS,Z ;如果结果为 0 ,两数相等,跳到下一次比较
GOTO NEXT
BTFSC STATUS,C ;如果结果不相,如果结果为正,返回1,否则返回-1
GOTO RETURN1
GOTO RETURN0XFF
RETURN1:
MOVLW 1
MOVWF R3 ;把结果放入R3中,返回
RETURN
RETURN0XFF:
MOVLW 0xff
MOVWF R3 ;把结果放入R3中,返回
RETURN
NEXT:
INCF R1,F
INCF R2,F
DECFSZ R3,F
GOTO CompareArr
CLRF R3
RETURN
END |
|