字符翻转存到新缓存区中,下面的代码哪里错了?帮忙看看吧,谢啦

.386
STACK    SEGMENT    USE16    STACK
    DB 200 DUP(0)
STACK    ENDS
DATA    SEGMENT    USE16
BUF    DB    'This is a test program'
N    =    $-BUF
NEW_BUF    DB    N DUP(0)
DATA    ENDS
CODE    SEGMENT    USE16
    ASSUME    CS:CODE,DS:DATA,SS:STACK
START:    MOV    AX,DATA
    MOV    DS,AX
    MOV    SI,OFFSET BUF
    MOV    DI,OFFSET NEW_BUF
    MOV    CX,N
LOPA:    ADD    DI,(N-1)
    MOV    AL,[SI]
    MOV    [DI],AL
    INC    SI
    DEC    DI
    DEC    CX
    JNZ    LOPA
    MOV    AH,4CH
    INT    21H
CODE    ENDS
    END    START