sprintf와 비슷한 기능을 쓰려고합니다. 나는 결과 문자열 (인자 % d)에 정수를 출력하기로되어 있습니다. 내 전략은 수를 10으로 나누고 나머지를 48 (ascii 오프셋) 추가 한 다음 스택에 밀어 넣고 지수가 0이 될 때까지 늘립니다. 그런 다음 스택에서 각 숫자를 팝하여 결과 문자열. 이것은 내 현재 코드 : %의 EDX가 (%의 ECX 그래서 제발 돈, 두 번째 매개 변수 문자열에 인덱스를 계산하기위한 목적으로 예약 된 '결과 문자열에서 문자 인덱스를 계산하는 데 사용됩니다어셈블리에서 부호없는 char *에 int를 쓰는 것
addint:
movl $0,%edx
movl $10,%ebx
div %edi
addl $48,%edx
pushl %edx
incl %esi
cmpl $0,%eax
jz addintprint
jmp addint
addintprint:
movl tmpedx,%edx
incl %ecx
jmp addintfinish
addintfinish:
cmpl $0,%esi
jz mainloop
decl %esi
popl %ebx
movl addr,%eax
leal (%edx,%eax,1),%eax
movb %bl,(%eax)
incl %edx
jmp addintfinish
필요한 경우가 아니면 사용), addr은 결과 문자열의 주소입니다.
지금 나는 어리석은 출력 (아스키 테이블의 L과 다른 임의성과 같은 글자에 두 배의 인수에서부터)에 이른다. 나는 올바른 방향으로 가고 있다고 생각하지만 현재 코드에서는 뭔가 잘못되었습니다. 어떤 도움이라도 대단히 감사합니다.
미리 감사드립니다.