; Trabalho AC 2007/2008 ; Código para ler os números e operadores de um ficheiro section .data MAX_LINHA equ 1000 ;[...] Outras variáveis section .bss linha resb MAX_LINHA section .text ;[...] Abrir ficheiro para ler mov edx,MAX_LINHA mov ecx,linha mov ebx,NUM_FICHEIRO mov eax,3 int 0x80 mov [tam_linha],eax ;[...] Fechar ficheiro mov esi, linha cld mov ecx, [tam_linha] ; Converte num1 xor eax, eax xor ebx, ebx ciclonum1: lodsb cmp al, 0xA je fim_num cmp al, '9' jg letra1 and al, 0xF jmp fim1 letra1: and al, 0xF add al, 9 fim1: shl ebx,4 add ebx, eax loop ciclonum1 fim_num: mov [num1], ebx ; Converte num2 xor eax, eax xor ebx, ebx ciclonum1: lodsb cmp al, 0xA je fim_num cmp al, '9' jg letra1 and al, 0xF jmp fim1 letra1: and al, 0xF add al, 9 fim1: shl ebx,4 add ebx, eax loop ciclonum1 fim_num: mov [num2], ebx ; Ler o operador lodsb cmp al, '+' jne sinal_menos call soma jmp escreve sinal_menos: cmp al, '-' jne sinal_vezes call subtrai jmp escreve ;[...] Resto do programa