Arquitecturas de Computador – 2º Ano / 1º Semestre

Propaganda
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
Download