Lista 2.1 1) A)DS=AAH=10101|0|10 -> Offset=50H, mas não serve de nada nesse exercício. Do DS, tiramos o bit Ti=0, logo a tabela usada será a GDT B)DS=F7H=11110|1|11 ->LDT Offset=100H, mas não serve de nada nesse exercício. Do DS, tiramos o bit Ti=1, logo a tabela usada será a LDT 2) Como é o endereço 30 e a tabela é a LDT, um possível DS é: DS=0000000011110 | 1 | 00 Onde os primeiros 13 bits seriam o endereço 30 e o bit Ti=1 (Apenas o nível de privilegio poderia ser diferente) Offset= AFH Do desenho tiramos: 00011111=1FH 00011000=18H Base=1F180000H Endereço Físico=Base+Offset=1F1800AFH Não existe falha, pois Offset< Limite (Limite=00000000000011111111=FFH) e RPL<DPL 3) Offset=AFH Endereço Linear=Base+Offset=100055AAH Base=100055AAH-AFH Base=100054FBH A base deveria ser igual a que foi calculada. 4) Nesse caso, RPL>DPL e assim seria negado o acesso ao descritor de segmento. 5) Do enunciado, tiramos que : Para a instrução dada, Offset=EBP=ABH E que o valor de do endereço físico é C8H. Como esse sistema usa apenas segmentação, o endereço físico será igual ao linear, logo: Base+Offset=C8H Base+ABH=C8H Os valores de AX e DS foram dados no enunciado, mas não são necessários para a construção do Segmento. Os dados importantes para segmento são: Base=1DH Do enunciado tiramos que Limite=B0H Para o DPL, seria ideal criar com privilegio baixo possivel(11) para garantir que será lido independente do RPL. Lista 2.2 1) · Busca da 1ª instrução: CS=8=1| 0 |00 àEndereço 1 da GDT Offset<Lim? àOk Endereço Fisico = Base+Offset(EIP)=2000H+200H=2200H Atualiza EIP: EIP=EIP+5 EAX=500H · Busca da 2ª instrução: Endereço Fisico = Base+Offset(EIP)=2000H+205H=2205H Offset<Lim? àOk Atualiza EIP: EIP=EIP+5 EBX=100H · Busca da 3ª instrução: Endereço Fisico = Base+Offset(EIP)=2000H+20AH=220AH Offset<Lim? àOk Atualiza EIP: EIP=EIP+1 · Acesso a Memória para a instrução 3: DS=20=10|1|00 à Endereço 2 da LDT Offset<Lim? àOk Endereço Fisico = Base+Offset(EBX)=3100+100H=3200H · Busca da 4ª instrução: Endereço Fisico = Base+Offset(EIP)=2000H+20BH=220BH Offset<Lim? àOk Atualiza EIP: EIP=EIP+1 Atualiza EBX: EBX=EBX+EAX · Busca da 5ª instrução: Endereço Fisico = Base+Offset(EIP)=2000H+20CH=220CH Offset<Lim? àOk Atualiza EIP: EIP=EIP+1 · Acesso a Memória para a instrução 5: DS=20=10|1|00 à Endereço 2 da LDT Offset(EBX)<Lim? àNão à Falha!!! 2) · Busca da 1ª instrução: CS=8=1| 0 |00 àEndereço 1 da GDT Offset<Lim? àOk Endereço Linear = Base+Offset(EIP)=2000H+200H=2200H Atualiza EIP: EIP=EIP+5 EAX=500H · Busca da 2ª instrução: Endereço Linear = Base+Offset(EIP)=2000H+205H=2205H Offset<Lim? àOk Atualiza EIP: EIP=EIP+5 EBX=100H · Busca da 3ª instrução: Endereço Linear = Base+Offset(EIP)=2000H+20AH=220AH Offset<Lim? àOk Atualiza EIP: EIP=EIP+1 · Acesso a Memória para a instrução 3: DS=20=10|1|00 à Endereço 2 da LDT Offset<Lim? àOk Endereço Linear = Base+Offset(EBX)=3100+100H=3200H · Busca da 4ª instrução: Endereço Linear = Base+Offset(EIP)=2000H+20BH=220BH Offset<Lim? àOk Atualiza EIP: EIP=EIP+1 Atualiza EBX: EBX=EBX+EAX · Busca da 5ª instrução: Endereço Linear = Base+Offset(EIP)=2000H+20CH=220CH Offset<Lim? àOk Atualiza EIP: EIP=EIP+1 · Acesso a Memória para a instrução 5: DS=20=10|1|00 à Endereço 2 da LDT Offset(EBX)<Lim? àNão à Falha!!!