回 帖 发 新 帖 刷新版面

主题:[讨论]汇编怎么会通不过了??

两个十进制数的减法:代码如下:
NAME        subway
CODE        SEGMENT     
            ASSUME CS:CODE
START:      MOV DL,'?'
            MOV AH,02H
            INT 21H    ;显示‘?’
            MOV AH,01H
            INT 21H
            MOV BL,AL   ;读一个被减数到bl
            SUB BL,30H  ;由asscii码转化成数字
            MOV DL,'-'
            MOV AH,02H
            INT 21H     ;显示减号
            MOV AH,01H
            INT 21H     ;读第一个减数到bh
            SUB AL,30H
            MOV BH,AL
            MOV DL,'='
            MOV AH,02H
            INT 21H
            SUB BL,BH    ;减法
            JGE L1
            NEG BL      ;求补
            MOV DL,'-'
            MOV AH,02H
            INT 21H     ;显示负号
L1:        SUB BL,30H
            MOV DL,BL
            MOV AH,02
            INT 21H
            MOV DL,0DH
            MOV AH,02H
            INT 21H     ;回车
            MOV DL,0AH
            MOV AH,02H
            INT 21H        ;换行
            MOV AH 4CH
            INT 21H
CODE        ENDS
            END START            
汇编出来的错误是这样的:
 sub.asm(9)error A2044: invalid character in file
sub.asm(10) : error A2044: invalid character in file
sub.asm(37) : error A2008: syntax error : in instruction
sub.asm(40) : warning A4023: with /coff switch, leading underscore required for start address : START
  到底是怎么回事了 ?
sub.asm括号里的数字是什么意思啊??
请教大虾!!

回复列表 (共3个回复)

沙发

括号里面的数字是出错的行号。

你是不是连同中文注释一起编译啊?有可能会被看成源文件中的字符的,把中文注释去掉,第9行和第10行的错误就是这个原因引起的。

第37行的错误是ah和4ch间少了一个逗号。

第40行由于你使用了/coff这个参数(形式coff格式的中间代码),那么start标号要以下划线开头,把start改为_start。

板凳

先谢了啊!!!
分号是在那种输入状态下输入的啊??

3 楼

你那个问题不是分号出的错,分号是可以用在源文件中的,问题是后面的中文注释,其中有些字符可能会被汇编程序错误辨认。

我来回复

您尚未登录,请登录后再回复。点此登录或注册