Fatorial Assembly MIPS

Usando o simulador MARS, fiz esse pequeno script para demonstrar como uma operação de fatoração pode ser executada, basta alterar o valor da variável 'num'. Optei por não utilizar dados de entrada para simplificar o entendimento.

Por: Saulo Gomes


Escrita de número em hexadecimal em Assembly Puro para Linux 64bits (Nasm - Netwide Assemble)

A primeira versão deste código foi publicada no formato de 32 bits: http://www.vivaolinux.com.br/script/Escrita-de-um-numero-em-hexadecimal-na-tela-em-Assembly-Puro-para-Linux-x86-(Nasm-Netwide-Assemble/ Esta versão foi criada no formato de 64 bits, para criação de objeto e linkedição em formato ELF64. Semelhante ao outro, este código utiliza-se da pilha para a reordenação dos dígitos após as divisões sucessivas. Também escrito para usar variáveis globais, não tão adequadas ou elegantes como variáveis locais ou a pilha, visando facilitar a compreensão uma visão intuitiva do programa. Conforme os restos das divisões são obtidos, serão empilhados, sendo acrescidos do endereço inicial da string "digit", de modo que o valor empilhado aponta exatamente - é um endereço de memória, vulgo ponteiro - para o dígito que deve ser impresso. Conforme são desempilhados os valores, os dígitos vão sendo impressos. O último item a ser desempilhado é um ponteiro para o "new line" armazenado ao final do código. Este caractere identifica o final da escrita dos dígitos, feita através de um cmp (comparação). As diferenças entre a versão de 32 bits e a de 64 bits ficam visíveis no uso das interrupções, chamadas de interrupções e registradores. interrupção de escrita 32 bits = 4 interrupção de escrita 64 bits = 1 interrupção de encerramento 32 bits = 1 interrupção de encerramento 64 bits = 60 chamada de interrupção 32 bits = "int 0x80" chamada de interrupção 32 bits = "syscall" registradores usados no código com interrupções de 32 bits = eax. ebx, ecx, edx registradores usados no código com interrupções de 64 bits = rax. rdi, rsi, rdx No caso dos registradores, percebe-se que em 64 bits houve uma pequena mudança na analogia usual.

Por: Perfil removido


Escrita de número em decimal em Assembly Puro para Linux 64 bits (Nasm - Netwide Assembler)

A primeira versão deste código foi criada no formato de 32 bits: http://www.vivaolinux.com.br/script/Escrita-de-um-numero-em-decimal-na-tela-em-Assembly-Puro-para-Linux-x86-(Nasm-Netwide-Assembler)/ Esta versão está no formato de 64 bits, para criação de objeto e linkedição em formato ELF64. Semelhante à primeira, este código utiliza-se da pilha para a reordenação dos dígitos após as divisões sucessivas. Também escrito para usar variáveis globais, não tão adequadas ou elegantes como variáveis locais ou a pilha, visando facilitar a compreensão e uma visão intuitiva do programa. Conforme os restos das divisões são obtidos, serão empilhados, sendo acrescidos do endereço inicial da string "digit", de modo que o valor empilhado aponta exatamente - é um endereço de memória, vulgo ponteiro - para o dígito que deve ser impresso. Conforme são desempilhados os valores, os dígitos vão sendo impressos. O último item a ser desempilhado é um ponteiro para o "new line" armazenado ao final do código. Este caractere identifica o final da escrita dos dígitos, feita através de um cmp (comparação). As diferenças entre a versão de 32 bits e a de 64 bits ficam visíveis no uso das interrupções, chamadas de interrupções e registradores. - Interrupção de escrita 32 bits = 4 - Interrupção de escrita 64 bits = 1 - Interrupção de encerramento 32 bits = 1 - Interrupção de encerramento 64 bits = 60 - Chamada de interrupção 32 bits = "int 0x80" - Chamada de interrupção 32 bits = "syscall" - Registradores usados no código com interrupções de 32 bits = eax. ebx, ecx, edx - Registradores usados no código com interrupções de 64 bits = rax. rdi, rsi, rdx No caso dos registradores, percebe-se que em 64 bits houve uma pequena mudança na analogia usual.

Por: Perfil removido


Escrita de número em octal em Assembly puro para Linux 64 bits (NASM - Netwide Assembler)

Este pequeno programa em Assembly tem uma antiga versão em formato de 32 bits: http://www.vivaolinux.com.br/script/Escrita-de-um-numero-em-octal-na-tela-em-Assembly-Puro-para-Linux-x86-(Nasm-Netwide-Assembler)/ Esta versão está no formato 64 bits, para criação de objeto e linkedição em formato ELF64. Semelhante à primeira versão, este código utiliza-se da pilha para a reordenação dos dígitos após as divisões sucessivas. Também escrito para usar variáveis globais, não tão adequadas ou elegantes como variáveis locais ou a pilha, visando facilitar a compreensão e uma visão intuitiva do programa. Conforme os restos das divisões são obtidos, serão empilhados, sendo acrescidos do endereço inicial da string "digit", de modo que o valor empilhado aponta exatamente - é um endereço de memória, vulgo ponteiro - para o dígito que deve ser impresso. Conforme são desempilhados os valores, os dígitos vão sendo impressos. O último item a ser desempilhado é um ponteiro para o "new line" armazenado ao final do código. Este caractere identifica o final da escrita dos dígitos, feita através de um cmp (comparação). As diferenças entre a versão de 32 bits e a de 64 bits ficam visíveis no uso das interrupções, chamadas de interrupções e registradores. - Interrupção de escrita 32 bits: 4 - Interrupção de escrita 64 bits: 1 - Interrupção de encerramento 32 bits: 1 - Interrupção de encerramento 64 bits: 60 - Chamada de interrupção 32 bits: "int 0x80" - Chamada de interrupção 32 bits: "syscall" - Registradores usados no código com interrupções de 32 bits: eax. ebx, ecx, edx - Registradores usados no código com interrupções de 64 bits: rax. rdi, rsi, rdx No caso dos registradores, percebe-se que em 64 bits houve uma pequena mudança na analogia usual.

Por: Perfil removido


Escrita de um número em octal na tela em Assembly Puro para Linux x86 (Nasm - Netwide Assembler)

Método semelhante à da escrita em binário do outro código. A diferença é a de trocar a string dos caracteres de escrita binária "01" pela string dos caracteres de escrita em octal "01234567". E trocar o valor do divisor, que é 2, por 8.

Por: Perfil removido


Escrita de um número em octal na tela em Assembly Puro para Linux x86 (GNU Assembly)

Método semelhante à da escrita em binário do outro código. A diferença é a de trocar a string dos caracteres de escrita binária "01" pela string dos caracteres de escrita em octal "01234567". E trocar o valor do divisor, que é 2, por 8.

Por: Perfil removido






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts