learning AT&T x86 assembly language. write an assembly program which takes an integer n, then print itdigit
Question:
learning AT&T x86 assembly language. write an assembly program which takes an integer n, then print itdigit by digit. FIND THE ERROR
Here is my code:
.data
.equ STDIN,0
.equ STDOUT,1
.equ READ,3
.equ WRITE,4
.equ EXIT,1
.equ SUCCESS,0
digit:
.long 0
power:
.long 1
ten:
.long 10
.text
.global _start
_start:
call convert
call output
convert:
output:
#eax contains the integer number
movl $56, %eax
movl %eax, %ecx
movl power, %eax
xor %ebx, %ebx
while:
cmp %eax, %ecx
jl done2
inc %ebx
mull ten
jmp while
done2:
xor %edx, %edx
divl ten
movl %eax, %ebx
movl %ecx, %eax
print:
xor %edx, %edx
divl %ebx
pushl %edx
pushl %ebx
addb $48, %al
movb %al, digit
# write to screen
movl $1, %edx
movl $digit, %ecx
movl $STDOUT, %ebx
movl $WRITE, %eax
int $0X80 #like cout
popl %ebx
movl %ebx, %eax
xor %edx, %edx
divl ten
cmp $0, %eax
je done3
movl %eax, %ebx
popl %eax
jmp print
done3:
ret
done:
#exit gracefully
movl $EXIT, %eax # System call numberO
movl $SUCCESS, %ebx # Argument is 0
int $0x80 #System call code
ret
Income Tax Fundamentals 2013
ISBN: 9781285586618
31st Edition
Authors: Gerald E. Whittenburg, Martha Altus Buller, Steven L Gill