좋아, 그래서 문자열을 뒤로 인쇄해야합니다. ebx가 문자열 배열의 시작 부분에 대한 포인터 인 경우 배열의 다음 바이트 (문자열의 두 번째 문자)로 이동하기 위해 하나를 추가 할 수 없습니다.어셈블리의 문자를 통해 이동
PROMPT:
.ascii "Enter the string to evaluate \0"
FMT_STR:
.ascii "%s\0"
FMT_INT:
.ascii "%d\0"
FMT_CHR:
.ascii "%c\0"
.globl _main
_main:
pushl %ebp # save old frame ptr
movl %esp,%ebp # set new frame ptr & save local var space
//create local variable space
subl $100,%esp
pushl $PROMPT
call _printf
leal -4(%ebp),%ebx
pushl %ebx
call _gets
call _rprint
leave
ret
_rprint:
pushl %ebp
movl %esp,%ebp
pushl -1(%ebx)
pushl $FMT_CHR
call _printf
leave
ret
편집 : 내 노트를 다시 읽고 문자열의 다음 문자로 이동하려면 8을 늘려야한다는 것을 깨달았습니다.
메모 또는 귀하의 메모가 잘못되었습니다. –
저는 ascii가 문자 당 1 바이트이기 때문에 생각했던 교수님이 틀렸다고 생각합니다. –