Retorna o maior elemento de um vetor

Este algoritmo tem como objetivo comparar os elementos de um vetor unidimensional e retornar o maior deles. Ele foi implementado no MARS: http://courses.missouristate.edu/kenvollmar/mars

Por: Marcos Augusto


Escrita de um número em decimal na tela em Assembly Puro para Linux x86 (GNU 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 decimal "0123456789". E trocar o valor do divisor, que é 2, por 10.

Por: Perfil removido


Soma dois números lidos da memória

Este script soma dois números lidos da memória. Ele foi implementado no MARS: http://courses.missouristate.edu/kenvollmar/mars

Por: Marcos Augusto


Escrita de número em binário 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-binario-na-tela-em-Assembly-Puro-para-Linux-x86-%28Nasm-Netwide-Assembler%29 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 um número em binário na tela em Assembly Puro para Linux x86 (GNU Assembly)

Este programa utiliza-se da pilha por causa da reordenação dos dígitos após a divisões. Do modo como foi escrito, trabalha com variáveis locais. Não são tão adequadas ou elegantes como algum tipo de variável local ou pilha, mas facilita a compreensão para se ter uma visão intuitiva do programa. Conforme os restos são obtidos, são empilhados e ao término são desempilhados conforme vai sendo feita a impressão de cada dígito. O último item a ser desempilhado é o endereço de um "new line", ponteiro para '\n' definido antecipadamente no código. A interrupção de escrita trabalha com endereços de memória do que se deseja que seja enviado para uma saída, no caso a tela. Este caractere identifica o final da escrita dos dígitos.

Por: Perfil removido


Algoritmo de Raiz Quadrada Inteira em Assembly Puro para Linux x86 (NASM - Netwide Assembler)

Algoritmo de obtenção de raiz quadrada inteira em assembly puro para Linux. Sem uso de alguma instrução para a operação ou algoritmo iterativo que necessite de valores de ponto flutuante.

Por: Perfil removido






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts