PCSPIM - declaring an array of strings

  • Thread starter Thread starter magneto202
  • Start date Start date
  • Tags Tags
    Array Strings
AI Thread Summary
Declaring an array of strings in PCSPIM can be done using the .asciiz directive, as shown with the example "Nstart: .asciiz 'the', 'dog', 'run'." This method ensures that the strings are properly terminated and stored in memory. The representation of data in memory is crucial, and as long as the final format matches the expected output, various declaration methods can be used. The discussion emphasizes that the assembler handles different specifications effectively, allowing for flexibility in how data is defined. Ultimately, the correct memory representation is the key focus for successful implementation.
magneto202
Messages
2
Reaction score
0
Hey all,

So declaring integers successively in memory (using .word) in an array is all well and understandable. Since an integer is 4 bytes in length, as is a memory word.
For example:

.data
x: .word 2, -13, 24, 123 #initialization of elements 0 to 3 of array x

However, how would I go about declaring an array of strings that are three characters long in memory?

would i use:

.data
stringArray: .asciiz "the", "dog", "run"

or perhaps:

.data
stringArray: .word 't''h''e', 'd''o''g', 'r''u''n'

thanks in advance
 
Technology news on Phys.org
Hey magneto202 and welcome to the forums.

In terms of what the computer understands, and given that this is in an assembler context (correct me if I'm wrong), then the only thing that matters is the value of the data being correct and not how its represented.

If you know that the data is represented in a format (like say 8-bit ASCII) and you know the string and character representations work then I can't see why you wouldn't use this.

The important thing is that the definition and its representation in memory are the same.

Also you need to consider the functions that use the data (which I'm assuming are probably some kind of interrupt), but again I'm going to speculate and say that the data definitions will create the right kind of representations.

Alternatively if you need a specific representation, you can never go wrong with specifying a block by block representation in a per byte, or per word description of contiguous data, but the point of having multiple specifications is that the assembler does this for you anyway.

Bottom line: it doesn't matter as long the final representation in memory is right (and you can specify the same thing in many different ways).
 
Excellent. have remained with the declaration of:

Nstart: .asciiz "the","dog","run"

and has worked successfully for my simulation implementation. The string array addressing in memory is consistent when I try access byte by byte.

Thanks chiro for the input.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I had a Microsoft Technical interview this past Friday, the question I was asked was this : How do you find the middle value for a dataset that is too big to fit in RAM? I was not able to figure this out during the interview, but I have been look in this all weekend and I read something online that said it can be done at O(N) using something called the counting sort histogram algorithm ( I did not learn that in my advanced data structures and algorithms class). I have watched some youtube...

Similar threads

Replies
20
Views
3K
Replies
3
Views
2K
Replies
6
Views
3K
Replies
3
Views
3K
Replies
4
Views
11K
Replies
4
Views
16K
Replies
4
Views
5K
Back
Top