; void readdec(int *R0, int *R1) { ; int T ; ; T = getc(stdin) ; /* getc will echo automatically */ ; if (('0' <= T) && T <= '9') { ; *R1 = T - '0' ; ; *R0 = 0 ; ; } else ; *R0 = -1 ; ; return ; ; } [section .text USE32] [section .text] [BITS 32] align 4 GLOBAL readdec readdec: push dword ebp mov dword ebp, esp sub dword esp, +8 sub dword esp, +12 push dword [stdin+0x0] call _IO_getc add dword esp, +16 mov dword eax, eax mov dword [ebp-4], eax cmp dword [ebp-4], +47 jle near $rerr cmp dword [ebp-4], +57 jg near $rerr mov dword eax, [ebp+12] mov dword edx, [ebp-4] sub dword edx, +48 mov dword [eax], edx mov dword eax, [ebp+8] mov dword [eax], +0 jmp $rret $rerr: mov dword eax, [ebp+8] mov dword [eax], -1 $rret: leave ret extern _IO_getc extern stdin