Artigo: 94751 - Última revisão: quarta-feira, 22 de Outubro de 2003 - Revisão: 2.0

CORRECÇÃO: ORG comportamento diferente com o valor de span 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 | Reduzir tudo

Sintomas

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

Causa

O deslocamento para a directiva ORG depende de valores de rótulo que ainda não são determinados no primeiro passo de assemblagem.

Resolução

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

Ponto Da Situação

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

Mais Informação

Este problema ocorre normalmente quando uma referência directa entre as duas etiquetas. O integrador adiciona bytes de preenchimento para a referência directa e elimina estes bytes durante uma fase de assemblagem subsequentes. Quando esta situação ocorre, o segundo rótulo tem um valor maior durante a fase de assemblagem primeiro do que em fases posteriores.

O código de exemplo seguinte demonstra este 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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 ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.