Я не понимаю, как Assembly работает с ASCII? - PullRequest
1 голос
/ 04 октября 2009

У меня есть программа, которая должна принимать значения и выводить их обратно. Но когда пользователь вводит что-то вроде 12 (C в HEX), программа выводит какую-то странную букву, которую я считаю представлением в ASCII. Есть ли способ, чтобы сохранить эти числа в виде сырых чисел? Я делаю ввод и вывод через внешнюю библиотеку, поэтому я не знаю, имеет ли это какое-либо отношение к этому.

1 Ответ

2 голосов
/ 04 октября 2009

Существует несколько способов сохранить число внутри компьютера. Основные из них:

  • Как собственное двоичное число. Число 123 будет сохранено в виде октетов: 0x7b, с добавлением нуля, если используется целое число больше одного байта. Нулевое заполнение может быть либо слева (машина с прямым порядком байтов), либо справа (машина с прямым порядком байтов).
  • как строка. 123 будет сохранено как 0x31 32 33, предполагая ASCII / Latin1 / UTF-8. Сначала может быть поле длины (сохраненное как собственное двоичное число) или нулевой байт (0x00), чтобы указать, где заканчивается строка.
  • BCD. 123 будет храниться как 0x01 23. Байты также могут храниться в порядке с прямым порядком байтов, как 0x23 01.

Вам нужно выяснить (надеюсь, в документации сказано), какой формат хочет ваша входная библиотека и какой формат предоставляет ваша выходная библиотека, и выполнить преобразование между ними в вашей программе. Общее название для этого преобразования - «двоично-десятичное преобразование»

...