domingo, 16 de outubro de 2011
quarta-feira, 12 de outubro de 2011
GPR's
General Purpose Registers
Registos de ambito geral, fisicamente integrados no CPU, onde todos os dados que vão ser processados passam. Desde dados para operações aritméticas a apontadores de endereços de blocos de dados (data segments)
Registo AX[AH+AL] - Acumulador
Registo BX[BH+BL] - Base
Registo CX[CH+CL] - Contador
Registo DX[DH+DL] - Dados
Registos de ambito geral, fisicamente integrados no CPU, onde todos os dados que vão ser processados passam. Desde dados para operações aritméticas a apontadores de endereços de blocos de dados (data segments)
Registo AX[AH+AL] - Acumulador
Registo BX[BH+BL] - Base
Registo CX[CH+CL] - Contador
Registo DX[DH+DL] - Dados
Ambition
A minha ambição é criar um Sistema Operativo. A recolha de dados do mundo físico (input) pode ser de qualquer tipo, através de teclado(s), microfones, videocameras, ou qualquer outro tipo de sensores físicos. A reacção da máquina (output) pode em qualquer um destes ,ou todos estes formatos (panmidia). Quanto ao SO (acção/reacção=função) só pode ser concebido em Assembly. Quanto à máquina preciso de uma torre velhinha, com um INTEL 386 ou 486, para começar.
Pelo caminho, haverá muito folclore...
call css
;Adoramos a perfeição, porque não a podemos ter; repugna-la-íamos, se a tivéssemos. O perfeito é desumano, porque o humano é imperfeito. - Bernardo Soares
Pelo caminho, haverá muito folclore...
call css
;Adoramos a perfeição, porque não a podemos ter; repugna-la-íamos, se a tivéssemos. O perfeito é desumano, porque o humano é imperfeito. - Bernardo Soares
start:
Primeiro foi o ZX Spectrum e o BASIC:
GOTO
Depois veio o PC (o primeiro foi um 386) e o DOS.
Comecei a aprender Pascal e em seguida C e C++.
Mas tudo mudou quando comecei a aprender Assembly para microcontroladores (uC) e microprocessadores (uP), o 8051 e o 16F628 em particular, e a famillia 16f e 12f em geral, ambos com registos de 8 bit.
A partir dos conceitos e práticas adquiridos com estes uP's, inevitavelmente saltei para o INTEL com registos de 32 bit, que é o que a maioria dos computadores tem. O que me cativa é o controlo bit a bit de cada registo para executar uma função. Um input em função de um output. Acção e reacção.
call ambition
;A América [EUA] não inventou os direitos humanos. Na realidade, os direitos humanos é que inventaram a América. - Jimmy Carter
GOTO
Depois veio o PC (o primeiro foi um 386) e o DOS.
Comecei a aprender Pascal e em seguida C e C++.
Mas tudo mudou quando comecei a aprender Assembly para microcontroladores (uC) e microprocessadores (uP), o 8051 e o 16F628 em particular, e a famillia 16f e 12f em geral, ambos com registos de 8 bit.
A partir dos conceitos e práticas adquiridos com estes uP's, inevitavelmente saltei para o INTEL com registos de 32 bit, que é o que a maioria dos computadores tem. O que me cativa é o controlo bit a bit de cada registo para executar uma função. Um input em função de um output. Acção e reacção.
call ambition
;A América [EUA] não inventou os direitos humanos. Na realidade, os direitos humanos é que inventaram a América. - Jimmy Carter
sábado, 1 de outubro de 2011
Salutom Universo!
Ficheiro '.com' executável programado em Assembly (FASM). Este programa envia para a consola de comandos do DOS a mensagem em esperanto 'Salutom Universo!'.
Aqui fica o código fonte.
;Salutom Universo.asm
;adaptado por Manuel Pedro de um dos muitos ;tutoriais que se encontram no youtube
ORG 100h
USE16 ; Usa os primeiros 16 bits dos GPR's
mov ah,09 ; Indexação de subfunção de printstr
mov dx,msg ; Coloca primeiro endereço do segmento ;de caracteres
int 21h ;Executa chamada à subfunção print str
mov ah,01 ;Indexação de subfunção - input do teclado
int 21h ;Executa subfunção
int 20h ;Terminar programa e sair
msg db "Salutom Universo!$" ;Segmento de data.
;Se não existe vida fora da Terra, então o universo é um grande desperdício de espaço. - (Carl Sagan)
Aqui fica o código fonte.
;Salutom Universo.asm
;adaptado por Manuel Pedro de um dos muitos ;tutoriais que se encontram no youtube
ORG 100h
USE16 ; Usa os primeiros 16 bits dos GPR's
mov ah,09 ; Indexação de subfunção de printstr
mov dx,msg ; Coloca primeiro endereço do segmento ;de caracteres
int 21h ;Executa chamada à subfunção print str
mov ah,01 ;Indexação de subfunção - input do teclado
int 21h ;Executa subfunção
int 20h ;Terminar programa e sair
msg db "Salutom Universo!$" ;Segmento de data.
;Se não existe vida fora da Terra, então o universo é um grande desperdício de espaço. - (Carl Sagan)
quinta-feira, 29 de setembro de 2011
Estrutura interna de um microprocessador
Estrutura Interna do micro-Processador 8085
Esta ligação contém a estrutura interna de um 8085. O 8085 é um uP usado para fins didácticos. Indicado para iniciantes visto que os modernos CPU's obedecem a pilares básicos encontrados na simplicidade da arquitectura do 8085. Neste 'mapa' de endereçamento e armazenamento de bit's é introduzido o conceito de registo. O manejo e controle bit a bit desses registos é o propósito da linguagem Assembly.
Esta ligação contém a estrutura interna de um 8085. O 8085 é um uP usado para fins didácticos. Indicado para iniciantes visto que os modernos CPU's obedecem a pilares básicos encontrados na simplicidade da arquitectura do 8085. Neste 'mapa' de endereçamento e armazenamento de bit's é introduzido o conceito de registo. O manejo e controle bit a bit desses registos é o propósito da linguagem Assembly.
;A vida pode mudar a arquitetura. No dia em que o mundo for mais justo, ela será mais simples. - Oscar Niemeyer.
quarta-feira, 28 de setembro de 2011
IDE
IDE - Integrated Development Environment
Tal como o nome indica é uma programa (aplicação, (sofware) que permite desenvolver outros programas (aplicações) e integram no seu ambiente de trabalho edição de texto, com opções dedicadas à escrita de programas, compilador do código e muitas vezes ferramentas de correcção (debuger).
Lista de IDE's para assembly:
FASM - Flat Assembler. Bom potêncial, de uso simples. Fácil instalação (o IDE inclui Linker). Recomendo.
MASM - Microsoft Assembler (só DOS e Windows). Com grande potêncial, para quem gosta de SDK's.
NASM - Netwide Assembler. Menos recomendado.
MPLAB IDE - Assembler para PIC's da Microchip (requer programador de PIC's)
;I'm a great believer that any tool that enhances communication has profound effects in terms of how people can learn from each other, and how they can achieve the kind of freedoms that they're interested in. - Bill Gates
Tal como o nome indica é uma programa (aplicação, (sofware) que permite desenvolver outros programas (aplicações) e integram no seu ambiente de trabalho edição de texto, com opções dedicadas à escrita de programas, compilador do código e muitas vezes ferramentas de correcção (debuger).
Lista de IDE's para assembly:
FASM - Flat Assembler. Bom potêncial, de uso simples. Fácil instalação (o IDE inclui Linker). Recomendo.
MASM - Microsoft Assembler (só DOS e Windows). Com grande potêncial, para quem gosta de SDK's.
NASM - Netwide Assembler. Menos recomendado.
MPLAB IDE - Assembler para PIC's da Microchip (requer programador de PIC's)
;I'm a great believer that any tool that enhances communication has profound effects in terms of how people can learn from each other, and how they can achieve the kind of freedoms that they're interested in. - Bill Gates
Assemblador
Neste Blog partilho a minha experiência e conhecimento em Assembly - a linguagem mãe de todas as outras.
Sendo uma linguagem Homem-Máquina, i.e., uma linguagem em que o programador escreve menmónicas que são traduzidas pelo IDE em código hexadecimal que, por sua vez, é traduzido em código binário pelo Compilador (Assembler), a fim de enviar os dados para o CPU sob a forma bit's (0's e 1's).
Só através do domínio desta linguagem é que podemos ter absoluto controle sobre a máquina, como tal para programar em Assembly é preciso, antes de mais, conhecer a arquitectura do processador.
Em seguida temos que saber o conjunto de instruções (palavras) entendidas e usadas pelo processador.
;Sem uma língua comum não se podem concluir os negócios. - Confúcio
Sendo uma linguagem Homem-Máquina, i.e., uma linguagem em que o programador escreve menmónicas que são traduzidas pelo IDE em código hexadecimal que, por sua vez, é traduzido em código binário pelo Compilador (Assembler), a fim de enviar os dados para o CPU sob a forma bit's (0's e 1's).
Só através do domínio desta linguagem é que podemos ter absoluto controle sobre a máquina, como tal para programar em Assembly é preciso, antes de mais, conhecer a arquitectura do processador.
Em seguida temos que saber o conjunto de instruções (palavras) entendidas e usadas pelo processador.
;Sem uma língua comum não se podem concluir os negócios. - Confúcio
Subscrever:
Comentários (Atom)

