flat assembler
Message board for the users of flat assembler.

Index > Macroinstructions > load from store at

Author
Thread Post new topic Reply to topic
Mike Gonta



Joined: 26 Dec 2010
Posts: 238
Location: the-ideom
Mike Gonta
convert.asm
Code:
b: times size db 0
a:
  file "a.bin"
  size = $ - a

source = a
destination = b
repeat size
  load x BYTE from source
  ; conversion goes here
  store BYTE x at destination
  source = source + 1
  destination = destination + 1
end repeat    

The generated file however contains b and a.

trim.asm
Code:
virtual
  file "a.bin"
  size = $
end virtual
  file "convert.bin": 0, size    
trim.bin is the file that I want. I've tried using virtual in convert.asm to eliminate trim.asm, but the result is either a file of zero's or a value out of range error.
Is it possible to convert one file to the other using only one asm file?

_________________
Mike Gonta
the-ideom - now you know how to compile

https://mikegonta.com
Post 18 Mar 2017, 19:08
View user's profile Send private message Visit poster's website Reply with quote
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 7725
Location: Kraków, Poland
Tomasz Grysztar
LOAD/STORE operate on target addresses, not the file offsets. So if your source contains multiple addressing spaces, like the ones started with ORG directive, you have to make a "::" label for each one of them and then use these labels to bytes from consecutive spaces. You may need to overload ORG with a macro and maintain a symbolic list with labels of all the addressing spaces and their corresponding address ranges.
Post 18 Mar 2017, 19:29
View user's profile Send private message Visit poster's website Reply with quote
Mike Gonta



Joined: 26 Dec 2010
Posts: 238
Location: the-ideom
Mike Gonta
Tomasz Grysztar wrote:
LOAD/STORE operate on target addresses, not the file offsets. So if your source contains multiple addressing
spaces, like the ones started with ORG directive, you have to make a "::" label for each one of them and then
use these labels to bytes from consecutive spaces. You may need to overload ORG with a macro and maintain
a symbolic list with labels of all the addressing spaces and their corresponding address ranges.
I had tried that, but it doesn't work on my beloved version 1.67.22 (with the listing facility) and I didn't
investigate it further.
It does of course work fine with the latest FASM version.
Code:
b: times size db 0

virtual at 0
a::
  file "a.bin"
  size = $
end virtual

destination = b
repeat size
  load x BYTE from a:(% - 1)
  ; conversion goes here
  store BYTE x at destination
  destination = destination + 1
end repeat
    
[edit]To clean up repeat with % instead of separate index variable.[/edit]

_________________
Mike Gonta
the-ideom - now you know how to compile

https://mikegonta.com


Last edited by Mike Gonta on 18 Mar 2017, 22:25; edited 1 time in total
Post 18 Mar 2017, 20:38
View user's profile Send private message Visit poster's website Reply with quote
Tomasz Grysztar



Joined: 16 Jun 2003
Posts: 7725
Location: Kraków, Poland
Tomasz Grysztar
Mike Gonta wrote:
I had tried that, but it doesn't work on my beloved version 1.67.22 (with the listing facility) and I didn't
investigate it further.
Such an old version does not support "::" so this definitely won't work there. But if this is the listing extension that keeps you using such an ancient version, please note that you can use "-s" output of newer fasm versions (since 1.67.29 actually) and create the listing out of it with the LISTING tool that is included in all fasm packages.
Post 18 Mar 2017, 20:48
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2020, Tomasz Grysztar. Also on YouTube, Twitter.

Website powered by rwasa.