I am very new to Assembly programming in 68k. I am using Easy68k.
I have a program:
ORG $1000
START:
* Put program code here
lea MSG,a1 ; loads MSG into address register a1
move.b #14,d0 ; 14 gets coverted to hex E
trap #15
move.b #9,d1 ; 9 decimal gets converted t hex 9
SIMHALT ; halt simulator
* Put variables and constants here
MSG dc.b 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout',0
END START ; last line of source
As far is I know, the address register a1 can store long-word length items. But you see the string
"It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout"
convert it to its ASCII format, you will see how the hex for each word would exceed the long-word length.
So How is this string stored? I want to understand how assembly is storing and displaying the string to the screen.
Can someone please explain?
The comment "loads MSG into address register a1" is somewhat misleading. What you're loading into a1
is not the contents at MSG
; you're loading the address of MSG
. A label (e.g. MSG
) is just a name for some location in your program that makes it convenient to refer to that location.
The address has a fixed size which fits into the register and is independent of the data stored at that address.