19.9.09

Assembly

A linguagem Assembly (também conhecida por Assembler ou ASM) é a linguagem de programação mais primitiva que existe. Tendo aparecido como uma ajuda aos primeiros programadores que, antes disso, utilizavam exclusivamente código máquina para programar, o Assembly preserva toda a flexibilidade que o hardware oferece, permitindo que o programador optimize o seu código à unha, utilizando truques que seriam impossíveis numa linguagem de programação de alto nível, como o C.
Ao programar em Assembly, o programador utiliza as instruções que o seu processador reconhece, mas não tem de escrevê-las na forma nativa do processador, isto é, não tem a necessidade de escrever os códigos binários que indicam ao processador para executar determinada operação (códigos esses conhecidos por opcodes). Em vez disso, o programador tem ao seu dispor um conjunto de mnemónicas a serem posteriormente traduzidas para linguagem de máquina por um programa chamado assembler, assemblador ou montador. Os assembladores normalmente fornecem também outros recursos que facilitam muito a programação em baixo nível, o mais omnipresente dos quais é a possibilidade de definir símbolos, que são normalmente utilizados para referenciar localizações na memória conhecidas pelo assemblador. Outros recursos incluem a possibilidade de fazer operações aritméticas (e, nalguns casos, algébricas) no momento da assemblagem e os pré-processadores, que oferecem funcionalidades muitas vezes superiores aos oferecidos pelo pré-processador do C.

Em asssembly somam-se dois números utilizando os seguintes comandos:

TITLE Numero.
MODEL SMALL .
STACK 100H .
DATA
MSG1 DB 'Digite:','$'
MSG2 DB ' Digite:','$'
MSG3 DB ' A soma e:','$'
NUMERO1 Dw ?
Dw ?


NUMERO2 Dw ?
Dw ?


.CODE MOV AX,@DATA
MOV DS,AX
;numero 1
LEA DX,MSG1
MOV AH,9
INT 21H
XOR BX,BX
XOR SI,SI
MOV CX,1M1
: MOV AH,1
INT 21H
MOV NUMERO1,Ax
MOV AH,2
MOV DL,''
INT 21H
ADD SI,2
DEC CX
JNZ M1



MOV CX,1
ADD BX,1
MOV AX,1
CMP BX,AX



;numero 2
LEA DX,MSG2
MOV AH,9
INT 21H
XOR BX,BX
XOR SI,SI
MOV CX,1
M2: MOV AH,1
INT 21H
MOV NUMERO2,Ax
MOV AH,2
MOV DL,''
INT 21H
ADD SI,2
DEC CX
JNZ M2



MOV CX,1
ADD BX,1
MOV AX,1
CMP BX,AX


;somando
LEA DX,MSG3
MOV AH,9
INT 21H
XOR BX,BX
XOR SI,SI
MOV CX,1
SOMA: XOR DX,DX
XOR AX,AX
MOV DX,NUMERO1
MOV AX,NUMERO2
ADD AX,DX
SUB AX,30H
MOV DX,AX
MOV AH,2
INT 21H
MOV DL,''
INT 21H
ADD SI,2
DEC CX
JNZ SOMA



MOV CX,1
ADD BX,1
MOV AX,1
CMP BX,AX


MOV AH,4CH
INT 21H
end

Sem comentários:

Enviar um comentário