1

In assembly how do i Print the values of an Array? Now in this program I also have to print its values < Index entered in by the user.

.intel_syntax noprefix

.include "console.i"

.data

index:  .long 0
array:  .long 1,2,3,4,5,6,7,8,9,10,11,12                # Array initialized
value:  .long 0


.text

ask1:   .asciz          "Enter an Index: "
ans:    .asciz          "Value= "
ask2:   .asciz          "Invalid Index"
ask3:   .asciz          "Goodbye!!"


_entry:

        Prompt ask1
        GetInt index

        mov ebx, offset array                           # ebx = address of array

        mov esi, index  
        cmp esi, 11                                     # comparing index with 11

        ja  1f                                          # if Index > 11,then jump 
                                                        # to label 1

        mov eax, [ebx + 4*esi]

        mov value, eax

        Prompt ans
        PutInt value
        PutEol


        Prompt ask3
        PutEol
        ret

1:      Prompt ask2
        PutEol

        Prompt ask3
        PutEol
        ret

.global _entry

.end
2
  • will mov ecx, [ebx] help in anyway? So that i later move it into a value and print. Commented Aug 27, 2010 at 8:50
  • I tried mov ecx, [ebx] but then it prints only the first value of the array. :( Commented Aug 27, 2010 at 10:09

1 Answer 1

1

Got a Sloution to it

.intel_syntax noprefix

.include "console.i"

.data

limit:    .long 0

array:    .long 1,2,3,4,5,6,7,8,9,10,11,12                           # Array initialized

value:    .long 0

value2:   .long 0

.text

ask1:     .asciz             "Enter an limit: "

ans:      .asciz             "Value= "

msg:      .asciz             "Invalid"

bie:      .asciz             "Goodbye!!"


_entry:

        Prompt ask1

        GetInt limit

        mov ebx, offset array                           # ebx = address of array

        mov ecx, 0

        mov esi, limit                                  # esi = index

        cmp esi, 12                                     # comparing index with 12

        jge  1f

        Prompt ans

        PutEol

2:      mov eax, [ebx + 4 * ecx]

        mov value, eax

        inc ecx

        PutInt value

        Puteol

        cmp ecx, esi

        jle  2b

        ret

1:      Prompt msg

        PutEol

        Prompt bie

        PutEol

        ret

.global _entry

.end
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.