Software de Telecomunicações Tópicos de Assembly86

Tamanho: px
Começar a partir da página:

Download "Software de Telecomunicações Tópicos de Assembly86"

Transcrição

1 Software de Telecomunicações Tópicos de Assembly86 Rui Gustavo Crespo Software de Telecomunicações Asm86 : 1/69

2 Pentium arquitectura (1) O Pentium adopta arquitectura CISC reduzido número de registos de uso geral elevado número de instruções do tipo registo-memória (uma dos argumentos pode ser memória) Por compatibilidade, o Pentium mantém as características dos antecessores (8086/8,80286, ) Segmentação de memória Registos de uso geral acedidos a 8, 16 e 32 bits A inércia (foi único processador de 16 bits durante 2 anos) e ter sido adoptado pelo IBM-PC levaram vendas muito superiors aos competidores tecnologicamente superiores. Software de Telecomunicações Asm86 : 2/69

3 Pentium arquitectura (2) Distribuição das componentes de um programa EBP SP Pilha Registos segmento SS DS EIP Arena Dados estáticos Código Registos uso geral CS EAX EBX ECX EDX EDI ESI Software de Telecomunicações Asm86 : 3/69

4 Pentium arquitectura (3) Registos de uso geral podem ser acedidos individualmente na parte inferior Deslocamentos de blocos de memória{ 16-bit 32-bit AH AL AX EAX BH BL BX EBX CH CL CX ECX DH DL DX EDX BP SI DI SP EBP ESP Software de Telecomunicações Asm86 : 4/69 ESI EDI

5 Pentium arquitectura (4) Os registos de uso geral usados para guardar temporariamente dados efectuar operações aritméticas (soma, ) e lógicas (e lógico, "shifts", ) As operações de multiplicação e de divisão trabalham com valores de comprimento duplo (8086/8: 2*16=32 bits, Pentium: 2*32=64 bits), que são guardados no par de registos EDX:EAX (EDX contém dígitos mais significativos). Software de Telecomunicações Asm86 : 5/69

6 Pentium arquitectura (5) EIP: utilizado como ponteiro para a próxima instrução a executar: este registo não é controlável directamente pelo programador. EBX,EBP: utilizados como endereço base de tabela (EBX no segmento de dados, EBP na pilha). ESI,EDI: utilizados como deslocamentos a partir de um registo base (ESI indica deslocamento de uma fonte e ESI indica deslocamento de um destino). Software de Telecomunicações Asm86 : 6/69

7 Pentium arquitectura (6) ESP: utilizado como ponteiro base da pilha (enderço da primeira posição ocupada da pilha). EBP: utilizado como ponteiro topo da pilha, para acesso a parâmetros e variáveis locais. EBP ESP Parâmetros End. retorno Variáveis locais Primeira Posição livre Sentido do PUSH Espaço obtido por subtracção de SP Software de Telecomunicações Asm86 : 7/69

8 Registo bandeiras (1) O Pentium possui um registo EPFLAG, com 17 bandeiras ("flags"). Alguns dos bits são modificados pelo CPU por forma a refletir o estado ("status") da ultima instrução lógica ou aritmética. Há instruções específicas para alterar valor de algumas bandeiras (ex: CLD limpa registo DF) Diversas instruções permitem transferir o controlo do programa de acordo com o valor de bandeiras (ex: salto condicional). Bandeiras DF, IF e TF permitem controlar a operação do processador (ex: DF incrementa/decrementa valor de EDI:ESI na instrução MOVSx). Software de Telecomunicações Asm86 : 8/69

9 Registo bandeiras (2) Nome CF PF AF ZF SF TF IF DF OF Função Carry flag. Colocado a 1 se houver transporte ou empréstimo. Parity flag. Colocado a 1 se os 8 bits inferiores tiverem número par de 1's. Auxiliary carry flag. Colocado a 1 se houver transporte ou empréstimo dos 4 bits inferiores de AL Zero flag. Colocado a 1 se o resultado for nulo Sign flag. Igual ao bit mais significativo Overflow flag. Colocado a 1 se o resultado não puder ser expresso dentro do numero de bits do destino. Software de Telecomunicações Asm86 : 9/69

10 Vírgula flutuante O Pentium possui o conjunto ST de 8 registos de 80 bit, para vírgula flutuante ST manipulado como pilha Registo FPUstatus indica estado corrente da unidade de processamento Números representados pela norma IEEE 754 Zero Infinito Denormais (próximos do zero) NAN ( Not A Number ) - ex: -1 Software de Telecomunicações Asm86 : 10/69

11 Segmentação de memória (1) Os registos 8086/8 têm 16 bits, endereçando apenas 64KB. Os registos de segmentos permitem aumentar espaço de memória CS (Code Segment) para instruções DS (Data Segment) para variáveis globais SS (Stack Segment) para pilha (parâmetros de rotinas e variáveis locais) ES (Extra Segment) Software de Telecomunicações Asm86 : 11/69

12 Segmentação de memória (2) Pentium possui dois registos extra: FS e GS 8086 possuia apenas modo real de memória, com endereço efectivo determinado por: 1. Deslocar segmento 4 bits para a esquerda 2. Somar deslocamento ( offset ) Ex: CS=0200h, IP=03f7h Endereço efectivo = 02000h+03f7h = 023f7h Software de Telecomunicações Asm86 : 12/69

13 Segmentação de memória (3) Por omissão, as instruções usam determinado registo de segmento Acesso a instrução: CS PUSH/POP: SS para endereço efectivo de memória MOV: DS para endereço efectivo de memória [BX]: DS para endereço efectivo de memória [BP]: SS para endereço efectivo de memória Pode-se indicar outro registo na forma xs: Ex: MOV AX,ES:[$var] Software de Telecomunicações Asm86 : 13/69

14 Segmentação de memória (3) Para 16 bits, o Asm86 disponibiliza modos de memória, de acordo com a distribuição dos segmentos Tiny: CS=DS=SS (ficheiro de tipo.com) Small: CS=DS=SS Medium: DS=SS e distinto de CS Large: segmentos separados Software de Telecomunicações Asm86 : 14/69

15 Segmentação de memória (4) 286 disponibilizou modo de memória protegido, com CS=DS=SS. O registo de segmento indexa tabela GDT, com entradas a 64 bits que contêm Endereço base Limite superior Descritores Segmento 16 bits Endereço Descritores Limite superior Endereço base 32bits 32bits EA Software de Telecomunicações Asm86 : 15/69

16 Segmentação de memória (5) No Pentium, o limite é indicado por 20 bits Descritores determinam diversas propriedades: Modo de acesso à memória Bit D : dimensão dos dados D=0 : instruções de 16 bit D=1 : instruções de 32 bit Bit de granularidade G=0 : o processo pode aceder entre 1B e 1 MB. G=1 : o processo pode aceder entre 4KB e 4GB Software de Telecomunicações Asm86 : 16/69

17 Modos de endereçamento (1) Pentium contém 5 modos básicos e 9 derivados. 1. Imediato: valor indicado na própria instrução MOV EAX,0h PUSH Byte PTR 0 2. Registo PUSH CX ; 16 bits POP EAX ; 32 bits Indica tamanho do literal (Byte-1, Word-2, Dword-4) Software de Telecomunicações Asm86 : 17/69

18 Modos de endereçamento (2) 3. Directo: localização por identificador de variável A localização pode ser deslocada [var + Base + índice * escala + deslocamento] Reg base: {EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI} Reg índice: diferente registo base, excluindo ESP Escala: {1,2,4,8}, 1 por omissão (suportada a partir do 386) Software de Telecomunicações Asm86 : 18/69

19 Modos de endereçamento (3) Instrução PUSH Byte PTR [$m+1] PUSH Word PTR [$m+eax*2] PUSH Byte PTR [$m+edx+ebp] Significado Insere na pilha Byte de endereço seguinte a $m Insere na pilha Word de uma tabela $m no índice indicado em EAX Insere na pilha Byte de endereço $m mais soma dos conteúdos de EDX,EBP Software de Telecomunicações Asm86 : 19/69

20 Modos de endereçamento (4) 4. Indirecto: endereço determinado a partir de registos não sendo indicada variável. Há 3 designações de endereçamento indirecto, conforme os registos usados: Base: apenas {EBX,EBP}, com eventual deslocamento. Indexado: apenas {EDI, ESI}, com eventual deslocamento. Base indexada: indicados registos base e índice, com eventual deslocamento. Software de Telecomunicações Asm86 : 20/69

21 Modos de endereçamento (5) Podendo o mesmo registo ser base ou índice, que designação usar no endereçamento indirecto quando apenas se usa 1 registo? Se for indicada escala, ex: PUSH [EBX*2], o modo é indexado. Para os registos ESI e EDI, ex: PUSH [ESI+1], o modo é indexado. Os restantes casos são designados por modo base Software de Telecomunicações Asm86 : 21/69

22 Modos de endereçamento (6) 5. Bloco: usado no deslocamento de grandes sequências de dados. Cadeia fonte apontada por DS:SI Cadeia destino apontada por ES:DI Mnemónica Código Segmento Operação simbólica MOVSB A4 ES,DS [ES:EDI] < [DS:ESI] If DF=0 then ESI<-ESI+1;EDI<-EDI+1; If DF=1 then ESI<-ESI-1;EDI<-EDI-1; Controlo exercido por instrução de repetição (ex: LOOP label) Software de Telecomunicações Asm86 : 22/69

23 Formato de instruções cod w mod reg r/m disp-low disp-high w mod reg r/m 0-Byte 00-disp ausente 00-ES 000-EA=(EBX)+(ESI)+Disp 1-Word 01-disp low estendido 01-CS 001-EA=(EBX)+(EDI)+Disp 10-disp high/low presentes 10-SS 010-EA=(EBP)+(ESI)+Disp 11-DS 011-EA=(EBP)+(EDI)+Disp 100-EA=(ESI)+Disp 101-EA=(EDI)+Disp 110-EA=(EBP)+Disp 111-EA=(EBX)+Disp Software de Telecomunicações Asm86 : 23/69

24 Estrutura do programa As instruções do programa Asm86 possuem a forma [nome] mnemónica [operandos] As instruções podem começar em qualquer coluna e terminam obrigatoriamente por um NEWLINE. Comentários podem ser colocados a seguir a ; Software de Telecomunicações Asm86 : 24/69

25 Directivas (1) Segmento lógico Um segmento lógico é um módulo que pode conter até os 3 componentes físicos de um programa (código, dados e pilha). name SEGMENT align combine 'class' name ENDS As opções align, combine e class definem instruções de ``loading Software de Telecomunicações Asm86 : 25/69

26 Directivas (2) align define o alinhamento do segmento lógico, i.e., a gama de endereços de memória a partir dos quais se poderá colocar o início do segmento de programa BYTE qualquer endereço WORD qualquer endereço de palavra (i.e., endereço par) PARA endereço de parágrafo (16 Bytes/parágrafo) PAGE endereço de página (1024 Bytes/página) Software de Telecomunicações Asm86 : 26/69

27 Directivas (3) combine define o critério de combinação dos segmentos lógicos que possuem o mesmo nome PUBLIC Concatena todos os segmentos lógicos com o mesmo nome. Todos os endereços de código e dados são relacionados no mesmo registo de segmento. STACK Concatena todos os segmentos lógicos com o mesmo nome. Todos os endereços são relacionados com SS COMMON Cria segmentos sobrepostos colocando o início de todos os segmentos que possuem o mesmo nome no mesmo endereço Software de Telecomunicações Asm86 : 27/69

28 Directivas (4) MEMORY Coloca todos os segmentos que possuem o mesmo nome no maior segmento físico possível. AT addr Todas as etiquetas e endereços de variáveis são relacionados para o dado endereço: os segmentos AT não contêm código ou dados inicializados e representam acessos a ROM class determina os segmentos de programa que devem ser colocados uns a seguir aos outros quando o editor de ligações agrupar todos os módulos. Software de Telecomunicações Asm86 : 28/69

29 Directivas (5) END Todos os programas devem terminar por um END. Se na directiva END for indicado um nome, ele é considerado como o módulo principal. _code SEGMENT PARA PUBLIC 'CODE' main PROC FAR ; main entry point MOV EAX,data ; initialize DS MOV DS,EAX ; // LEA ESP,_top ; initialize SP ; _code ENDS END main Software de Telecomunicações Asm86 : 29/69

30 Directivas (6) ASSUME Identifica registo de segmento seg-reg a usar como registo de omissão para as etiquetas e variáveis definidas no segmento de programa seg-name. ASSUME seg-reg:seg-name, ASSUME NOTHING Cancela selecção existente Exemplo: ASSUME CS:_code, DS:_code, SS: _code Todos os segmentos dentro do mesmo segmento lógico Software de Telecomunicações Asm86 : 30/69

31 PROC, ENDP Delimitam rotinas name PROC type name ENDP Directivas (7) O tipo da rotina pode ser NEAR (rotina chamada dentro do segmento) ou FAR. O nome da rotina pode ser usado como operando de instruções jump, call ou loop. No corpo da rotina deve existir pelo menos uma instrução ret. Software de Telecomunicações Asm86 : 31/69

32 Directivas (8) ORG Inicializa o contador para a expressão (que deve ser um numero absoluto). _code SEGMENT PARA PUBLIC 'CODE' ORG 0100h ASSUME CS:_code, DS:_code, SS:_code _main PROC NEAR ; main entry point ; ; programa e dados ; _code ENDS END _main Software de Telecomunicações Asm86 : 32/69

33 Directivas (9) EQU Constante na forma name EQU valor CR EQU 0dh LF EQU 0ah DIM EQU 100 _newline DB CR,LF, $ _data DB DIM DUP(0) Software de Telecomunicações Asm86 : 33/69

34 Directivas (10) macro Inserção inline de código, delimitado por macro endm $pushr MACRO ; salvaguarda registos na pilha push bp push bx push cx push dx ENDM $pushr Software de Telecomunicações Asm86 : 34/69

35 Inteiros, Cadeias caracteres Literais expressos na forma digitosr B (binários: 01b) Q,O (octal) D (decimal, opção por defeito) H (hexadecimal, obrigatoriamente iniciado por dígito 0-9: 0ffh, 42h) Cadeias de caracteres delimitas por plicas ou aspas. O carácter delimitador pode ser inserido na string através da sua duplicação (ex: 'don''t' ) Software de Telecomunicações Asm86 : 35/69

36 Identificadores Iniciados por uma letra, _,?, $ Nota: compiladores geram identificadores próprios (ex: etiquetas) com prefixo inexistente na linguagem (ex: _) para evitar colisões com identificadores de programas (variáveis,rotinas) Letras minúsculas convertidas para maiúsculas. Apenas são considerados os primeiros 31 caracteres. Software de Telecomunicações Asm86 : 36/69

37 Declaração de dados (1) O Asm86 disponibiliza 2 tipos de dados, básicos e compostos [name] ESP valor-inicial, Tipo ESP Espaço Tipo em C Byte DB 8 bits char(ascii) Palavra DW 16 bits short, char(unicode) Duplo DD 32 bits int Quádruplo DQ 64 bits double Software de Telecomunicações Asm86 : 37/69

38 Declaração de dados (2) O valor inicial pode ser literal (inteiro, real,, string), ponto de interrogação - valor inicial é indefinido count DUP(value, ) - multiplas ocorrências de um, ou mais, valores iniciais empty db? ; Byte com valor indefinido integer dw ; Word inicializada a db 100 DUP(1) ; 100 Bytes inicializados a 1 msg1 db Resultado=$ No MS-DOS, as cadeias devem terminar por $ Software de Telecomunicações Asm86 : 38/69

39 Visibilidade Directivas para controlar a visibilidade de nomes entre módulos de programas PUBLIC name, EXTRN name:type, Tipos possiveis: Variáveis externas: BYTE, WORD, DWORD, QWORD Rotinas: FAR, NEAR Números absolutos: ABS EXTRN _printf: FAR ; localização da rotina_printf EXTRN var1: BYTE ; localização da variável de 1 BYTE var1 Software de Telecomunicações Asm86 : 39/69

40 Operadores (1) Operadores do Asm86 para cálculo de expressões 1. LABEL: localização do topo da zona de memória declarada imediatamente atrás _top ; dw 4096 dup(?) LABEL WORD mov ax, offset _top ; inicializar pilha mov sp,ax ; // Software de Telecomunicações Asm86 : 40/69

41 Operadores (2) 2. OFFSET: deslocamento de variável ou etiqueta em relação ao segmento MOV LEA EAX, OFFSET _hello EAX, _hello 3. PTR: imposição de espaço CALL FAR PTR subrot3 PUSH BYTE PTR [EBP]; carrega Byte endereçado por EBP Software de Telecomunicações Asm86 : 41/69

42 Operadores (3) 4. LENGTH: número de elementos de um array 5. SIZE: espaço ocupado (em Bytes) array DW 100 DUP(1) MOV EBX, LENGTH array ; EBX <- 100 MOV ECX,SIZE array ; ECX <- 200 Software de Telecomunicações Asm86 : 42/69

43 Programa tipo (1) Formato típico de um programa MASM.model medium ;modelo DIM equ 40 ;constantes extrn _print:near ;visibilidade $pushr macro ;macros endm Software de Telecomunicações Asm86 : 43/69

44 Programa tipo (2) _data segment word public 'DATA' _data ends ;declarações dados _stack segment para stack 'STACK' stk dw 1024 dup(?) _top label word _stack ends Software de Telecomunicações Asm86 : 44/69

45 Programa tipo (3) _code segment word public 'CODE' assume cs:_code,ds:_data,ss:_stack _start: ; programa _code ends end _start Software de Telecomunicações Asm86 : 45/69

46 Instruções (1) As seguintes abreviaturas são usadas: Abreviatura accum reg segreg r/m immed mem label Significado acumulador (EAX,AX ou AL) registo Byte (AL, ), Word (AX, ) ou Dword (EAX ) registo segmento operando geral: registo, endereço de memória, operando indexado, operando baseado ou operando indexado baseado valor imediato (8 ou 16 bits) operando de memória (etiqueta, variável ou símbolo) etiqueta de instrução Software de Telecomunicações Asm86 : 46/69

47 Instruções (2) Instruções divididas em classes Classe Objectivos Aritméticas Conversão Lógicas Movimentação Pilha Processador Repetição Salto Teste Conversão de dados Deslocamento de informação de um local para outro Manipulação da pilha Ciclos Alteração do registo IP Modificação do registo de bandeiras Software de Telecomunicações Asm86 : 47/69

48 Instruções (3) Aritméticas ADC accum, immed Add immediate with carry to accumulator ADC r/m, immed Add immediate with carry to operand ADC r/m, reg Add register with carry to operand ADC reg, r/m Add operand with carry to register ADD accum, immed Add immediate to accumulator ADD r/m, immed Add immediate to operand ADD r/m, reg Add register to operand ADD reg, r/m Add operand to reg DEC r/m Decrement operand DEC reg Decrement 16-bit register DIV r/m Divide accumulator by operand IDIV r/m Integer divide accumulator by operand IMUL r/m Integer multiply accumulator by operand Software de Telecomunicações Asm86 : 48/69

49 Instruções (4) INC r/m Increment operand INC reg Increment 16-bit register MUL r/m Multiply accumulator by operand NEG r/m Negate operand SBB accum, immedsubtract immediate with borrow SBB r/m, immed Subtract immediate with borrow SBB r/m, reg Subtract register with borrow SBB reg, r/m Subtract operand and carry flag SUB accum, immed Subtract immediate from accumulator SUB r/m, immed Subtract immediate from operand SUB r/m, reg Subtract register from operand SUB reg, r/m Subtract operand from register Software de Telecomunicações Asm86 : 49/69

50 Instruções (5) Conversão AAA AAD AAM AAS CBW CWD DAA DAS ASCII adjust for addition ASCII adjust for division ASCII adjust for multiplication ASCII adjust for subtraction Convert byte to word Convert word to double word Decimal adjust for addition Decimal adjust for substraction Software de Telecomunicações Asm86 : 50/69

51 Instruções (6) A. Multiplicação de inteiros [DX:AX] <- AX * r/m O resultado de uma multiplicação de dois inteiros de 16 bits é um inteiro de 32 bits, residente no par DX:AX Normalmente, o multiplicador é colocado no registo DX MOV AX,y ; carrega multiplicando MOV DX,5 ; carrega multiplicador IMUL DX ; AX <- y*5 Software de Telecomunicações Asm86 : 51/69

52 Instruções (7) B. Divisão de inteiros AX <- [DX:AX] / r/m A instrução IDIV r/m exige um dividendo com 32 bits A conversão de um inteiro de 16 bits para inteiro de 32 bits é efectuada pela instrução CWD MOV AX,y CWD MOV BX,5 IDIV BX ; carrega dividendo ; carrega divisor ; AX <- y/5, DX <- resto divisão Software de Telecomunicações Asm86 : 52/69

53 Instruções (8) Lógicas AND accum, immed AND r/m, immed AND r/m, reg AND reg, r/m NOT r/m OR accum, immed OR r/m, immed OR r/m, reg OR reg, r/m RCL r/m, 1 RCL r/m, CL RCR r/m, 1 RCR r/m, CL Bitwise And immediate with accumulator Bitwise And immediate with operand Bitwise And register with operand Bitwise And operand with register Invert operand bits Bitwise Or immediate with accumulator Bitwise Or immediate with operand Bitwise Or register with operand Bitwise Or operand with register Rotate left through carry by 1 bit Rotate left through carry by CL Rotate right through carry by 1 bit Rotate right through carry by CL Software de Telecomunicações Asm86 : 53/69

54 Instruções (9) ROL r/m, 1 ROL r/m, CL ROR r/m, 1 ROR r/m, CL ROR r/m, CL SAL r/m, 1 SAL r/m, CL SAR r/m, 1 SAR r/m, CL SHL r/m, 1 SHL r/m, CL SHL r/m, 1 SHL r/m, CL XOR accum, immed XOR r/m, immed XOR r/m, reg XOR reg, r/m Rotate left by 1 bit Rotate left by CL Rotate right by 1 bit Rotate right by CL Rotate right by CL Shift arithmetic left by 1 bit Shift arithmetic left by CL Shift arithmetic right by 1 bit Shift arithmetic right by CL Shift left by 1 bit Shift left by CL Shift right by 1 bit Shift right by CL Bitwise Xor immediate with accumulator Bitwise Xor immediate with operand Bitwise Xor register with operand Bitwise Xor operand with register Software de Telecomunicações Asm86 : 54/69

55 Movimentação de dados IN accum, immed IN accum, DX LAHF LDS r/m LEA r/m LES r/m LODS src LODSB LODSW MOV accum, mem MOV mem, accum MOV r/m, immed MOV r/m, reg MOV r/m, segreg MOV reg, immed Instruções (10) Input from port (8-bit immediate) Input from port given by DX Load AH with flags Load operand into DS Load effective address of operand Load operand into ES Load string Load byte from string into AL Load word from string into AH Move memory to accumulator Move accumulator to memory Move immediate to operand Move register to operand Move segment register to operand Move immediate to register Software de Telecomunicações Asm86 : 55/69

56 Instruções (11) MOV reg, r/m MOV segreg, r/m MOVS dest, src MOVSB MOVSW OUT DX, accum OUT immed, accum SAHF STOS dest STOSB STOSW XCHG accum, reg XCHG r/m, reg XCHG r/reg, accum XCHG reg, r/m XLAT mem Move operand to register Move operand to segment register Move string Move string byte by byte Move string word by word bit Output to port given by DX Output to port (8-bit immediate Store AH into flags Store string Store byte in AL at string Store word in AX at string Exchange accumulator with register Exchange operand with register Exchange register with accumulator Exchange register with operand Translate Software de Telecomunicações Asm86 : 56/69

57 Instruções (12) Pilha CALL label Call instruction at label CALL r/m Call instruction indirect INT3 Software interrupt 3 (encoded as one byte) INT immed Software Interrupt 0 through 255 INTO Interrupt on overflow IRET Return from interrupt POP r/m Pop 16-bit operand POP reg Pop 16-bit register from stack POP segreg Pop segment register POPF Pop flags PUSH r/m Push 16-bit operand PUSH reg Push 16-bit register onto stack PUSH segreg Push segment register PUSHF Push flags RET [immed] Return after popping bytes from stack Software de Telecomunicações Asm86 : 57/69

58 Instruções (13) Processador ESC immed, r/m HLT LOCK NOP WAIT Escape with 6-bit immediate and operand Halt Lock bus No operation Wait Software de Telecomunicações Asm86 : 58/69

59 Instruções (14) Repetição LOOP label LOOPE label LOOPNE label LOOPNZ label LOOPZ label REPE REPNE REPNZ REPZ SCAS dest Loop Loop while equal Loop while not equal Loop while not zero Loop while zero Repeat if equal Repeat if not equal Repeat if not zero Repeat if zero Scan string Software de Telecomunicações Asm86 : 59/69

60 Instruções (15) Salto JA label Jump on above JAE label Jump on above or equal JB label Jump on below JBE label Jump on below or equal JC label Jump on carry JCE label Jump on carry or equal JCXZ label Jump on CX zero JE label Jump on equal JGE label Jump on greater or equal JL label Jump on less then JLE label Jump on less then or equal JM label Jump to instruction at label JMP r/m Jump to instruction indirect Software de Telecomunicações Asm86 : 60/69

61 Instruções (16) JNA label JNAE label JNB label JNBE label JNC label JNE label JNG label JNGE label JNL label JNLE label JNO label JP label JPE label JPO label JS label JZ label Jump on not above Jump on not above or equal Jump on not below Jump on not below or equal Jump on not carry Jump on not equal Jump on not greater Jump on not greater or equal Jump on not less than Jump on not less than or equal Jump on not overflow Jump on parity Jump on parity even Nota: A etiqueta da instrução Jump on parity odd de salto condicional tem de se Jump on sign encontrar no intervalo de Jump on zero endereços entre +127 e -128 B. Software de Telecomunicações Asm86 : 61/69

62 Instruções (17) Teste CLC CLD CLI CMC CMP accum, immed CMP r/m, immed CMP r/m, reg CMP reg, r/m CMPS src, dest CMPSB CMPSW STC STD STI Clear carry flag Clear direction flag Clear interrupt flag Complement carry flag Compare immediate with accumulator Compare immediate with operand Compare register with operand Compare operand with register Compare strings Compare strings byte for byte Compare strings word for word Set carry flag Set direction flag Set interrupt flag Software de Telecomunicações Asm86 : 62/69

63 Instruções (18) TEST accum, immed TEST r/m, immed TEST r/m, reg TEST reg, r/m Compare immediate bits with accumulator Compare immediate bits with operand Compare register bits with operand Compare operand bits with register Software de Telecomunicações Asm86 : 63/69

64 Rotinas (1) Rotinas chamadora e chamada usam pilha para guardar parâmetros, endereço de retorno, e espaço de variáveis locais. Valor de retorno pode ser armazenado num registo (tipicamente EAX) ou na pilha. EBP ESP Parâmetros end. retorno Registos Variáveis locais Rotina chamadora Rotina chamada Software de Telecomunicações Asm86 : 64/69

65 Rotinas (2) Rotina chamadora Passos na execução de rotinas 1. Carregar parâmetros, pela instrução PUSH 2. Chamar rotina pela instrução CALL (o processador insere automaticamente na pilha o endereço de retorno) Início da rotina chamada 1. Salvaguardar registos (pelo menos, EBP) 2. Copiar ESP para EBP (que passa a referenciar o registo de activação- frame register ) 3. Subtrair a ESP espaço para as variáveis locais Software de Telecomunicações Asm86 : 65/69

66 Rotinas (3) Variáveis locais acedidas pelo endereço [EBP-desl] Parâmetros acedidos pelo endereço [EBP+desl]: se forem salvaguardados 4 registos num processador de 16 bits, o último parâmetro está deslocado de 4*2+2=10 Bytes. Fim da rotina chamada 1. Instalar no EAX o valor de retorno. 2. Incrementar em ESP o espaço de variáveis locais. 3. Recuperar da pilha os registos, pela ordem inversa de salvaguarda. 4. Executar instrução RET nn (nn - espaço dos parâmetros). Software de Telecomunicações Asm86 : 66/69

67 masm/link (1) Ferramentas suportadas pela Microsoft ml -c fich.asm Gera ficheiro objecto de extensão.obj link fich1+fich2,,,,, Por omissão, os ficheiros de entrada possuem extensão.com Por omissão, gera fich1.exe Opção /t gera ficheiro.com Software de Telecomunicações Asm86 : 67/69

68 masm/link (2) Ambiente: No MSDOS, acrescentar no autoexec.bat No Windows XP, alterar listas no Control Panel System Advanced, botão Environment Variables SET path=%path%;c:\masm611\bin SET lib=c:\masm611\lib; SET include=c:\masm611\include; SET init=c:\masm611\init; Software de Telecomunicações Asm86 : 68/69

69 Exemplo em MSDOS.model tiny CR equ 0DH LF equ 0AH code segment word public 'CODE' org 0100H assume cs:_code,ds:_code,ss:_code start: mov dx, offset msg1 ; imprime mensagem introducao mov ah,09h int 21h ; termina programa _close: mov al,00 mov ah,04ch int 21h msg1 db "Sou o programa 1",CR,LF,"$" code ends end _start Software de Telecomunicações Asm86 : 69/69

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly Gustavo G. Parma Lista dos comandos assembly que serão utilizados ao longo das práticas. 1 Comandos 1. ADD destino, fonte

Leia mais

INSTRUÇÕES DE TRANSFERÊNCIA

INSTRUÇÕES DE TRANSFERÊNCIA INSTRUÇÕES DE TRANSFERÊNCIA Transferência de dados MOV destino, fonte move fonte para destino (byte, word ou double word) PUSH fonte coloca fonte na pilha (word ou double word) POP destino retira topo

Leia mais

Software de Telecomunicações. Tópicos de Assembly86

Software de Telecomunicações. Tópicos de Assembly86 Software de Telecomunicações Tópicos de Assembly86 Prof RG Crespo Software de Telecomunicações Assembly86 : 1/79 Lista processadores Intel (1) Processadores IA-16 1978: 8086-29K transistores, 0.33 MIPS

Leia mais

x86 arquitetura e instruções básicas

x86 arquitetura e instruções básicas x86 arquitetura e instruções básicas 1 Família x86 Data CPU Palavra Endereço (bits) 1978 8086, 8088 1982 80186, 80188 1985 80386 1989 80486 1993 Pentium, Pentium MMX 1995 Pentium Pro 1997 Pentium II/III,

Leia mais

Microprocessadores. Família x86 - Programação do i8086

Microprocessadores. Família x86 - Programação do i8086 Família x86 - António M. Gonçalves Pinheiro Departamento de Física Covilhã - Portugal pinheiro@ubi.pt Estudo Genérico de Microprocessador Microprocessadores i8086 1. Modelo de Programação; 2. Espaço de

Leia mais

Programação ao nível da máquina. Operações lógicas e aritméticas

Programação ao nível da máquina. Operações lógicas e aritméticas Programação ao nível da máquina Operações lógicas e aritméticas Operações lógicas e aritméticas Operações: aritméticas: add, sub, inc, dec, cmp lógicas: and, or, xor, not Realizadas pela ALU (Arithmetic

Leia mais

Arquitectura de Computadores 3º Teste. Instruções do x86

Arquitectura de Computadores 3º Teste. Instruções do x86 Arquitectura de Computadores 3º Teste Ano Lectivo: 2009/2010 Data: 19 de Dezembro de 2009 Duração: 2h00 INFORMAÇÕES GERAIS 1. Mantenha na secretária apenas a sua identificação e uma caneta (azul ou preta).

Leia mais

Operadores lógicos (bit a bit)

Operadores lógicos (bit a bit) Operadores lógicos (bit a bit) Instrução AND Instruções: AND OR XOR NOT Os operandos destas instruções podem ser de 8 ou 16 bits 10010011

Leia mais

Criptografia e Segurança das Comunicações

Criptografia e Segurança das Comunicações Criptografia e Segurança das Comunicações Tópicos de Assembly86 Assembly86 : 1/87 Introdução (1) Curiosidade, não faz parte da avaliação As linguagens Assembly, desenvolvidas a partir dos anos 50, são

Leia mais

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores Exemplos de Microprogramação (12.3); Família Intel x86 José Monteiro Licenciatura em Engenharia Informática e de Computadores Departamento de Engenharia Informática (DEI) Instituto

Leia mais

Instruções funcionamento em 16 bits. 8B bytes W Mod 000 r/m

Instruções funcionamento em 16 bits. 8B bytes W Mod 000 r/m Instruções funcionamento em 6 bits 0 a bytes Mov BYTE PTR [BX], 06h 00 0W Mod 000 r/m 0000 00 0 0 0 8A 07 06 3 bytes 00 8B 07 06 00 4 bytes 00 0W Mod 000 r/m 000 00 0000 0000 Mov WORD PTR [BX], 06h Instruções

Leia mais

8. Instruções de multiplicação e divisão

8. Instruções de multiplicação e divisão Cap8.1 8. Instruções de multiplicação e divisão 8.1 Instruções de multiplicação MUL fonte IMUL fonte MUL (multiply) -> usada com números em representação não-sinalizada IMUL (integer multiply) -> usada

Leia mais

Arquitetura de Computadores. Prof. João Bosco Jr.

Arquitetura de Computadores. Prof. João Bosco Jr. Arquitetura de Computadores Prof. João Bosco Jr. Unidade II Aula 1 Nível ISA Posicionado entre a microarquitetura e o SO Define a arquitetura (Conjunto de Instruções) É a interface entre o Software e o

Leia mais

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)

Leia mais

7. Instruções lógicas, de deslocamento e de rotação

7. Instruções lógicas, de deslocamento e de rotação 7. Instruções lógicas, de deslocamento e de rotação São instruções que permitem mudar o padrão de bits num byte (8 bits) ou numa palavra (16 bits). Linguagens de alto nível (exceto C) não permitem manipular

Leia mais

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32 Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32 Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 CHIP Ano MHz Transistors Mem 8086 1978 5

Leia mais

04/09/2011. Tipos de Instruções. Dados numéricos. Template. Tipo de instruções. Montagem. Conjunto de Instruções do Pentium (ISA) Instruções Diádicas

04/09/2011. Tipos de Instruções. Dados numéricos. Template. Tipo de instruções. Montagem. Conjunto de Instruções do Pentium (ISA) Instruções Diádicas Tipos de Instruções Conjunto de Instruções do Pentium (ISA) Prof. Eduardo Tavares eagt@cin.ufpe.br Manipulação de bit Laços e Saltos Subrotina e interrupções Controle Dados numéricos Template Byte (8 bits)

Leia mais

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas Conjunto de instruções O Conjunto de Instruções ISA Instruction Set Architecture Alguns conceitos... Linguagem máquina Combinação de 0 s e 1 s organizados segundo palavras que são as instruções que o processador

Leia mais

Professor: Dr. Rogério Rodrigues de Vargas.

Professor: Dr. Rogério Rodrigues de Vargas. UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Bacharelado em Ciência da Computação Software Básico Linguagem de Programação Assembly: Uma introdução no Linux/i386 (AT&T)

Leia mais

Os 3 principais tipos de Instruções (INSTRUTION SET) dos up são:

Os 3 principais tipos de Instruções (INSTRUTION SET) dos up são: Linguagem Assembly Os 3 principais tipos de Instruções (INSTRUTION SET) dos up são: INSTRUÇÕES DE TRANSFERÊNCIA DE DADOS - Movem dados entre Registradores, Registradores e Memória e Valores Fixos para

Leia mais

Linguagem de Montagem

Linguagem de Montagem Linguagem de Montagem Organização do PC Slides baseados em material associado ao livro Introduction to Assembly Language Programming, Sivarama Dandamudi 1 Processador Pentium Lançado em 1993 Versão melhorada

Leia mais

7. A pilha e subrotinas

7. A pilha e subrotinas Cap7.1 7. A pilha e subrotinas 7.1 Organização da Pilha (stack) Stack: estrutura de dados de uma dimensão organizada em algum trecho (segmento) da Memória; o primeiro item adicionado é o último a ser removido

Leia mais

Arquitectura de Computadores (ACom)

Arquitectura de Computadores (ACom) Arquitectura de Computadores (ACom) MEAer Acetatos das Aulas Teóricas Versão 5.0 - Português Aula N o 15: Título: ; Arquitecturas de processadores em pipeline Sumário: (registos, bits de estado, memória,

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).

Leia mais

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número de registos visíveis Número de operandos Endereçamento

Leia mais

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2) Arquitectura de um computador Caracterizada por: Conjunto de instruções do processador (ISA Estrutura interna do processador (que registadores existem, etc Modelo de memória (dimensão endereçável, alcance

Leia mais

****************************************************************************

**************************************************************************** **************************************************************************** T U T O R I A L D E L I N G U A G E M A S S E M B L Y --------------- --- ----------------- --------------- Conteúdo: 1.Introdução

Leia mais

x86 Assembly Mini-Course

x86 Assembly Mini-Course x86 Assembly Mini-Course Part 1 Bruno P. Evangelista bpevangelista@gmail.com Introdução Assembly é uma linguagem de programação de baixo nível em formato mnemonico Ela possibilita trabalhar diretamente

Leia mais

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS Capítulo 15 do livro-texto, págs. 309 a 330 Impressora Scanner Monitor Flop Disk Modem Floppy drive "CPU" HD CD ROM Teclado Mouse Dispositivos

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

1. SINTAXE DA LINGUAGEM ASSEMBLY

1. SINTAXE DA LINGUAGEM ASSEMBLY 1. SINTAXE DA LINGUAGEM ASSEMBLY Antes de se escrever em assembly, é conveniente construir um fluxograma do programa. Um fluxograma não faz referência à linguagem a utilizar, pelo que pode ser utilizado

Leia mais

Microprocessador Intel 8086

Microprocessador Intel 8086 Pontifícia Universidade Católica do Rio Grande do Sul Microprocessador Intel 8086 Disciplina: Arquitetura de Computadores I Professor: Eduardo Augusto Bezerra Alunos: Fabiano Klein Franklin Mota Amormino

Leia mais

28/3/2011. Família Intel 80x86. Arquitetura dos Processadores Intel 80x86

28/3/2011. Família Intel 80x86. Arquitetura dos Processadores Intel 80x86 Arquitetura de Computadores Arquitetura dos Processadores Intel 80x86 Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO Família Intel 80x86 Ao se falar

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 3 - O NÍVEL DA ARQUITETURA DO CONJUNTO DAS INSTRUÇÕES (ISA) (Nível Convencional de Máquina) 1. INTRODUÇÃO Este é o nível responsável por fazer a ligação entra a parte de hardware e a parte de software

Leia mais

INT 5h - Print screen Modo Resolução Caract. INT 10h - Vídeo INT 10h - Vídeo

INT 5h - Print screen Modo Resolução Caract. INT 10h - Vídeo INT 10h - Vídeo BIOS Basic Input/Output System BIOS e System Calls Prof. Eduardo Tavares eagt@cin.ufpe.br Primeira instrução a ser executada (0xFFFF0-0xFFFFF) Configuração inicial do sistema Inicialização do boot loader

Leia mais

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador: Introdução aos Sistemas de Computação (4) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.

Leia mais

Linguagem de Montagem

Linguagem de Montagem Linguagem de Montagem Procedimentos e a Pilha Slides baseados em material associado ao livro Introduction to Assembly Language Programming, Sivarama Dandamudi 1 O que é a pilha? A pilha é uma estrutura

Leia mais

Sistemas de Computação

Sistemas de Computação Sistemas de Computação Introdução a programação Assembly Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 5 de novembro de 2009 Haroldo Gambini Santos Sistemas de Computação 1/30 Assembly

Leia mais

EEL Microprocessadores. Parâmetros e Variáveis Locais 4/5/2010. Capítulo 7 Livro Ziller. Prof. Raimes Moraes GpqCom EEL UFSC

EEL Microprocessadores. Parâmetros e Variáveis Locais 4/5/2010. Capítulo 7 Livro Ziller. Prof. Raimes Moraes GpqCom EEL UFSC EEL7030 - Microprocessadores Parâmetros e Variáveis Locais Capítulo 7 Livro Ziller Prof. Raimes Moraes GpqCom EEL UFSC Macro-Assembler Subrotina Near MSG1 DB JÁ VOU$' CODIGO SEGMENT INICIO:... AX,DADOS

Leia mais

Arquitectura de Computadores II. Medição de desempenho

Arquitectura de Computadores II. Medição de desempenho Arquitectura de Computadores II LESI - 3º Ano Medição de desempenho João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Abril 2002 1. Introdução A medição de desempenho pretende

Leia mais

Introdução. Programando em Assembly. Primeiro Exemplo (2) Primeiro Exemplo (1) Linguagem Assembly do 8086/8088

Introdução. Programando em Assembly. Primeiro Exemplo (2) Primeiro Exemplo (1) Linguagem Assembly do 8086/8088 Introdução Programando em Assembly (Aula 16) Linguagem Assembly do 8086/8088 Para construirmos os programas em Assembly, devemos estruturar o fonte da seguinte forma (usando TASM como montador) Define

Leia mais

Arquitectura de Computadores (ACom)

Arquitectura de Computadores (ACom) Arquitectura de Computadores (ACom) MEAer Acetatos das Aulas Teóricas Versão 4.0 - Português Aula N o 16: Título: ; Arquitecturas de processadores em pipeline Sumário: (registos, bits de estado, memória,

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Arquitetura de Computadores Prof. Fábio M. Costa Instituto de Informática UFG 1S/2004 ISA: Arquitetura de Conjunto de Instruções Roteiro Introdução Classificação de conjuntos de instruções Endereçamento

Leia mais

Organização Funcional

Organização Funcional Organização Funcional Modelo de Arquitectura de Von Neuman 26 Organização Funcional Modelo de Arquitectura de Von Neuman CPU Unidade Central de processamento (central process unit) Onde tudo se passa ;

Leia mais

Aula 14: Instruções e Seus Tipos

Aula 14: Instruções e Seus Tipos Aula 14: Instruções e Seus Tipos Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35 Conceitos Básicos Diego Passos

Leia mais

Evolução dos Processadores

Evolução dos Processadores Evolução dos Processadores Arquitetura Intel Arquitetura x86 Micro Arquitetura P5 P6 NetBurst Core Processador Pentium Pentium Pro Pentium II Pentium III Pentium 4 Pentium D Xeon Xeon Sequence Core 2 Duo

Leia mais

Sistemas de Computação para Controle e Automação CIC132. Assembly. Assembly. Notas. Décima quarta aula: Introdução a programação Assembly

Sistemas de Computação para Controle e Automação CIC132. Assembly. Assembly. Notas. Décima quarta aula: Introdução a programação Assembly Sistemas de Computação para Controle e Automação CIC132 Décima quarta aula: Introdução a programação Assembly Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 5 de novembro de 2009 Haroldo

Leia mais

CAPÍTULO 3 NÍVEL ISA. 3.1 Introdução ao Nível de Arquitetura do Conjunto de Instruções

CAPÍTULO 3 NÍVEL ISA. 3.1 Introdução ao Nível de Arquitetura do Conjunto de Instruções CAPÍTULO 3 NÍVEL ISA 3.1 Introdução ao Nível de Arquitetura do Conjunto de Instruções O Nível de Arquitetura do Conjunto de Instruções (ISA - Instruction Set Architecture) é a interface entre software

Leia mais

Laboratório de Sistemas Processadores e Periféricos

Laboratório de Sistemas Processadores e Periféricos Laboratório de Sistemas Processadores e Periféricos Sistema de Interrupções do 8086 Prática 11 Gustavo G. Parma Assunto: sistema de interrupcões do 8086. Interrupções do DOS Objetivos: Apresentação do

Leia mais

Linguagem de Montagem 2. Operações e Operandos

Linguagem de Montagem 2. Operações e Operandos Linguagem de Montagem 2 Operações e Operandos Revisão Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer Esse conjunto de instruções chamamos de algoritmo

Leia mais

2 Formalidades referentes ao trabalho

2 Formalidades referentes ao trabalho Bacharelado em Ciência da Computação DINF / UFPR Projetos Digitais e Microprocessadores 1 o Semestre de 2006 MICO-v12.r0 07/03/2006 Profs. Luis Allan Künzle e Armando Luiz Nicolini Delgado Atenção: Este

Leia mais

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I: Unidade: Unidade Lógica e Aritmética e Registradores Unidade I: 0 Unidade: Unidade Lógica e Aritmética e Registradores UNIDADE LÓGICA E ARITMÉTICA E REGISTRADORES O Processador é um chip com milhares de

Leia mais

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Interrupções. As interrupções são casos especiais de chamadas de procedimentos. Interrupções Uma interrupção é equivalente a uma chamada de procedimento. A chamada é equivalente a um CALL gerado pela execução de uma instrução. As interrupções são casos especiais de chamadas de procedimentos.

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5.1 Linguagem de Montagem (Assembly) Prof. Luiz Gustavo A. Martins Sistema Decimal: sistema natural do homem. No assembly um número decimal pode terminar com um d. Ex: 64223

Leia mais

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy) Capítulo 4 João Lourenço Joao.Lourenco@di.fct.unl.pt Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa 2007-2008 MARIE (Machine Architecture Really Intuitive and Easy) Adaptado dos transparentes

Leia mais

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

MC102 Algoritmos e programação de computadores Aula 3: Variáveis MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,

Leia mais

Linguagem de Montagem e Assembly. André Luiz da Costa Carvalho

Linguagem de Montagem e Assembly. André Luiz da Costa Carvalho Linguagem de Montagem e Assembly André Luiz da Costa Carvalho Linguagem de Montagem Todo programa para ser executado precisar ser convertido de linguagem fonte (alto nível) para um programa equivalente

Leia mais

2 - Processadores. CEFET-RS Curso de Eletrônica. Organização de Computadores. Profs. Roberta Nobre & Sandro Silva

2 - Processadores. CEFET-RS Curso de Eletrônica. Organização de Computadores. Profs. Roberta Nobre & Sandro Silva CEFET-RS Curso de Eletrônica 2 - Processadores Profs. Roberta Nobre & Sandro Silva robertacnobre@gmail.com e sandro@cefetrs.tche.br Microprocessador 8086 FX ULA AH AL BH BL CH CL DH DL BP SI DI SP (AX)

Leia mais

Introdução à programação em linguagem assembly

Introdução à programação em linguagem assembly Introdução à programação em linguagem assembly Espaço de endereçamento Instruções de acesso à memória Modos de endereçamento Diretivas Tabelas Pilha Rotinas Arquitetura de Computadores Introdução à programação

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Sumário Unidade Lógica Aritmetrica Registradores Unidade Lógica Operações da ULA Unidade de Ponto Flutuante Representação

Leia mais

ArchC. Wesley Nunes Gonçalves

ArchC. Wesley Nunes Gonçalves Implementação do Processador ARM7 em ArchC Wesley Nunes Gonçalves 23 de novembro de 2007 ARM7 Instruções Implementadas O ARM possui 37 registradores, sendo 31 registradores de propósito geral e 6 registradores

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos Conjunto de instruções e modos de endereçamento aula 4 Profa. Débora Matos Conjunto de Instruções A = ((B + C) x D + E F)/(G x H) A H denotam posições da memória endereços As arquiteturas possuem as seguintes

Leia mais

Assembly. Prof. Jorge Cavalcanti. Prof. Sérgio Faustino.

Assembly. Prof. Jorge Cavalcanti. Prof. Sérgio Faustino. F A C A P E FACULDADE DE CIÊNCIAS APLICADAS E SOCIAIS DE PETROLINA CIÊNCIA DA COMPUTAÇÃO Assembly MANUAL DE REFERÊNCIA Prof. Jorge Cavalcanti jorge.cavalcanti@uol.com.br Prof. Sérgio Faustino sergiofaustino@hotmail.com

Leia mais

Conceitos Básicos de C

Conceitos Básicos de C Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,

Leia mais

A linguagem ASSEMBLY

A linguagem ASSEMBLY A linguagem ASSEMBLY Assembly é uma linguagem de baixo nível, chamada freqüentemente de linguagem de montagem É uma linguagem considerada difícil, principalmente porque o programador precisa conhecer a

Leia mais

PCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação

PCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação PCS-2302 / PCS-2024 Lab. de Fundamentos de Eng. de Computação Aula 02 Anarosa Alves Franco Brandão (PCS 2302) Jaime Simão Sichman (PCS 2302) (PCS 2024) Ricardo Luís de Azevedo da Rocha (PCS 2024) Monitores:

Leia mais

Arquitectura de Computadores II. Máquinas Virtuais

Arquitectura de Computadores II. Máquinas Virtuais Arquitectura de Computadores II 3º Ano Máquinas Virtuais João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Março 2003 Máquinas Virtuais Questões que levaram à introdução de máquinas

Leia mais

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM Cap1.1 ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM 1. Conceitos básicos Bit = BInary digit = vale sempre 0 ou 1 elemento básico de informação Byte Word = 8 bits processados em paralelo (ao

Leia mais

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel Processadores 8086 Registradores: 16 bits 1978 Data bus:

Leia mais

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel O Nível ISA Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel Nível ISA (Instruction Set Architecture) Tipos de dados Inteiros (1, 2, 4 ou 8 bytes) Servem também para representar

Leia mais

http://www.risesecurity.org Rodrigo Rubira Branco rodrigo@kernelhacking.com rodrigo@risesecurity.org

http://www.risesecurity.org Rodrigo Rubira Branco rodrigo@kernelhacking.com rodrigo@risesecurity.org Ataques Polimórficos Rodrigo Rubira Branco rodrigo@kernelhacking.com rodrigo@risesecurity.org A idéia - Detectores de intrusos utilizam-se de assinaturas de ataques para identificação dos mesmos - Sistemas

Leia mais

Programando em Assembly

Programando em Assembly Programando em Assembly (Aula 16) Linguagem Assembly do 8086/8088 Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Introdução Para construirmos os programas em Assembly,

Leia mais

Capítulo 2: Introdução à Linguagem C

Capítulo 2: Introdução à Linguagem C Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Universidade Federal de Santa Catarina Centro Tecnológico Curso de Pós-Graduação em Ciência da Computação Aula 2 Arquitetura do Processador MIPS: características gerais, registradores, formatos de instrução,

Leia mais

Funcionamento básico de um computador

Funcionamento básico de um computador Funcionamento básico de um computador Processador Unidade de dados Unidade de controlo Arquitetura de computador básica Linguagem assembly Exemplos Arquitetura de Computadores Funcionamento básico de um

Leia mais

EEL Microprocessadores

EEL Microprocessadores EEL7030 - Microprocessadores 8086 Primeiro (1980) da família do Pentium (80x86). Componente com arquitetura similar (8088) utilizado no primeiro IBM PC. Cada descendente executa código dos antepassados

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

Disciplina de. Organização de Computadores Digitais

Disciplina de. Organização de Computadores Digitais USP - ICMC - SSC SSC 0511 - Sist. Informação - 2o. Semestre 2014 Disciplina de Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor

Leia mais

Universidade de São Paulo

Universidade de São Paulo Universidade de São Paulo Organização de Computadores Dr. Jorge Luiz e Silva Cap 8 Subrotinas e Parâmetros Seqüência de instruções repetitivas. Na chamada existe o DESVIO para a rotina No retorno existe

Leia mais

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza Software Básico Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly Prof. MSc. Hugo Vieira L. Souza Este documento está sujeito a copyright. Todos os direitos estão reservados para o todo

Leia mais

LABORATÓRIO DE LINGUAGEM DE MONTAGEM. MACROS e GERENCIAMENTO DE MEMÓRIA

LABORATÓRIO DE LINGUAGEM DE MONTAGEM. MACROS e GERENCIAMENTO DE MEMÓRIA LABORATÓRIO DE LINGUAGEM DE MONTAGEM MACRO: MACROS e GERENCIAMENTO DE MEMÓRIA Capítulos 13 e 14 do livro-texto, págs. 257 a 308 é um bloco de texto que recebe um nome especial consiste de instruções, diretivas,

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 Análise do Instruction Set Architecture (2) Acesso a operandos no IA-32: sua localização e modos de acesso Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos

Leia mais

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão Entradas/Saídas Programação por interrupções Conceitos gerais Programação da porta série Transmissão Problemas a resolver Como identificar a interrupção? Motivo da interrupção Que rotina executar? Como

Leia mais

Relatório MC404 - Trabalho 3 - Prof. Rodolfo

Relatório MC404 - Trabalho 3 - Prof. Rodolfo Relatório MC404 - Trabalho 3 - Prof. Rodolfo Gustavo Sverzut Barbieri, Ivens Prates Telles Alves Grupo: Gustavo Sverzut Barbieri RA: 008849 Ivens Prates Telles Alves RA: 008908 1 O Projeto O terceiro trabalho

Leia mais

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 Análise do Instruction Set Architecture (2) Acesso a operandos no IA-32: sua localização e modos de acesso Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 3.1 CPU: Unidade de Processamento Central Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Unidade de Processamento Central (CPU): Memória Principal Unidade de Processamento

Leia mais

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano Arquitetura e Organização de Computadores 1 Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano Objetivo: Apresentar as funções o mecanismo de atuação da

Leia mais

Introdução a Engenharia Reversa

Introdução a Engenharia Reversa Introdução a Engenharia Reversa Por Maycon Maia Vitali a.k.a. 0ut0fBound maycon@consysonline.com.br http://outofbound.host.sk Conceito Resumo História da Engenharia Reversa - WWII Engenharia Reversa de

Leia mais

Aula Prática 1 Introdução à programação Assembly no DOS usando TASM Bruno Silva bs@cin.ufpe.br lauro Moura lauromoura@gmail.com

Aula Prática 1 Introdução à programação Assembly no DOS usando TASM Bruno Silva bs@cin.ufpe.br lauro Moura lauromoura@gmail.com Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando TASM Bruno Silva bs@cin.ufpe.br lauro Moura lauromoura@gmail.com Conteúdo Visão geral do processo TASM / TLINK

Leia mais

Objetivos Gerais. Arquitetura de Computadores. Arquiteturas estudadas. O Computador Neander

Objetivos Gerais. Arquitetura de Computadores. Arquiteturas estudadas. O Computador Neander Objetivos Gerais Arquitetura de Computadores Prof. Fábio M. Costa Instituto de Informática UFG 1S/2005 ISA Parte II: Arquiteturas-Exemplo Simuladores e Máquinas Reais Demonstrar os conceitos genéricos

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

MATA49 Programação de Software Básico

MATA49 Programação de Software Básico MATA49 Programação de Software Básico Leandro Andrade leandrojsadcc.ufba.br PROF. LEANDRO ANDRADE 1 Introdução a linguagem de montagem com Nasm PROF. LEANDRO ANDRADE 2 Sintaxe básica Não é sensível

Leia mais

Universidade de São Paulo

Universidade de São Paulo Universidade de São Paulo Organização de Computadoresres Dr. Jorge Luiz e Silva Cap 3 Estrutura da Unidade de Processamento 8086/8088 14 Registradores.PC Contador de programa.sp Ponteiro de Pilha.SP Índice

Leia mais

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira

Data types. In C: char. short. int/long. double/long long AC 2017/2018. Pedro Serra / Sérgio Ferreira x86 Data types In C: char short int/long double/long long 2 O stack O stack cresce em direção a endereços de memória menores Instruções fundamentais: push, pop 0xFF90 0xA331 0xFF8E 0xFF8C 0xFF8A 0x4712

Leia mais

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo Nível da Arquitetura do Conjunto de Instruções Ronaldo de Freitas Zampolo Tópicos Introdução Visão geral do nível ISA Tipos de dados Formatos de instruções Endereçamento Tipos de instruções Fluxo de controle

Leia mais