Noah Franck
Noah Franck

Reputation: 127

How to fix 'Error: junk at end of line, first unrecognized character 0xe2' in Assembly

I am trying to write a basic arm assembly file on my raspberry pi 3 that has access to printf and scanf through the gcc compiler, but upon compiling my code I get a strange error.

This is my third application written in assembly to use the gcc compiler, so I wanted to do incremental testing so I set up my prompts and strings, and I try and exit cleanly; however, this is my code that throws the error:

.data
    .balign 4
    promptNum1: .asciz “Please enter some number that you want to work with”
    .balign 4
    inputNum1String: .asciz “%d”
    .balign 4
    outputString: .asciz “Your answer is %d”
    .balign 4
    return: .word 0
    .balign 4
    signPrompt: .word “What do you want the numbers to do?\n 1)add \n 2)subtract\n 3)multiply\n 4)divide”
.text
.global main
main: 
    ldr r11, addressOfReturn
    str lr, [r11]
.
.
.
    ldr r11, addressOfReturn
    ldr lr, [r11]
    bx lr

addressOfPromptNum1: .word promptNum1
addressOfInputNum1String: .word inputNum1String
addressOfOutputString: .word outputString
addressOfReturn: .word return

I expect this to compile as my previous code did, however, my error references an unrecognized character on the lines with promptNum1, inputNum1String, outputString, signPrompt. However, the character that is unrecognized is 0xe2, and upon looking that up I found that the character that is not recognized by the compiler is not in my file at all.

Upvotes: 1

Views: 19961

Answers (1)

John Szakmeister
John Szakmeister

Reputation: 47032

The quotes in your code are "smart quotes" (the utf-8 sequences e2 80 9c and e2 80 9d), which isn't playing well with the assembler. Change them to be regular quotes and you should be fine.

.data
    .balign 4
    promptNum1: .asciz "Please enter some number that you want to work with"
    .balign 4
    inputNum1String: .asciz "%d"
    .balign 4
    outputString: .asciz "Your answer is %d"
    .balign 4
    return: .word 0
    .balign 4
    signPrompt: .word "What do you want the numbers to do?\n 1)add \n 2)subtract\n 3)multiply\n 4)divide"
.text
.global main
main: 
    ldr r11, addressOfReturn
    str lr, [r11]
.
.
.
    ldr r11, addressOfReturn
    ldr lr, [r11]
    bx lr

addressOfPromptNum1: .word promptNum1
addressOfInputNum1String: .word inputNum1String
addressOfOutputString: .word outputString
addressOfReturn: .word return

Upvotes: 4

Related Questions