Regarding the numeric string, while "1234\0" is correct, in that it will work, you don't actually need the trailing null, as the string is declared .asciz already (which means a null is inserted at the end automatically by the assembler).
As for the %ebx, I think you'll still want to get a count of the elements in the string, as you'll need that to terminate the conversion loop. Also, you don't seem to see that the whole point of pushing the digits onto the stack is that you want to convert the string from the highest decimal place to the lowest; therefore, you need to start with the largest magnitude, and decrease it rather than increase it.
I think that this code should do what you want, though you'll need to replace the call to pow() with your own exponentiation function (the standard power function takes a double, not an int):
main:
movl $1, %edi
movl $0, %ebx
movl $String, %ecx
character_push_loop:
movb (%ecx), %dl /*Take one byte from the string and put in %dl*/
cmpb $0, %dl
je conversion_loop
movb %dl, (%eax)
pushl %eax /*Push the byte on the stack*/
incl %ecx
incl %ebx
jmp character_push_loop
conversion_loop:
decl %ebx
pushl %ebx
pushl $10
call pow
movl %eax, %edi
addl 8, %esp /* clean up stack */
popl %eax /*pop off a character from the stack*/
subl $48, %eax /*convert to integer*/
imul %edi /* eax = eax*edi */
addl %eax, Intg
cmpl $0, %ebx
je end /*When done jump to end*/
jmp conversion_loop
end:
pushl Intg
pushl $Show_integer
call printf /*Print out integer*/
addl $8, %esp /*clean up the stack*/
call exit