exeplo codigo nasm modo real
28725 palavras
115 páginas
global _starttransformanum:
pusha mov edx, 10 ;message length mov ecx, entrada ;message to write mov ebx, 0 ;file descriptor (stdout) mov eax, 3 ;system call number (sys_write) int 0x80 dec eax mov [tam], eax mov [cont], eax
popa
mov byte[pots], 1
;;;;;;;;;;;;;;;;;; potencias ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; potencias: dec byte[cont]
mov eax, [pots] mov ebx, 10 mul ebx mov [pots], eax
cmp byte[cont], 1 jge potencias mov eax, [pots] mov ebx, 10 div ebx mov [pots], eax
;;;;;;;;; acumulador ;;;;;;; mov ecx, entrada mov byte[num], 0 mov byte[aux], 0 acumulador: dec byte[tam]
sub byte[entrada], 48 mov eax, [entrada] mov ebx, [pots] mul ebx add [num], eax
mov ecx, [entrada+1] mov [entrada], ecx ;divide potenccia por 10 mov eax, [pots] mov ebx, 10 div ebx mov [pots], eax
cmp byte[tam], 1 jge acumulador ret
mostranum: mov byte[uni], 48 mov byte[dez], 47 mov byte[cem], 47 mov byte[mil], 47
unidade: inc byte[uni] dec byte[num]
cmp byte[num],0 jg pulo1 mov edx, 20 ;message length mov ecx, uni ;message to write mov ebx, 1 ;file descriptor (stdout) mov eax, 4 ;system call number (sys_write) int 0x80 ;call kernel
pulo1: cmp byte[num], 0 je saicontagem
cmp byte[uni], 57 jl unidade
mov byte[uni], 47 mov byte[dez], 48 dezena: inc byte[dez]
unidade2: inc byte[uni] dec byte[num] cmp byte[num],0 jg pulo2 mov edx, 20 ;message length mov ecx, dez ;message to write mov ebx, 1 ;file descriptor (stdout)