INSTITUTO SUPERIOR POLITÉCNICO DE VISEU ESCOLA SUPERIOR DE TECNOLOGIA Arquitecturas de Computador – 2º Ano / 1º Semestre Ano Lectivo 2005/2006 Exame - 21 de Janeiro de 2006 - (2 horas) Aluno: ___________________________________________________________ N.º_________ Considere a utilização de um sistema computacional baseado no microprocessador Intel 8086 e do ambiente de desenvolvimento Turbo Pascal/Inline Assembler.a 1. Utilizando 8 bits, represente os números inteiros 121, -62, -43, na notação sinal e valor absoluto, complementos para 1 e complementos para 2. Represente os mesmos utilizando 16 bits. 2. Considere a seguinte tabela, referente ao valor dos registos do CPU num dado momento: CS DS ES SS SP BX BP SI DI 2555h 1010h 1114h 5500h 1313h 2222h CADDh 0004h 3000h Determine o(s) endereço(s) físico(s) que é(são) escrito(s), ou lido(s), pelas seguintes instruções: a) MOV AX , [SI] b) ADD DL , [BX+DI] c) SUB CX , [BP+2] d) PUSH SI e) XOR ES:[DI] , CL 3. A implementação de um procedimento requer que se conheça os modos de passagem de parâmetros que exige, de forma a seleccionar o mais adequado. Indique os modos de passagem de parâmetros de e para um procedimento que estudou. Aponte a principal característica de cada um deles. 4. Considere as seguintes declarações em Pascal: Var A,B,C :Boolean; X,Y,Z :Shortint; XX,YY :Integer I,J,K :Byte; Codifique, utilizando o “inline assembler”, as operações equivalentes às instruções em Pascal: a) C:=not((A and B) and (not B or A)); b) X:=(Z+Y)-(Z Mod 7); c) J:=J*(K Div I)-I*3; d) While XX > YY Begin XX := XX – YY END; Arquitecturas de Computador 1/2 INSTITUTO SUPERIOR POLITÉCNICO DE VISEU ESCOLA SUPERIOR DE TECNOLOGIA 5. Pretende-se uma função que receba um número entre 0 e 15 que é passado como parâmetro pela pilha (“stack”) e retorna o caractere correspondente em hexadecimal (‘0’–‘9’, ‘A’– ‘F’): a) Apresente o cabeçalho da função sabendo que é feita o tipo de chamada “intra-segment” (“near call”); b) Apresente o código, em “assembly”, da invocação da função, sabendo que o parâmetro é uma variável de nome N, e o resultado da função é posto numa variável de nome CH; c) Apresente o código, em “assembly”, da função. 6. Escreva um subprograma que devolva o número de caracteres iguais a um caractere “C”, introduzido como parâmetro, de uma “string” de nome “S”. Considere o seguinte cabeçalho: Procedure NChars(S :String; C :Char; Var N :Byte); Near; Assembler; 7. Considere a função 2Ch disponível na chamada ao sistema operativo através da interrupção 21h. Função (AH) Parâmetros de entrada 2Ch Parâmetros de saída CH–Hora (0..23) CL–Minutos (0..59) DH–Segundos (0..59) DL–Centésimos de segundo Descrição Leitura da hora do sistema Com base nesta função escreva um procedimento que efectue a leitura da hora do sistema e coloque essa hora numa “string” “S” no formato “hh:mm:ss p.m.” ou “hh:mm:ss a.m.”. Note que “a.m.” é até 12:00h, e “p.m.” após 12:00h (ex: 18:00h corresponde a 6:00 p.m., e 6:00h corresponde a 6:00 a.m.). Considere o seguinte cabeçalho: Procedure StrHora(var S :String);Near;Assembler; 8. Ointerface de uma unidade de I/O, cujo endereço base (word) está armazenado em 0040h:0020h, é constituído por um registo de dados (endereço base + 0h) e um registo de estado (endereço base + 1h). A escrita no registo de dados permite o envio de um byte para o periférico. O periférico indica se pode ou não receber novos dados através do bit B4 do registo de estado. Registo de estado B7 B6 B5 B4 B3 B2 B1 B0 X X X 1/0 X X X X B4=0 => o periférico pode receber dados B4=1 => o periférico não pode receber dados Escreva um subprograma em assembly que envie uma cadeia de caracteres para o periférico. a Cotações: P1 2,5 P2 2,5 P3 2 Arquitecturas de Computador P4 3 P5 3 P6 3 P7 2 P8 2 2/2