|How constants work
|Page 1 of 1|
|Author:||nych [ Wed Mar 09, 2016 11:08 pm ]|
|Post subject:||How constants work|
Was wondering how am I able to assign a certain constant I declared a integer.
For example I have 10 constants and I want to list them from 1-10. I am trying to write a code where I type a integer then prints out the constant that is dedicated to that.
|Author:||Obeisance [ Sat Mar 12, 2016 12:24 am ]|
|Post subject:||Re: How constants work|
Let me preface this by saying that I have not tried this. I've only been reading a disassembly, so I am not perfectly sure how conventional notation is used, nor have I practiced what I will say. Based on my understanding, there are many ways to load up a constant value to then be displayed. I believe that some of the Trap (TRAP #15 ;??) exceptions in EASy68k may be linked to print functions as well, but I cannot be sure. You could try copying some of the example code to get printing and inputs to work.
As far as linking an index number to a stored constant, perhaps you could use a move command to store a constant in memory (choose a memory address which is higher than your code or which does not coincide with your instruction addresses).
MOVEA.L ($4,A2),A3 ;a displacement of 4 (one long word) beyond HexAddress defines the address in A3
In this example, constantNumber is a decimal that is your storable constant and HexAddress is a hexadecimal memory address (something between 0x400 and 0xFFFFFF).
Then, in order to load up the constant based on input, move the input value (this is your number, 1-10) into a register, say D0, and use another effective addressing mode (indexed indirect) to load the stored constant onto a different register which can be passed to the printing function (by calling the TRAP exception command?).
MOVEA.L ($HexAddress).L,A2 ;puts the base address where your constants are stored into a register
;assuming that D0 is a long word index value which specifies the
;displacement from $HexAddress (in long words, hence the "*4") where your constant is stored
MOVE.L ($0,A2,D0.L*4),D2 ;moves your stored value onto D2
Again, I am only answering in spite of the cricket noise on this forum. I have not practiced this, but would like to participate in conversation. So when my advice inevitably fails, post again and let me know what you're thinking.
|Page 1 of 1||All times are UTC|
|Powered by phpBB® Forum Software © phpBB Group