2010-06-06 13 views
0

J'ai petite question sur pdp-11 (simulateur), j'ai cette commande (il commence à partir de l'adresse 1000) ajouter 2500, # 2500modes d'adressage dans PDP-11 Assembleur

et cette liste initiale:

register/address - initial value 
pc     1000 
sp     600 
2500    3000 

et je veux savoir comment ce petit bout fonctionne exactement, dans mon livret, je trouve que: tout d'abord il lit inforamtion à l'adresse 1000, à l'intérieur de cette adresse, nous avons la valeur 066727, après avoir lu le numéro de la adresse 1002, ET LA VALEUR DOIT ÊTRE 2500 (en raison de l'ajout 2500, # 250 0), mais dans ma brochure j'ai 1474 sans aucune explication pourquoi, je sais que j'ai ici mode d'adressage relatif, mais pourquoi 1474 à l'intérieur de l'adresse 1002 et non 2500, merci d'avance pour toute aide

Répondre

0
ADD 2500,#2500 

comme compile

0:  066727 ; ADD 
    2:  002474 ; 2500 - 6 (next instruction offset) 
    4:  002500 ; #2500 (literal value) 
    6:  ... ; next instruction 
    ... 
2500:  003000 
0

Je ne sais pas rappeler tous les modes d'adressage, mais regardez l'adresse 1474 et voir si elle contient 2500.

2

Si vous avez:

add  2500,#2500  ;add content of location 2500 to immediate value. 

Le premier mot assemblé sera l'instruction, le second sera l'adresse pour le premier opérande (le 2500), et le troisième sera la valeur immédiate 2500. Le mode d'adressage relatif PC pour le premier opérande ajoutera la valeur du PC à la valeur donnée pour obtenir l'adresse de l'opérande. Ce sera la différence entre 2500 et le PC à ce moment-là (1474, après l'incrément pour lire le décalage).

1004 + 1474 = 2500, the address of the data. 

Normalement, on ferait un:

add  #2500,2500  ;add 2500 to the word at location 2500. 

Comme le premier exemple stocké le résultat dans le flux d'instructions.