ID do artigo: 94751 - Última revisão: quarta-feira, 22 de outubro de 2003 - Revisão: 2.0

CORRECÇÃO: ORG comportamento diferente com valor de intervalo dependente

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Nas versões do Microsoft Macro Assembler (MASM) 6.0, 6.0a e 6.0b, se o deslocamento para uma diretiva ORG depende a diferença entre dois rótulos (um valor dependente de intervalo), o código montado difere que produz por versões anteriores do MASM.

Causa

O deslocamento para a diretiva ORG depende de valores de rótulo que não são determinadas na primeira passagem de assembly.

Resolução

Modificar o código para remover dependente de intervalo de valores em uma diretiva ORG no código montado com MASM versões 6.0, 6.0a ou 6.0b.

Situação

Microsoft confirmou que este é um problema no MASM versão 6.0, 6.0a e 6.0b para MS-DOS e OS/2. Esse problema foi corrigido no MASM versão 6.1 para MS-DOS.

Mais Informações

Esse problema geralmente ocorre quando uma referência direta ocorre entre dois rótulos. O montador adiciona bytes de preenchimento para a referência de encaminhamento e elimina esses bytes durante uma passagem de assembly subseqüentes. Quando isso ocorre, o segundo rótulo tem um valor maior durante a primeira passagem de assembly que em passagens subseqüentes.

O exemplo de código abaixo demonstra esse comportamento.

Código de exemplo

; Assemble options needed: none

tst1 SEGMENT para public
ASSUME cs:tst1
start:
     jmp SHORT forward
forward:
     mov ax, 4C00h
     int 21h
tst1 ENDS

count = offset forward - offset start

tst2 SEGMENT para public
     DB 1
     ORG count  ; This assembles as ORG 10 in MASM versions 6.0, 6.0a, and
                ; 6.0b. It assembles as ORG 2 in MASM versions 5.1 and 6.1.
xxx  DB 1
tst2 ENDS

END start
				

A informação contida neste artigo aplica-se a:
  • Microsoft Macro Assembler 6.0 Standard Edition
  • Microsoft Macro Assembler 6.0a
  • Microsoft Macro Assembler 6.0b
Palavras-chave: 
kbmt kbfix KB94751 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 94751  (http://support.microsoft.com/kb/94751/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.