Conjunto de Instruções (ISA) II José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-10-18 José Costa (DEI/IST) Conjunto de Instruções (ISA) II 1
Sumário Conjunto de Instruções do Processador P3 José Costa (DEI/IST) Conjunto de Instruções (ISA) II 2
Conjunto de Instruções do Processador P3 Aritméticas Lógicas Deslocamento Controlo Transferência Genéricas NEG COM SHR BR MOV NOP INC AND SHL BR.cond MVBH ENI DEC OR SHRA JMP MVBL DSI ADD XOR SHLA JMP.cond XCH STC ADDC TEST ROR CALL PUSH CLC SUB ROL CALL.cond POP CMC SUBB RORC RET CMP ROLC RETN MUL RTI DIV INT José Costa (DEI/IST) Conjunto de Instruções (ISA) II 3
Instruções Aritméticas Instrução Mnemónica Exemplo Complemento aritmético NEG NEG R1 Incrementar INC INC M[R2] Decrementar DEC DEC M[R3+A5A5h] Adicionar ADD ADD R3, M[R5+4] Adicionar com transporte ADDC ADDC R3, M[R6] Subtrair SUB SUB R3, M[R5+4] Subtrair com empréstimo SUBB SUBB R1, R2 Comparar CMP CMP R1,R2 Multiplicar MUL MUL R3,R4 Dividir DIV DIV R3,R4 José Costa (DEI/IST) Conjunto de Instruções (ISA) II 4
Instruções Lógicas Instrução Mnemónica Exemplo Conjunção AND AND R1, M[R3] Disjunção OR OR R1, 00FFh Disjunção exclusiva XOR XOR M[R1], R2 Complemento lógico COM COM M[R2+4] Teste TEST TEST R5, M[R4] José Costa (DEI/IST) Conjunto de Instruções (ISA) II 5
Instruções de Deslocamento Instrução Mnemónica Exemplo Deslocamento lógico à direita SHR SHR R1, 4 Deslocamento lógico à esquerda SHL SHL M[R1], 2 Deslocamento aritmético à direita SHRA SHRA M[R1], 2 Deslocamento aritmético à esquerda SHLA SHLA M[R2], 4 Rotação para a direita ROR ROR R4, 15 Rotação para a esquerda ROL ROL R4, 1 Rotação para a direita, com transporte RORC RORC R4, 15 Rotação para a esquerda, com transporte ROLC ROLC R2, 15 José Costa (DEI/IST) Conjunto de Instruções (ISA) II 6
Instruções de Controlo Instrução Mnemónica Exemplo Salto relativo incondicional BR BR Pos1 Salto relativo condicional BR.cond BR.cond Pos2 Salto incondicional absoluto JMP JMP M[R3+1] Salto condicional absoluto JMP.cond JMP.cond Rot1 Chamada a subrotina CALL CALL Rotina1 Chamada condicional a subrotina CALL.cond CALL.cond Rot2 Retorno de subrotina RET RET Retorno de subrotina com N parâmetros RETN RETN 4 Interrupção INT INT 55 Retorno de interrupção RTI RTI José Costa (DEI/IST) Conjunto de Instruções (ISA) II 7
Condições de Salto Condição Mnemónica Descrição Zero Z Última operação deu resultado zero Não zero NZ Última operação deu resultado não zero Transporte C Última operação gerou transporte Não transporte NC Última operação não gerou transporte Negativo N Última operação deu resultado negativo Não negativo NN Última operação deu resultado não negativo Excesso O Última operação gerou excesso (overflow) Não excesso NO Última operação não gerou excesso (overflow) Positivo P Última operação deu resultado positivo Não positivo NP Última operação não deu resultado positivo Interrupção I Existe uma interrupção pendente Não interrupção NI Não existe interrupção pendente José Costa (DEI/IST) Conjunto de Instruções (ISA) II 8
Instruções de Transferência de Dados Instrução Mnemónica Exemplo Copiar o conteúdo MOV MOV R1, M[R2] Copiar octeto menos significativo MVBL MVBL M[Pos1], R3 Copiar octeto mais significativo MVBH MVBL R3, R4 Trocar o conteúdo XCH XCH R1, M[R2] Colocar na pilha PUSH PUSH R1 Remover da pilha POP POP M[R5+4] José Costa (DEI/IST) Conjunto de Instruções (ISA) II 9
Outras Instruções Instrução Activar interrupções Desactivar interrupções Activar bit de transporte Desactivar bit de transporte Complementar bit de transporte Operação nula Mnemónica ENI DSI STC CLC CMC NOP José Costa (DEI/IST) Conjunto de Instruções (ISA) II 10
Pseudo-Instruções ORIG Especifica o endereço de origem do código que se segue EQU Define o valor de uma constante WORD Reserva uma posição de memória para uma variável STR Guarda uma cadeia de caracteres em memória TAB Reserva posições de memória José Costa (DEI/IST) Conjunto de Instruções (ISA) II 11
Exemplos de Utilização Programa para somar 10 posições consecutivas, com início na posição Inicio. MOV R1, 9 MOV R2, R0 ; Limpa o registo R2 Ciclo: ADD R2, M[Inicio+R1] DEC R1 BR.NN Ciclo ; Continua se R1>=0 MOV R1, R0 MOV R2, R0 ; Limpa o registo R2 Ciclo: ADD R2, M[Inicio+R1] INC R1 CMP R1, 10 ; Compara R1 com 10 BR.NZ Ciclo ; Continua se R1-10 <> 0 José Costa (DEI/IST) Conjunto de Instruções (ISA) II 12
Exemplos de Utilização FIM_STR EQU @ ORIG 8000h VarStrOrigem STR Arquitectura de Computadores @ VarStrDestino TAB 30 ORIG 0000h Inicio: MOV R1, VarStrDestino MOV R2, VarStrOrigem Ciclo: MOV R3, M[R2] CMP R3, FIM_STR BR.Z Meio MOV M[R1], R0 INC R1 INC R2 BR Ciclo Meio: MOV R3, M[R2] MOV M[R1], R3 DEC R2 DEC R1 CMP R1, VarStrDestino BR.NN Meio Fim: BR Fim José Costa (DEI/IST) Conjunto de Instruções (ISA) II 13
Sumário Conjunto de Instruções do Processador P3 José Costa (DEI/IST) Conjunto de Instruções (ISA) II 14
Referências Arquitectura de Computadores: dos Sistemas Digitais aos Microprocessadores, G. Arroz, J. Monteiro, A. Oliveira, Secções 10.1, 10.2, 10.3, 10.5, 10.6 José Costa (DEI/IST) Conjunto de Instruções (ISA) II 15
Próxima Aula Conjunto de Instruções (ISA) (cont.) José Costa (DEI/IST) Conjunto de Instruções (ISA) II 16