killerhcf Posted June 19, 2008 at 11:25 AM Report Share #192119 Posted June 19, 2008 at 11:25 AM 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 at 12:26 PM Report Share #192135 Posted June 19, 2008 at 12:26 PM 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 at 12:29 PM Report Share #192136 Posted June 19, 2008 at 12:29 PM 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 at 12:31 PM Report Share #192137 Posted June 19, 2008 at 12:31 PM 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 at 11:30 AM Author Report Share #192372 Posted June 20, 2008 at 11:30 AM 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 at 11:48 AM Author Report Share #192373 Posted June 20, 2008 at 11:48 AM 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 at 12:13 PM Author Report Share #192375 Posted June 20, 2008 at 12:13 PM 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 at 12:49 PM Report Share #192384 Posted June 20, 2008 at 12:49 PM 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 at 11:32 AM Author Report Share #193195 Posted June 24, 2008 at 11:32 AM 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 at 12:06 PM Report Share #193207 Posted June 24, 2008 at 12:06 PM 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 at 03:31 AM Report Share #201568 Posted July 28, 2008 at 03:31 AM 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