Organização da Memória Todos os bytes da memória são numerados de Zero até a posição do último byte O processador 8088 trabalha com palavras de 16 bits, ou seja, o valor máximo que o processador pode indicar 65536 (216). PERGUNTA Como pode o processador fazer referência a uma posição de memória maior que 65535 ? Por exemplo 88.001 Organização da Memória RESPOSTA: 1 - O 8088 divide a memória em conjuntos de bytes chamados SEGMENTOS 2 – Cada SEGMENTO possui 65536 bytes (64K) 3 - O 8888 utiliza dois registradores para acessar a uma posição de memória - O primeira indica o segmento - O segundo indica o deslocamento (offset) dentro do segmento. 4 – Cada segmento inicia sempre em um byte com endereço múltiplo de 16 bytes 5 – Pode ocorrer uma sobreposição de segmentos Segmentação de Memória Um endereço de Memória é representado como SEGMENTO:DESLOCAMENTO Ex. 5:3 O endereço físico é calculado: Número do Segmento * 16 + deslocamento - 5 * 16 + 3 = 83, onde 83 é o endereço físico referenciado. Segmentação de Memória ENDEREÇO DE MEMÓRIA ONDE INICIA UM SEGMENTO É OBTIDO DA SEGUINTE FORMA: Número do Segmento * 16 Exemplo: 5 * 16 = 80 Segmentação de Memória O endereço físico 83 também pode ser obtido das seguintes formas: 0:83 - 0 * 16 + 83 = 83 2:51 - 2 * 16 + 51 = 83 4:19 - 4 * 16 + 19 = 83 Organização da Memória -d 0d62:0030 0D62:0030 06 00 02 00 00 00 24 00-62 6F 6D 20 64 69 61 20 ......$.bom dia 0D62:0040 62 72 61 73 69 6C 0A 0C-0D 24 72 20 61 20 63 6F brasil...$r a co 0D62:0050 6E 66 69 67 75 72 61 87-C6 6F 20 61 74 75 61 6C nfigura..o atual 0D62:0060 20 64 65 20 42 52 45 41-4B 2E 0D 0A 45 45 78 69 de BREAK...EExi 0D62:0070 62 65 20 6F 75 20 64 65-66 69 6E 65 20 6F 20 6E be ou define o n 0D62:0080 A3 6D 65 72 6F 20 64 61-20 70 A0 67 69 6E 61 20 .mero da p.gina 0D62:0090 64 65 20 63 A2 64 69 67-6F 20 61 74 69 76 61 2E de c.digo ativa. 0D62:00A0 0D 0A 0D 0A 43 48 43 50-20 5B 6E 6E 6E 5D 0D 0A ....CHCP [nnn].. -d 0d65:0000 0D65:0000 06 00 02 00 00 00 24 00-62 6F 6D 20 64 69 61 20 ......$.bom dia 0D65:0010 62 72 61 73 69 6C 0A 0C-0D 24 72 20 61 20 63 6F brasil...$r a co 0D65:0020 6E 66 69 67 75 72 61 87-C6 6F 20 61 74 75 61 6C nfigura..o atual 0D65:0030 20 64 65 20 42 52 45 41-4B 2E 0D 0A 45 45 78 69 de BREAK...EExi 0D65:0040 62 65 20 6F 75 20 64 65-66 69 6E 65 20 6F 20 6E be ou define o n 0D65:0050 A3 6D 65 72 6F 20 64 61-20 70 A0 67 69 6E 61 20 .mero da p.gina 0D65:0060 64 65 20 63 A2 64 69 67-6F 20 61 74 69 76 61 2E de c.digo ativa. 0D65:0070 0D 0A 0D 0A 43 48 43 50-20 5B 6E 6E 6E 5D 0D 0A ....CHCP [nnn].. Organização da memória Os registradores CS, DS, ES e SS são utilizados para identificar os segmentos Os registradores IP, SP, BP, SI e DI indicam o deslocamento (offset) dentro do segmento O deslocamento inicia sempre em ZERO e vai até 65535. Segmentação de Memória SEGMENTO INÍCIO FIM 0 1 2 3 4 0 16 32 48 64 65535 65551 65567 65583 65599 Segmentação de Memória PILHA - 100 BYTES CÓDIGO - 352.830 BYTES DADOS - 30.000 O ponto de carga do programa na memória depende do SO. Vetor de Interrupção Memória O próximo Slide refere-se ao exerc04.asm compilado Mapa de Memória 0D62:0000 B8650D MOV AX,0D65 0D62:0003 8ED8 MOV DS,AX 0D62:0005 A10000 MOV AX,[0000] 0D62:0008 A10200 MOV AX,[0002] 0D62:000B A30400 MOV [0004],AX 0D62:000E 8306040030 ADD WORD PTR [0004],+30 0D62:0013 BA0400 MOV DX,0004 0D62:0016 B409 MOV AH,09 0D62:0018 CD21 INT 21 0D62:001A E80500 CALL 0022 0D62:001D B8004C MOV AX,4C00 0D62:0020 CD21 0D62:0022 B406 0D62:0024 33C9 0D62:0026 BA4F18 0D62:0029 B000 0D62:002B B707 0D62:002D CD10 0D62:002F C3 INT 21 MOV AH,06 XOR CX,CX MOV DX,184F MOV AL,00 MOV BH,07 INT 10 RET