[Guia de resolução para teste 1 - ASC I - 2006/2007 NOTA: NÃO CONSIDERE ESTAS RESPOSTAS COMO COMPLETAS! ] 1- a) 2^15 + 2^0 = 32769(10) 8001(16) b) bit sinal = 1 --> num. negativo, logo: (por comp. 2) -01111111111111111111(2) = -32767(10) c) little-endian --> primeiro na memória a parte menos significativa 100: 00000001(2) 101: 10000000(2) 2- nota: C-se o resultado necessitava de 9 bits O-se o resultado usa oitavo bit, o de sinal (ver aulas!) S-se no resultado o oitavo bit a 1 Z-se resultado = 0 a) 00000101; C=0,O=0,S=0,Z=0 b) 11111111; C=1,O=0,S=1,Z=0 c) 01111111; C=1,O=1,S=0,Z=0 d) 10000001; C=1,O=0,S=1,Z=0 3- a) stack pointer (SP) para manter endereço do topo da pilha b) push: pop: MAR<-SP SP<-SP-1 MBR<-AC MAR<-SP Mem[MAR]<-MBR MBR<-Mem[MAR] SP<-SP+1 AC<-MBR 4- A1:... A2:... mov ebx, 0 ciclo: mov eax, [A1+ebx] mov [A2+ebx], eax add ebx, 4 cmp ebx, 1024 jb ciclo 5- a) soma: push ebp mov ebp, esp mov eax, 0 mov ebx, [ebp+8] for: add eax, ebx dec ebx jnz for pop ebp ret b) push dword 4 call somas add esp, 4 mov [x], eax 6- imediato - operando na instrução - envolve apenas o CPU, pouco tempo de execução registo - instrução indica um registo - envolve apenas o CPU, pouco tempo de execução endereçamento de memória - instrução refere um operando em memória - envolve o CPU, bus de sistema e memória, maior tempo de execução 7- a) dados - 16 bits end. - 21 bits b) cada endereço - 2 bytes 2^21 * 2 = 2^22 bytes = 4 MBytes c) endereçamento directo - endereço na instrução, logo a codificação de uma instrução com este endereçamento terá sempre o código da instrução (opcode) mais o endereço, logo será sempre maior que 21 bits.