Principal > Documentos > Resumo das instruções do processador LEG
Lista das instruções do processador LEG
Transferência de dados
| Comando | Operação | Flags |
| mov rd,rf | Copia registrador | -- |
| set rd,expr8 | Carrega registrador com valor imediato 8 bits | -- |
| set rd,expr32 | Carrega registrador com valor imediato 32 bits | -- |
| ld rd,expr32 | Carrega registrador, endereçamento direto | -- |
| ld rd, [rf+expr8] | Carrega registrador, endereçamento indireto por registrador | -- |
| ldb rd, expr32 | Carrega registrador com byte, endereçamento direto | -- |
| ldb rd, [rf+expr8] | Carrega registrador com byte, endereçamento indireto por registrador | -- |
| st expr32,rf | Armazena registrador, endereçamento direto | -- |
| st [rd+expr], rf | Armazena registrador, endereçamento indireto por registrador | -- |
| stb expr32,rf | Armazena byte de registrador, endereçamento direto | -- |
| stb [rd+expr], rf | Armazena byte de registrador, endereçamento indireto por registrador | -- |
Instruções Aritméticas
| Comando | Operação | Flags |
| add d,expr8 | Soma registrador com valor imediato 8 bits | CNVZ |
| add rd,rf | Soma registrador com registrador | CNVZ |
| sub rd,expr8 | Subtrai de registrador com valor imediato 8 bits | CNVZ |
| sub rd,rf | Subtrai registrador de registrador | CNVZ |
| cmp rd,expr8 | Compara registrador com valor imediato 8 bits | CNVZ |
| cmp rd,rf | Compara registrador com registrador | CNVZ |
Instruções Lógicas
| Comando | Operação | Flags |
| and rd,rf | E-lógico de registrador com registrador | NZ (C,V ← 0) |
| or rd,rf | OU-lógico de registrador com registrador | NZ (C,V ← 0) |
| xor rd,rf | OU-Exclusivo-lógico de registrador com registrador | NZ (C,V ← 0) |
| tst rd,rf | Testa bits (E-lógico sem atribuição) registrador com registrador | NZ (C,V ← 0) |
| not rd | Negação (inverte bits) de registrador | NZ (C,V ← 0) |
Instruções de deslocamento e rotação
| Comando | Operação | Flags |
| shl rd,imd5 | Deslocamento para a esquerda, endereçamento imediato | CNZ (V ← 0) |
| shl rd,rf | Deslocamento para a esquerda, por registrador | CNZ (V ← 0) |
| shr rd,imd5 | Deslocamento para a direita, endereçamento imediato | CNZ (V ← 0) |
| shr rd,rf | Deslocamento para a direita, por registrador | CNZ (V ← 0) |
| sar rd,imd5 | Deslocamento aritmético para a direita, endereçamento imediato | CNZ (V ← 0) |
| sar rd,rf | Deslocamento aritmético para a direita, por registrador | CNZ (V ← 0) |
| rol rd,imd5 | Rotação para a esquerda, endereçamento imediato | CNZ (V ← 0) |
| rol rd,rf | Rotação para a esquerda, por registrador | CNZ (V ← 0) |
| ror rd,imd5 | Rotação para a direita, endereçamento imediato | CNZ (V ← 0) |
| ror rd,rf | Rotação para a direita, por registrador | CNZ (V ← 0) |
| rcl rd,imd5 | Rotação com vai-um para a esquerda, endereçamento imediato | CNZ (V ← 0) |
| rcl rd,rf | Rotação com vai-um para a esquerda, por registrador | CNZ (V ← 0) |
| rcr rd,imd5 | Rotação com vai-um para a direita, endereçamento imediato | CNZ (V ← 0) |
| rcr rd,rf | Rotação com vai-um para a direita, por registrador | CNZ (V ← 0) |
Instruções de desvio
| Comando | Operação | Flags |
| jmp rótulo | desvio incondicional | -- |
| jmp rd | desvio incondicional, por registrador | -- |
| jc rótulo_perto | desvia se vai-um (menor sem sinal) | -- |
| jnc rótulo_perto | desvia se não vai-um (maior ou igual sem sinal) | -- |
| jz rótulo_perto | desvia se zero | -- |
| jnz rótulo_perto | desvia se diferente de zero | -- |
| jo rótulo_perto | desvia se overflow (com sinal) | -- |
| jno rótulo_perto | desvia se não overflow (com sinal) | -- |
| js rótulo_perto | desvia se sinal igual a um | -- |
| jns rótulo_perto | desvia se sinal igual a zero | -- |
| jl rótulo_perto | desvia se menor (com sinal) | -- |
| jle rótulo_perto | desvia se menor ou igual (com sinal) | -- |
| jg rótulo_perto | desvia se maior (com sinal) | -- |
| jge rótulo_perto | desvia se maior ou igual (com sinal) | -- |
| ja rótulo_perto | desvia se acima (maior sem sinal) | -- |
| jna rótulo_perto | desvia se não acima (menor ou igual sem sinal) | -- |
Instruções que usam a pilha
| Comando | Operação | Flags |
| push rf | Empilha registrador | -- |
| pop rd | Desempilha registrador | -- |
| call rótulo | Chamada de procedimento | -- |
| call rf | Chamada de procedimento, por registrador | -- |
| ret | Retorno de procedimento | -- |
Instruções de entrada e saída
| Comando | Operação | Flags |
| in rd,porta | Leitura de porta de E/S, endereçamento imediato | -- |
| in rd,rf | Leitura de porta de E/S, por registrador | -- |
| inb rd,porta | Leitura de byte de porta de E/S, imediato | -- |
| inb rd,rf | Leitura de byte de porta de E/S, por registrador | -- |
| out porta,rf | Escrita em porta de E/S, endereçamento imediato | -- |
| out rd,rf | Escrita em porta de E/S, por registrador | -- |
| outb porta,rf | Escrita em byte de porta de E/S, endereçamento imediato | -- |
| outb rd,rf | Escrita em byte de porta de E/S, por registrador | -- |
Instruções diversas
| Comando | Operação | Flags |
| pushf | Empilha flags | -- |
| popf | Desempilha flags | todas |
| sys | Chamada de sistema | IS |
| iret | Retorno de interrupção | todas |
| clc | Desliga vai-um | C ← 0 |
| stc | Liga vai-um | C ← 1 |
| cli | Desabilita interrupções | I ← 0 |
| sti | Habilita interrupções | I ← 1 |
| wait | Hiberna o processador | I ← 0 |
| drop | Dispensa privilégios | S ← 0 |
| hlt | Para o processador | -- |