Попробуйте написать это на C или другом языке (не используйте никакие библиотеки C для основной части кода, просто на простом языке).
Я предполагаю, что вы принимаете значения ASCII и выплевываете значения ASCII?
Посмотрите на диаграмму ASCII, ASCII для 0 - это 0x30, который также является десятичным 48 или двоичным 0b00110000 1 - это 0x31, 2 - 0x32 и т. Д. В двоичном виде:
0 0b00110000
1 0b00110001
2 0b00110010
3 0b00110011
4 0b00110100
5 0b00110101
6 0b00110110
7 0b00110111
8 0b00111000
9 0b00111001
Если вы хотите добавить числа 9 и 8, вы, вероятно, хотите, чтобы в ваших регистрах были 0x09 и 0x08, а не 0x39 и 0x38.0x09 + 0x08 = 0x11 0x39 + 0x38 = 0x71
0x11 0b00010001
0x71 0b01110001
Может быть трудно надежно извлечь правильные биты из результата, если вы не конвертируете из ascii, прежде чем что-либо делать.неплохо с добавлением, вы можете взломать свой путь через это, но попасть в умножение и т. д. это может быть менее красиво.Вы должны выяснить это самостоятельно.
Затем вам нужно перейти от двоичного результата обратно к ascii, я предполагаю, что вы хотите напечатать результат в ascii?
Как вы получаетеот 0x11, который является 17 десятичным к ascii 0x31, 0x37?Если кто-то спросит вас, сколько футов в 78 дюймов, каков ответ?вы начинаете с деления футов на 12, правильно, вы получаете 6 с остатком 6, что означает 6 футов 6 дюймов.Сколько часов, минут, секунд в 4000 секунд?4000/3600 = 1 остаток 400, 400/60 = 6 остаток 40, 1:06:40.И если бы я спросил, есть ли у меня число 123, как мне математически извлечь сотни, десятки и единицы (чтобы я мог добавить 0x30 к каждому и распечатать их как ASCII).
Итак, добавив 9 и8 вы, скорее всего, получите 0b00111001 и 0b00111000, а также знак плюс и знак равенства в качестве входных данных, вам нужно превратить 0x00111001 в 0x00001001 и 0x00111000 в 0x00001000 перед выполнением сложения, а затем превратить результат 0x00010001 в 0x00000001 (десятки) и 0x00000111 (единицы) изатем сделайте что-нибудь, чтобы изменить 0x00000001 на 0x00110001 (десятки) (ascii) и 0x00000111 на 0x00110111 (единицы) (ascii) перед печатью.