Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Assembly x86 > Re: Problem wit...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 4 of 5 Topic 4587 of 4710
Post > Topic >>

Re: Problem with "mov" in GNU GAS

by "Rod Pemberton" <spamtrap@[EMAIL PROTECTED] > Mar 25, 2008 at 05:49 PM

"junkoi" <spamtrap@[EMAIL PROTECTED]
> wrote in message
news:94d18289-183c-4a52-9770-48fa230d2943@[EMAIL PROTECTED]
> Hello everybody,
>
> I am writing a simple ASM code with GNU GAS. I am having some problems
> with mov command. Please could anybody tell me why 2 lines (*) and
> (**) are not equivalent?? (currently my code works as expected with
> (**), but not with (*)
>
> (My program is in 16bit mode)
>
> ---
> var:
>        .long 0xf1234
>
> .code16gcc
> movl var, %ecx                                // (*)
> movl $0xf1234, %ecx                      // (**)
>

I don't think it's critical, but I'm assuming the var is in a ".data"
section.

Yes, they are functionally equivalent.  "movl var,ecx" will mov the value
at
var's address into ecx, i.e., 0xf1234.  If you wanted to mov the address
of
var into ecx [like another responder claimed you were doing...], that'd be
"movl $var,ecx".

Are you linking the .o file?  If not, a zero (0) value placeholder for the
memory address will be in the .o code for "movl var, %ecx".  The
placeholder
is not filled in with the address of var until linked using "ld".  Then,
the
code should be functionally equivalent.  Is this the problem?  Typically,
ld
is used like this, after assembled with AS or GCC:

  ld --oformat binary --Ttext 0x7C00 -o mybootcode.bin mybootcode.o

Although very unlikely, you might need to adjust the address size or
segment:

  addr32 movl var, %ecx
  movl %es:var, %ecx

You can use these for mixed code:

..code16gcc
..code16
..code32
..code64
..data
..text
..att_syntax
..intel_syntax
data16  - operand size override
data32  - operand size override
addr16  - address size override
addr32  - address size override

Let us know...


Rod Pemberton
 




 5 Posts in Topic:
Problem with "mov" in GNU GAS
junkoi <spamtrap@[EMA  2008-03-25 01:56:13 
Re: Problem with "mov" in GNU GAS
Phil Carmody <thefatph  2008-03-25 19:22:17 
Re: Problem with "mov" in GNU GAS
Timothy Baldwin <spam  2008-03-25 18:47:42 
Re: Problem with "mov" in GNU GAS
"Rod Pemberton"  2008-03-25 17:49:55 
Re: Problem with "mov" in GNU GAS
junkoi <spamtrap@[EMA  2008-03-25 18:49:51 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sun Jul 6 20:24:16 CDT 2008.