killerhcf Posted June 19, 2008 Report Share Posted June 19, 2008 bem as duvidas sao as seguintes nao tem muito a ver com a parte de programacao mas como funciona o assembly 8086: O enderenco da memoria onde esta localizado a proxima instrucao a ser executada no x86(8086) é apontada por? CS-code segment; IP-instruction pointer; pela soma de IP com o CS; ou nao é nenhum destes referidos atras; O mecanismo de interrupcoes dox86(8086) permite atender perifericos porque quando acontecem? sao executadas rotinas de software armazenadas em posicoes de memoria previamente definidas; as instrucoes sao suspensas a meio do ciclo fetch; o CPU fica parado; a memoria que esta a ser utilizada é gravada no disco rígido; O Opcode de uma instrucao tem dimensão? que depende do numero de instrucoes; que depende do numero de instrucoes e parametros; potencia de 2 que depende da fase fetch; entre 3 e 4 bits; Na comunicacao serie assícrona o bit de paridade serve para; tentar detectar erros de transmissão; garantir que o número de bits transmitidos é impar; garantir que o numero de bits de dados transmitidos é par; detectar erros de transmissão; so queria saber qual destas opcoes tão certas ou seja a resposta das perguntas é so mesmo para ficar a saber mais desta parte pois da programacao ja percebo um pouco. Link to comment Share on other sites More sharing options...
Baderous Posted June 19, 2008 Report Share Posted June 19, 2008 1 - Não sei o que é o code-segment, mas se for o comprimento da instrução, sei que a próxima instrução vai estar no endereço IP+comprimento. Portanto depende do que for esse code-segment. Caso não seja o comprimento, então a resposta certa é IP. 2 - sao executadas rotinas de software armazenadas em posicoes de memoria previamente definidas 3 - O que tenho visto sempre é opcode=4 bits, por isso nesta não sei bem. 4 - tentar detectar erros de transmissão Link to comment Share on other sites More sharing options...
pedrosorio Posted June 19, 2008 Report Share Posted June 19, 2008 Eu não percebo nada disto, mas em relação ao 3 não devia depender do número de instruções existentes? Quanto mais instruções, maior a dimensão do Opcode para poder representar todas as instruções? LOL @ "Na comunicacao serie assícrona o bit de paridade serve para: garantir que o numero de bits de dados transmitidos é par;" Não respondo a dúvidas por mensagem. Link to comment Share on other sites More sharing options...
Baderous Posted June 19, 2008 Report Share Posted June 19, 2008 Eu não percebo nada disto, mas em relação ao 3 não devia depender do número de instruções existentes? Quanto mais instruções, maior a dimensão do Opcode para poder representar todas as instruções? Talvez seja isso. Link to comment Share on other sites More sharing options...
killerhcf Posted June 20, 2008 Author Report Share Posted June 20, 2008 obrigado pelas as respostas a 1º foi como dizeram é o IP e CS http://en.wikibooks.org/wiki/X86_Assembly/16_32_and_64_Bits Link to comment Share on other sites More sharing options...
killerhcf Posted June 20, 2008 Author Report Share Posted June 20, 2008 obrigado pelas as respostas a 1º foi como dizeram é o IP e CS http://en.wikibooks.org/wiki/X86_Assembly/16_32_and_64_Bits "CS * 16 + IP" afinal por isso é apcao 4 Link to comment Share on other sites More sharing options...
killerhcf Posted June 20, 2008 Author Report Share Posted June 20, 2008 1 - Não sei o que é o code-segment, mas se for o comprimento da instrução, sei que a próxima instrução vai estar no endereço IP+comprimento. Portanto depende do que for esse code-segment. Caso não seja o comprimento, então a resposta certa é IP. 2 - sao executadas rotinas de software armazenadas em posicoes de memoria previamente definidas 3 - O que tenho visto sempre é opcode=4 bits, por isso nesta não sei bem. 4 - tentar detectar erros de transmissão na 2ª pergunta é essa resposta pq as interrupcoes tao defenidas no x86 como "int" e depois a posicao da memoria onde faz a interrupcao(21h)? ou seja o "int" ja ta defenido algures na memoria e quando se escreve "int" no programa ja se sabes que é a instrucao int que ja ta defenido,tal como os movs,add,sub ...etc? Link to comment Share on other sites More sharing options...
Baderous Posted June 20, 2008 Report Share Posted June 20, 2008 O programa não precisa de conter nenhum código especial para dizer que há uma interrupção. O processador e o sistema de exploração são responsáveis por suspender o programa e retomá-lo no mesmo ponto. Para contemplar as interrupções, um ciclo de interrupção é adicionado ao ciclo de instruções. No ciclo de interrupção, o processador faz um teste para ver se ocorreu alguma interrupção, indicada pela presença de um sinal de interrupção. Se não existirem interrupções pendentes, o processador prossegue para o ciclo de extracção e procura a próxima instrução do programa corrente. Se uma interrupção estiver pendente faz o seguinte:1 - Suspende a execução do programa correntemente a ser executado e salvaguarda o contexto. Isto significa guardar o endereço da próxima instrução a ser executada (o conteúdo do contador de programa) e outros dados relevantes para a actividade corrente do processador. 2 - Ajusta o contador de programa para o início da rotina de atendimento de interrupção. Quando a rotina de atendimento estiver concluída, o processador pode retomar a execução do programa do utilizador no ponto de interrupção. @ Computer Organization and Architecture Link to comment Share on other sites More sharing options...
killerhcf Posted June 24, 2008 Author Report Share Posted June 24, 2008 http://www.numaboa.com.br/informatica/assembly/cap3_3.php como se mostra aqui na parte do Codificando Instruções do x86 na figura que mostram que é a passagem da linguaguem assembly para a maquina; no caso em que a instrucao tenha mmm=111, a pergunta que meto é se a constante esté localizada no byte ou bytes seguintes? é se se vir a nivel de bits fica qualquer coisa assim xxxxx111 acho que se mete o numero da constante ha frente por exemplo se vosse meter a constante 2 no ax ficava: 1100011110 ou seja aqui a constante esta na parte dos bytes de tras, mas se meter isto para linguagem assembly ficava só: mov ax,2 aqui aparece aconstante ha frente ja seria assim nos byte ou bytes seguintes, bem nao sei perceberam a duvidas ou se calhar até é uma pergunta estupida mas num teste fiquei sem saber qual era a resposta certa. Link to comment Share on other sites More sharing options...
Baderous Posted June 24, 2008 Report Share Posted June 24, 2008 O mmm representa um endereço de memória (no caso de um jump) ou então representa um valor imediato que vais somar ao valor de um registo para acederes a uma posição de memória. Se tiveres uma instrução: mov 7, ax O endereço onde a constante está localizada é dado por IP+2, pois: -> IP tem o código da operação e da função -> IP+1 tem os códigos dos registos -> IP+2 tem o endereço da constante Link to comment Share on other sites More sharing options...
Jeronimus Linuxius Posted July 28, 2008 Report Share Posted July 28, 2008 O enderenco da memoria onde esta localizado a proxima instrucao a ser executada no x86(8086) é apontada por? CS-code segment; IP-instruction pointer; pela soma de IP com o CS; ou nao é nenhum destes referidos atras; A memória endereçável por um 8086 é 1M+64K-16. Na prática, quando um x86 corre em modo de 16 bits, a linha A20 está cortada, o que te impede de aceder para lá de 1MB (se tentares, ele acede ao início da memória). Tens o CS e tens o IP. O CS diz-te o "segmento". Mas os segmentos "sobrepõem-se". O que aconselho é que esqueças a palavra "segmento" e penses "eu multiplico o CS por 16 (i.e. shift left 4), e somo o IP, e fico com o endereço". Assim, por exemplo, os endereços seguintes referem-se exactamente à mesmo "posição" de memória: - CS=0x0000; IP=0x7C00 - CS=0x07C0; IP=0x0000 - CS=0x0700; IP=0x0C00 - CS=0x00C0; IP=0x7000 Os segmentos sobreporem-se significa que parte do segmento CS=0x7C00 faz parte também do segmento 0x7C08, como consequência da aritmética de segmentos: - segmento CS=0x7C00: [0x7C000 - 0x8BFFF] (64 KB) - segmento CS=0x7C08: [0x7C080 - 0x8C07F] (64 KB, mas começa apenas 128 bytes mais à frente) JJ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now