首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

一个汇编语言的小异常

2012-02-07 
一个汇编语言的小错误代码:EXTRNLOAD:FAR,SAVE:FARNEQU20DELTAEQU5STACSEGMENTSTACKDB128DUP(?)STACENDSDA

一个汇编语言的小错误
代码:
EXTRN             LOAD:FAR,SAVE:FAR
N                     EQU                 20
DELTA             EQU                 5
STAC               SEGMENT         STACK
                        DB                   128     DUP   (?)
STAC               ENDS
DATA               SEGMENT
SOURCE           DB                   N       DUP(?)
RESULT             DB                   N       DUP(0)
NAME0             DB                   'INPUT38.DAT ',0
NAME1             DB                   'OUTPUT38.DAT ',0
DATA                 ENDS
CODE               SEGMENT
                        ASSUME           CS:CODE,   DS:DATA,   SS:STAC
START             PROC               FAR
                        PUSH                 DS
                        XOR                 AX,AX
                        PUSH               AX
                        MOV                 AX,DATA
                        MOV                 DS,AX
                        LEA                 DX,SOURCE       ;   数据区起始地址
                        LEA                 SI,NAME0           ;   原始数据文件名起始地址
                        MOV                 CX,N                   ;   字节数
                        CALL               LOAD                   ;   从 "input1.dat "中读取数据

                        LEA                 SI,SOURCE
                        LEA                 DI,RESULT


                        mov                 cx,N
NEXT:             MOV                 AL,[SI]
                      CMP                 AL,-DELTA
                      jl                   LESS
                      CMP                 AL,DELTA
                      jg                   GREAT
                      MOV                 AL,0
                      JMP                 STORE
GREAT:           SUB                 AL,DELTA
                      JMP                 STORE
LESS:             ADD                 AL,DELTA
STORE:           MOV                 [DI],AL
                      ADD                 DI,1  
                      ADD                 SI,1 
                      loop               NEXT
                      LEA                 DX,RESULT       ;   结果数据区首址
                      LEA                 SI,NAME1           ;   结果文件名起始地址
                      MOV                 CX,N                 ;   字节数
                      CALL               SAVE                 ;   保存结果到 "output1.dat "文件中
                      RET
START             ENDP
CODE               ENDS
                        END                 START
编译时的提示:(40)(41)open   parentheses   or   bracket
这两行是:     ADD                 DI,1  
                      ADD                 SI,1


哪位高手帮看看,谢了!

[解决办法]
N EQU 20
DELTA EQU 5
这个是不是应该在数据段中定义,我想是这样的
LEA SI,NAME0 ; 原始数据文件名起始地址
这句后面是不是应加个LEA DI,NAME1;原始数据文件终止地址
LEA SI,SOURCE
LEA DI,RESULT
mov cx,N
这个和你代码段中的开始相互冲突

有其他的想法请和本人联系
QQ号码是:526524193

热点排行