Prévia do material em texto
Prof. Celso a MCS51 INSTRUÇÕES ARITMÉTICAS ADD A, Rn Soma o conteúdo de Rn com Acc, o resultado é armazenado no ACC ADD A, direto Soma o conteúdo da posição de memória “direto” com o ACC. O resultado é armazenado no ACC ADD A, @Ri Soma o conteúdo da posição de memória indicada por Ri com o ACC. O resultado é armazenado no ACC ADD A, #dado Soma o valor dado com o ACC. O resultado é armazenado no ACC. ADDC A, Rn Soma o conteúdo de Rn com Acc e com o flag de carry. O resultado é armazenado no ACC ADDC A, direto Soma o conteúdo da posição de memória “direto” com o ACC e com o flag de carry. O resultado é armazenado no ACC ADDC A, @Ri Soma o conteúdo da posição de memória indicada por Ri com o ACC e com o flag de carry. O resultado é armazenado no ACC ADDC A, #dado Soma o valor dado com o ACC e com o flag de carry. O resultado é armazenado no ACC. SUBB A, Rn Subtrai do Acc o conteúdo de Rn e o flag do carry. O resultado é armazenado no acumulador SUBB A, direto Subtrai do Acc o conteúdo da posição de memória “direto” e o flag do carry. O resultado é armazenado no acumulador SUBB A, @Ri Subtrai do Acc o conteúdo da posição de memória indicada por Ri e o flag do carry. O resultado é armazenado no acumulador SUBB A, #dado Subtrai do Acc o valor do dado e o flag do carry. O resultado é armazenado no acumulador MUL AB Multiplica o conteúdo do ACC pelo conteúdo do registrador B. O resultado fica em B (MSB) e em Acc (LSB) DIV AB Divide o conteúdo do ACC pelo conteúdo do registrador B. O resultado fica em B (resto) e em Acc (quociente) INC A Soma 1 ao acumulador INC Rn Soma 1 no conteúdo de Rn INC direto Soma 1 no conteúdo da posição de memória “direto” INC @Ri Soma 1 ao conteúdo da posição de memória indicada por Ri. DEC A Subtrai 1 ao acumulador DEC Rn Subtrai 1 ao acumulador DEC direto Subtrai 1 no conteúdo da posição de memória “direto” DEC @Ri Subtrai 1 ao conteúdo da posição de memória indicada por Ri. INC DPTR Soma 1 ao conteúdo do registrador DPTR DA A Ajuste decimal. Converte para BCD o conteúdo do Acc. INSTRUÇÕES LÓGICAS ANL A, Rn Operação lógica AND entre ACC e o conteúdo de Rn. O resultado é armazenado no ACC. ANL A, direto Operação lógica AND entre ACC e o conteúdo da posição de memória “direto”. O resultado é armazenado no ACC ANL A, @Ri Operação lógica AND entre ACC e o conteúdo da posição de memória indicada por Ri. O resultado é armazenado no ACC ANL A, # dado Operação lógica AND entre ACC e o valor do dado. O resultado é armazenado no ACC. ANL direto, A Operação lógica AND entre a posição de memória “direto” e o ACC. O resultado é armazenado na posição de memória direto. ANL direto, #dado Operação lógica AND entre a posição de memória “direto” e o valor do dado. O resultado é armazenado na posição de memória ‘direto”. ORL A, Rn Operação lógica OR entre ACC e o conteúdo de Rn. O resultado é armazenado no ACC. ORL A, direto Operação lógica OR entre ACC e o conteúdo da posição de memória “direto”. O resultado é armazenado no ACC ORL A, @Ri Operação lógica OR entre ACC e o conteúdo da posição de memória indicada por Ri. O resultado é armazenado no ACC ORL A, # dado Operação lógica OR entre ACC e o valor do dado. O resultado é armazenado no ACC. Prof. Celso b MCS51 ORL direto, A Operação lógica OR entre a posição de memória “direto” e o ACC. O resultado é armazenado na posição de memória “direto”. ORL direto, #dado Operação lógica OR entre a posição de memória “direto” e o valor do dado. O resultado é armazenado na posição de memória “direto”. XRL A, Rn Operação lógica XOR entre ACC e o conteúdo de Rn. O resultado é armazenado no ACC XRL A, direto Operação lógica XOR entre ACC e o conteúdo da posição de memória “direto”. O resultado é armazenado no ACC XRL A, @Ri Operação lógica XOR entre ACC e o conteúdo da posição de memória indicada por Ri. O resultado é armazenado no ACC XRL A, # dado Operação lógica XOR entre ACC e o valor do dado. O resultado é armazenado no ACC. XRL direto, A Operação lógica XOR entre a posição de memória “direto” e o ACC. O resultado é armazenado na posição de memória “direto”. XRL direto, #dado Operação lógica XOR entre a posição de memória “direto” e o valor do dado. O resultado é armazenado na posição de memória “direto” CLR A Zera o acumulador CPL A Complementa todos os bits do acumulador RL A Rotaciona todos os bits do acumulador à esquerda RLC A Rotaciona todos os bits do acumulador à esquerda junto com o carry RR A Rotaciona todos os bits do acumulador à direita RRC A Rotaciona todos os bits do acumulador à direita junto com o carry SWAP A Troca os nibbles do acumulador INSTRUÇÕES DE TRANSFERÊNCIA MOV A, Rn Carrega o acumulador com o conteúdo de Rn MOV A, direto Carrega o acumulador com o conteúdo da posição de memória “direto” MOV A, @Ri Carrega o acumulador com o conteúdo da posição de memória endereçada por Ri MOV A, #dado Carrega o acumulador com o valor do dado MOV Rn, A Carrega Rn com o conteúdo do acumulador MOV Rn, direto Carrega Rn com o conteúdo da posição de memória “direto” MOV Rn, #dado Carrega Rn com o valor do dado MOV direto, A Carrega o conteúdo da posição de memória “direto” com o conteúdo do acumulador MOV direto, Rn Carrega o conteúdo da posição de memória “direto” com o conteúdo de Rn MOV direto, direto Carrega o conteúdo da posição de memória “direto” com o conteúdo de outra posição de memória “direto”. MOV direto, @Ri Carrega o conteúdo da posição de memória “direto” com o conteúdo da posição de memória endereçada por Ri MOV direto, #dado Carrega o conteúdo da posição de memória “direto” com o valor do dado MOV @Ri, A Carrega o conteúdo da posição de memória endereçada por Ri com o conteúdo do acumulador MOV @Ri, direto Carrega o conteúdo da posição de memória endereçada por Ri com o conteúdo da posição de memória “direto” MOV @Ri, #dado Carrega o conteúdo da posição de memória endereçada por Ri com o valor do dado. MOV DPTR, #dado16 Carrega o DPTR com um endereço de 16 bits. XCH A, Rn Troca os dados do acumulador com o registro Rn XCH A, direto Troca os dados do acumulador com a posição de memória “direto”. XCH A, @Ri Troca os dados do acumulador com o conteúdo da posição de memória endereçada por Ri. XCHD A, @Ri Troca os nibbles menos significativo do acumulador os nibbles menos significativo do conteúdo da memória endereçada por Ri. PUSH direto Guarda o conteúdo da memória “direto” na pilha POP direto Recupera o conteúdo da memória “direto” da pilha MOVX A, @Ri Carrega o acumulador com o conteúdo da RAM externa endereçada por Ri Prof. Celso c MCS51 MOVX A, @DPTR Carrega o acumulador com o conteúdo da RAM externa endereçada por DPTR MOVX @Ri, A Escreve na posição endereçada por Ri da RAM externa o conteúdo do acumulador MOVX @DPTR, A Escreve na posição endereçada por DPTR da RAM externa o conteúdo do acumulador MOVC A, @A+DPTR Carrega o acumulador com o conteúdo da posição endereçada pelo acumulador + DPTR MOVC A, @A + PC Carrega o acumulador com o conteúdo da posição endereçada pelo acumulador + PC INSTRUÇÕES BOOLEANAS CLR C Zera o carry. C=0 CLR bit Zera o bit. Bit=0 SETB C Seta o carry. C=1 SETB bit Seta o bit. Bit=1 CPL C Complementa o carry. CPL bit Complementa o bit. ANL C, bit Operação AND entre o carry e o bit ANL C, bit Operação AND entre o carry e o complemento do bit. ORL C, bit Operação OR entre o carry e o bit ORL C, bit Operação OR entre o carry e o complemento do bit. MOV C, bit Armazena o conteúdo do bit no carry MOV bit, C Armazena o conteúdo do carry no bit JC label Salta para label se o carry=1JNC label Salta para label se carry=0 JB bit, label Salta para label se bit=1 JNB bit, label Salta para label se bit=0 JBC bit, label Salta para label se bit=1. Após o salto o bit é complementado INSTRUÇÕES DE DESVIOS ACALL adr11 Chama subrotina (até 2 kbytes) LCALL adr16 Chama longa de subrotina (até 64 kbytes) RET Retorno de subrotina RETI Retorno de interrupção JMP @A+DPTR Desvio indireto para posição de memória endereçada pelo conteúdo do acc + DPTR SJMP relativo Salto curto incondicional (até 256 bytes) AJMP adr11 Salto incondicional (até 2 kbytes) LJMP adr16 Salto longo incondicional (até 64 kbytes) JZ label Salta para label se acumulador=0 JNZ label Salta para label se acumulador=1 CJNE A, direto, label Salta para label se acumulador ≠ do conteúdo da memória “direto” CJNE A, #dado, label Salta para label se acumulador ≠ do valor do dado CJNE Rn,#dado, label Salta para label se Rn ≠ do valor do dado CJNE @Ri, #dado, label Salta para label se o conteúdo da posição de memória endereçada por Ri ≠ do valor do dado DJNZ Rn, label Decrementa (Rn) e salta para label se (Rn)≠0 DJNZ direto, label Decrementa conteúdo da pos. memória e salta para label se (direto)≠0 NOP Não faz nada