Правила, когда добавлять -h / -H к шестнадцатеричным числам в сборке? - PullRequest
1 голос
/ 11 января 2012

РЕДАКТИРОВАТЬ: Я немного спросил, и, очевидно, моя ошибка была в следующем: мы обычно редактируем наш код сборки 8086 в специальной среде debug.exe в MS-DOS.Эта конкретная среда действительно по умолчанию имеет шестнадцатеричные числа, но другие ассемблеры для 8086 по умолчанию равны десятичному.


При написании языка ассемблера (например, для Intel 8086) мы можем представлять числа как 3F или 3FH, или как16 или 16H, потому что все числа по умолчанию имеют шестнадцатеричную запись.

В моем опыте нет никакой реальной разницы между обоими представлениями в том, что касается Ассемблера: он успешно работает с обоими, даже когда смешан.

У меня вопрос: есть ли строгие правила, когда или когда не следует добавлять -h / -H после числа?

Я вижу, что это может помочь предотвратить путаницу (для начинающих программистов на сборке), который может возникнуть при просмотре чисел, которые мы обычно считаем десятичными, как в моем примере 16 против 16H, где 16 на самом деле является шестнадцатеричным для десятичного 22 - я сам был укушен этой ошибкой несколько раз.Но действительно ли ясность является единственным критерием?

Ответы [ 3 ]

2 голосов
/ 11 января 2012

Да, существуют строгие правила, и они должны быть упомянуты в документации вашего ассемблера (обычно в разделе «Числовые литералы»). Если честно, я никогда не сталкивался с ассемблером, который по умолчанию использует hex; почти все из них по умолчанию десятичные. Синтаксис может быть по всей карте; наиболее распространенными обозначениями для hex являются [0] dddh и 0xddd, но иногда вы также можете иметь h'ddd, $ ddd или 16_ddd.

1 голос
/ 11 января 2012

Я не верю, что все ассемблеры предполагают, что все числовые константы в шестнадцатеричном формате, так что это хорошая идея не только для ясности, но и для переносимости.

0 голосов
/ 07 мая 2013

В MS DOS, использующей отладку в качестве компилятора для вашего кода сборки, он будет читать значения как HEX, даже если вы не ставите H после значения.

...