1

我试图在 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
4

2 回答 2

1

你完全迷失了……

  1. CPFSGT指令仅在 PIC18 系列中受支持,而 PIC16 中不支持您的情况。
  2. 指令CBLOCK旨在声明块常量而不是程序数组。
  3. 使用FSR0FSR1注册为指向数组的指针
于 2013-03-17T01:21:07.460 回答
0

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

凯文

于 2013-03-16T20:42:39.247 回答