В большинстве случаев намного проще, если входные данные воспринимаются как строка, а затем преобразуются в целое число.int 21h/ah=0ah
может прочитать буферизованный ввод в строку, указанную в DS:DX
.
Получив эту строку, вы можете взять эту строку и преобразовать ее в целое число.Это звучит как домашнее задание, поэтому вместо того, чтобы дать вам код, здесь приведен алгоритм высокого уровня для преобразования строки символов ASCII, содержащей число в base-10, в фактическое целое число (псевдокод):
accum = 0
i = 0
while(string[i] != '\r')
accum *= 10
accum += (string[i] - '0')
i++
Надежный код проверяет переполнение и недопустимые символы.Здесь вам повезло, поскольку в ASCII символы, представляющие числа ('0' ... '9'), сохраняются последовательно, а x86 имеет регистр FLAGS
, который вы можете проверить на переполнение.