exeplo codigo nasm modo real

28725 palavras 115 páginas
global _start

transformanum:

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)

Relacionados