quinta-feira, 21 de outubro de 2021

Subprogramas em C e Assembly

A seguir, dois programas serão disponibilizados para análise. O primeiro implementa em C++ um algoritmo que decompõe um número inteiro em seus dígitos formadores. Este programa ainda conta com um apêndice, que implementa o mesmo algoritmo na linguagem Assembly.

O segundo programa implementa o mesmo algoritmo do primeiro, mas organiza seus códigos fontes em dois subprogramas, um para decompor o número e outro para exibir as suas parcelas.

Observa-se no algoritmo implementado, que este usa do processo de múltiplas divisões por 10 para, em cada iteração: i) calcular o resto da divisão; ii) armazenar o resto em uma estrutura de dados (string em C++ e pilha em Assembly) e; ii) retirar esta parcela do número original. Após serem armazenadas, cada uma das parcelas serão exibidas na ordem inversa a que foram inseridas na estrutura de dados.

Como objeto de aprendizagem, cada um dos programas é composto por sua implementação em C++ e a respectiva adaptação para Assembly (8 Bit Assembler Simulator). De modo a melhorar a compreensão por parte dos iniciantes na programação em Assembly, o código relacionado ao processo de decomposição, está fortemente documentado.

terça-feira, 5 de outubro de 2021

Inversão de String em Assembly

O programa tem como objetivo apresentar, nas linguagem C e Assembly, um algoritmo para inverter o conteúdo de uma String.
Como objeto de aprendizagem o programa é compreendido por um programa em C++, que implementa inicialmente uma "varredura" na String, de modo a obter o seu tamanho. Obtido o tamanho, a  "varredura" é feita de forma inversa, exibindo cada um dos caracteres da String. Em comentário ao programa em C é apresentada uma adaptação deste programa, para Assembly (8-Bit Assembler Simulator).