segunda-feira, 5 de outubro de 2009

Assembly


Uma linguagem de montagem ou assembly é uma notação legível por humanos para o código de máquina que uma arquitectura de computador específica usa. A linguagem de máquina, que é um mero padrão de bits, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemônicos.

Por exemplo, enquanto um computador sabe o que a instrução-máquina IA-21 (10110000 01100001) faz, para os programadores é mais fácil recordar a representação equivalente em intruções mnemônicas MOV AL, 61h. Tal instrução ordena que o valor hexadecimal 61 (97, em decimal) seja movido para o registrador 'AL'.

Um exemplo de um programa que some 2 números em Assembly pode ser este:

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,1
M1: 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

0 comentários: