zyp000 发表于 2012-4-1 23:15:19

求教下KeilARM下的汇编问题

本帖最后由 zyp000 于 2012-4-1 23:55 编辑

初学ARM,使用KeilARM写了一段小测试程序,插入到Keil生成的启动代码中,放在跳入__main之前,想了解一下MMU,
可是,一些基本汇编指令,出现编译错误,向各位求教一下。
1.   关于跳转循环的问题,编译时都出错,
    loop1    行错误提示    Scr\S3C2440.s(1111): error: A1163E: Unknown opcode loop1 , expecting opcode or Macro
      loop2:   行错误提示    Scr\S3C2440.s(1111): error: A1163E: Unknown opcode loop1 , expecting opcode or Macro
    02      行错误提示    Scr\S3C2440.s(1124): error: A1137E: Unexpected characters at end of line
额~~这个解决了,标识符 要靠左边顶格写。
2.   操作协处理器的4条语句都有同样的错误提示 Scr\S3C2440.s(1121): error: A1577E: Bad coprocessor name symbol
    尝试了把P15改成CP15,还是有错
已解决,字母得用小写……
3.MOVR0,#2 可以编译通过
   MOVR0,#0b10就报错了
   这个是为什么呢?

具体代码和出错信息如下:
                           MOV R0,#0x0
                        MOV R1,#0x30000000
                        MOV R2,#0x400000
                loop1        LDR R3,,#4
                        STR R3,,#4
                        SUB R2,R2,#4
                        BNE loop1

                        MOV R0,#0xFFFFFFFF
                        MCR P15,0,R0,C3,C0,0

                        LDR R0,=( 0x32000000 - 16384 )
                        MCR P15,0,R0,C2,C0,0
                        MOV R1,#16384
                        MOV R2,#2
                loop2:        STR R2,,#4
                        ADD R2,R2,#(1<<14)
                        SUB R1,R1,#4
                        BNE loop2

                        LDR R0,=( 0x32000000 - 16384 )
                        MOV R1,#32
                        MOV R2,#0x30000000
                        ORR R2,R2,#2
                02        STR R2,,#4
                        ADD R2,R2,#(1<<14)
                        SUB R1,R1,#1
                        BNE %B02

                        MRC CP15,0,R0,C1,C0,0
                        ORR R0,R0,#01
                        MCR CP15,0,R0,C1,C0,0

Rebuild target 'Target 1'
compiling main.c...
assembling S3C2440.s...
Scr\S3C2440.s(1111): error: A1163E: Unknown opcode loop1 , expecting opcode or Macro
Scr\S3C2440.s(1118): error: A1577E: Bad coprocessor name symbol
Scr\S3C2440.s(1121): error: A1577E: Bad coprocessor name symbol
Scr\S3C2440.s(1124): error: A1163E: Unknown opcode loop2: , expecting opcode or Macro
Scr\S3C2440.s(1133): error: A1137E: Unexpected characters at end of line
Scr\S3C2440.s(1138): error: A1577E: Bad coprocessor name symbol
Scr\S3C2440.s(1140): error: A1577E: Bad coprocessor name symbol
Target not created

buttonsjj 发表于 2012-4-25 13:02:19

{:sad:}{:smile:}

zyp000 发表于 2012-5-7 08:46:44

{:victory:}{:lol:}

buttonsjj 发表于 2012-5-7 11:18:48

{:smile:}{:smile:}

gyl_zbk 发表于 2012-5-17 10:11:46

我也遇到类似问题了,请问楼主解决了吗、可否告知解决方法?

zyp000 发表于 2012-5-17 11:59:49

gyl_zbk 发表于 2012-5-17 10:11 static/image/common/back.gif
我也遇到类似问题了,请问楼主解决了吗、可否告知解决方法?

1.   关于跳转循环的问题,编译时都出错,
    loop1    行错误提示    Scr\S3C2440.s(1111): error: A1163E: Unknown opcode loop1 , expecting opcode or Macro
      loop2:   行错误提示    Scr\S3C2440.s(1111): error: A1163E: Unknown opcode loop1 , expecting opcode or Macro
    02      行错误提示    Scr\S3C2440.s(1124): error: A1137E: Unexpected characters at end of line

错误原因:这个解决了,标识符 要靠左边顶格写。

2.   操作协处理器的4条语句都有同样的错误提示 Scr\S3C2440.s(1121): error: A1577E: Bad coprocessor name symbol
    尝试了把P15改成CP15,还是有错

错误原因:字母得用小写……

3.MOVR0,#2 可以编译通过
   MOVR0,#0b10就报错了
   这个是为什么呢?

错误原因(未验证):汇编中的二进制数表示应为10b,0b10的写法应该是错误的。

gyl_zbk 发表于 2012-5-17 12:15:23

zyp000 发表于 2012-5-17 11:59 static/image/common/back.gif
1.   关于跳转循环的问题,编译时都出错,
    loop1    行错误提示    Scr\S3C2440.s(1111): error: A11 ...

好的,谢谢了

gracialee 发表于 2012-5-17 15:53:05

0b10是不是要加个0x?
页: [1]
查看完整版本: 求教下KeilARM下的汇编问题