2011-01-03 3 views
2

Je suis en train d'entrer dans l'assembleur et je viens souvent à travers les numéros sous la forme suivante:représentation d'adresse mémoire Assembleur

org 7c00h 

; initialize the stack: 
mov  ax, 07c0h 
mov  ss, ax 
mov  sp, 03feh ; top of the stack. 

7c00h, 07c0h, 03feh - Quel est le nom de cette notation de numéro? Que signifient-ils? Pourquoi sont-ils utilisés sur des nombres décimaux "normaux"?

Répondre

1

Il est hexadécimal, le système numérique avec 16 chiffres 0-9 et A-F. Les adresses mémoire sont données en hexadécimal, parce qu'elles sont plus courtes, plus faciles à lire, et que les nombres qui représentent les emplacements de mémoire ne signifient rien de spécial pour les humains, donc pas de sens d'avoir de longs nombres. J'imagine que quelque part dans le passé, quelqu'un devait aussi taper certaines adresses à la main, cela aurait pu aussi bien commencer.

+0

Il vaut la peine d'ajouter que le 'h' à la fin de chaque numéro est juste une partie de la notation, et non une partie du nombre. 7c00h est "7c00" en hexadécimal. Vous verrez le même nombre exprimé par 0x7c00 dans d'autres endroits. – Sapph

1

À noter également, 0: 7C00 est l'adresse de chargement du secteur d'amorçage. A noter également: 07C0: 03FE est la même adresse que 0: 7FFE en raison de la manière dont fonctionne l'adressage segmenté.

Ce type s'est lui-même laissé une pile de 510 octets (il a fait l'erreur très typique de deux par deux lors de la configuration de la pile du secteur d'amorçage).

1

Ces chiffres sont en hexadecimal notation, à savoir dans la base 16, où A à F ont les valeurs de chiffres 10 à 15.

Un avantage est qu'il y a une conversion plus directe pour des nombres binaires. Avec un peu de pratique, il est facile de voir les bits du nombre 1 et 0.

Autre est que de nombreux nombres utilisés en interne, tels que les adresses de mémoire, sont des nombres ronds en hexadécimal, c'est-à-dire contenant un beaucoup de zéros.