Sei sulla pagina 1di 6

Progra

mar e
Simular
Tarefa 1

;Programar e Simular com Intel 51 as Seguinte tarefa:


;Contagem de bit "um" e armazenar o resultadono endereo 80h(35H)
.ORG 0000H
MOV R4,#35H;Atribuio do Valor (35H) ao Registo(R4)
MOV R1,#01H; Mascara Inical (0000 0001)
MOV R2,#80H; Mascara Final (1000 0000)
MOV R0,#80H; Endereo de RAM ha armazenar os bit 1
MOV R5,#00H; Registo que sera contador
MOV R3,R1; R3 e incializado com a mascara inicial(R1)
verifica: MOV A, R3
ANL A,R4
JZ proximobit ; Se A for 0 salta para o proximo bit
INC R5 ; incrementa se A for 1 e salta para o proximo bit

proximobit: MOV A,R2; copia-se ha A a mascara final


SUBB A,R3 ; subtai-se a mascara final com a mascara inicial
JZ fim ; se o resultado for 0 salta para o fim porq encontrou-se o
ultimo bit
MOV A,R3
ADD A,R3
MOV R3,A
JMP verifica
fim: MOV @R0,R5
JMP fim
.END

Resultado:

MOV @R0,R5; Copia o valor do nosso contador R5 para o


endereo de memria 80H que se encontra no registo RO que
neste presente exerccio ser 04.
Funcionamento

O nosso primeiro programa tem como objectivo fazer a contagem de todos bits 1 de um
do nmero 35H em Hexadecimal e armazenar o resultado no endereo 80H (35H).

Onde:

.ORG 0000H; o incio do programa.

MOV R4,#35H; Atribuio do valor a se utilizar (10000101) em Hexa


ao registo R4.

MOV R1,#01H; Funo MOV Ira introduzir a nossa mascara inicial


(00000001) para o clculo ao registo R1.

MOV R2,#80H; Funo MOV Ira introduzir a nossa mascara final


(10000000) ao registo R2.

MOV R0,#80H; Registo (R0) que armazena o endereo de memria.

MOV R5,#00H; Registo (R5) que ser o nosso contador inicializado


com zero.

MOV R3,R1; registo (R3 MascaraUso) que iremos utilizar para alguns
clculos ao longo do nosso programa que recebe inicialmente a mascara inicial.

verifica: MOV A, R3; Copiamos o valor do registo R3 (MascaraUso) para o


acumulador A.

ANL A,R4; efectuamos a operao lgica AND do valor dado com o


valor contido no acumulador A.

JZ proxavaliacaobit; Comando que verifica se o valor obtido for zero


salta para o prximo bit, tendo em conta as mascaras, se for zero no temos um bit 1.

INC R5; Incrementa o valor do contador R5.

proxavaliacaobit: MOV A,R2; copia-se a mascara final (R2) para o acumulador A.

SUBB A,R3; Subtrai-se o valor do acumulador A (MascaraFinal) com o


valor da mascara em uso R3.

JZ fim; Se o resultado for zero o programa termina porque j fez-se a


verificao at o ultimo bit. (quando dar zero porque j estamos no ultimo bit porque
80-80 resulta em zero).
MOV A,R3; Copia a MascaraUso (R3) para o acumulador A.

ADD A,R3; Adiciona-se o valor do registo R3 ao valor do acumulador A


e mantendo-se assim o resultado no mesmo (A).

MOV R3,A; Copia-se assim o valor deste (A) para o registo R3, sendo
assim a nossa mascara em uso (R3).

JMP verifica

fim: MOV @R0,R5; Copia para o endereo de memoria o valor dos bits 1
tendo em conta o valor de incrementos.

JMP fim

.END ;fim da instruo


Tarefa 2

;Programar e Simular com Intel 51 as Seguinte tarefa:


;Resolvendo A) XY+Z=F ;FvG=W
.ORG 0000H
;Atribuio dos Valores em Registos
MOV R1,#1BH ;R1=X onde X=1B(H)
MOV R2,#30H ;R2=Y onde Y=30(H)
MOV R3,#10H ;R3=Z onde Z=10(H)
MOV R4,#70H ;R4=G onde G=70(H)
MOV R0,#80H ;R0 tera o end. de RAM
MOV A,R1 ;atribuimos o R1 em A para efectuarmos as as opraes
MOV B,R2 ;atribuimos o R2 em B para efectuarmos as as opraes
MUL AB ;O resulta da Operao AB sera armazenado em A ou A=AB
ADD A,R3 ;efecuta-se a soma entre A e R3 e o resultado armazena-se em
A(A=F)
ORL A,R4 ;FvG=W
MOV @R0,A ;Resultado Final das Operaes(XY+Z=F, FvG=W) sera
armazenado no End. RAM(R0)
.END ;fim da Instruo

Resultado:

MOV @R0,A ;Resultado Final das Operaes(XY+Z=F,


FvG=W) sera armazenado no endereo de memria 80H que se
encontra no registo R0 que neste presente exerccio ser 70.
Funcionamento

O nosso 2 programa efectua o clculo de algumas frmulas e armazena o resultado no


endereo de memria 80H.

Onde:

A) XY+Z=F; F v G=W

.ORG 0000H; o incio do programa

;Atribuio dos Valores em Registos

MOV R1,#1BH; Atribuio do valor de X ao R4 onde X=1B (H)

MOV R2,#30H; Atribuio do valor de Y ao R2 onde onde Y=30 (H)

MOV R3,#10H; Atribuio do valor de Z ao R3 onde Z=10 (H)

MOV R4,#70H; Atribuio do valor de G ao R4 onde G=70 (H)

MOV R0,#80H; R0 ter o endereo. de RAM

MOV A,R1; atribumos o R1 em A para efectuarmos as operaes

MOV B,R2; atribumos o R2 em B para efectuarmos as operaes

MUL AB; O resultado da Operao AB armazenado em A ou A=AB

ADD A,R3; efectua-se a soma entre A e R3 e o resultado armazena-se em A


(A=F)

ORL A,R4; efectua-se a operao logica entre o valor contido em A e o valor em


R4 ou seja (F v G=W)

MOV @R0,A; Resultado Final das Operaes (XY+Z=F, F v G=W) ser


armazenado no Endereo. RAM (R0)

.END; fim da Instruo

Potrebbero piacerti anche