在ASM中获取最大数组

时间:2013-03-16 20:32:30

标签: assembly pic

我试图在asm中获取数组的最大值,但是CPFSGT命令存在问题:它不可定义,我不知道为什么。我正在使用PIC16F877。

 CBLOCK
    MYARRAY : 0
             ARG00 EQU D'8' , ARG01 EQU D'9', ARG02 EQU D'2', ARG03 EQU D'1',
             ARG04 EQU D'7', ARG05 EQU D'5', ARG06 EQU D'4', ARG07 EQU D'6'
             ARG08 EQU D'0', ARG09 EQU D'3'
    ENDC

        Max EQU 0x73
        Counter EQU 0x74
        GOTO getMax

    getMax:
        MOVLW .0 
        MOVFW Max
        MOVLW .9
        MOVFW Counter
    loop:
        MOVLW MYARRAY + Counter
        CPFSGT Max
        MOVFW MaX
        DECFSZ Counter
        GOTO loop
        MOVLW MaX

2 个答案:

答案 0 :(得分:1)

你完全迷失了......

  1. 仅在PIC18系列中支持CPFSGT指令,而不支持 在PIC16中,就像你的情况一样。
  2. 指令CBLOCK旨在声明块常量而不是 程序数组。
  3. 使用FSR0FSR1注册作为指向数组的指针

答案 1 :(得分:0)

CPFSGT Max之后的行应该是MOVFW Max而不是MOVFW MAX吗?最后也应该是MOVLW Max。

凯文