Вопрос № 42356: Здравствуйте, мне требуется исходник программы которая позволяет ввести два числа десятичных, сложить их и вывести сумму на экран в десятичном виде, приложение консолное на TASM. Прошу не показывать схожие программы ибо я не знаю особенности ассембле...Вопрос № 42378: Прошу прощения может быть это тупой вопрос, но я к сожалению совсем
новичок в ассемблере.
Нужно вычислить результат выражения a – b / (c + d * 2), используя
регистры AX, BX, CX и DX. Значения переменных могут быть любыми, но среди
...
Вопрос № 42.356
Здравствуйте, мне требуется исходник программы которая позволяет ввести два числа десятичных, сложить их и вывести сумму на экран в десятичном виде, приложение консолное на TASM. Прошу не показывать схожие программы ибо я не знаю особенности ассемблера в виндоуз. Благодарю
Отправлен: 07.05.2006, 13:29
Вопрос задал: Daniil (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: mix_mix
Здравствуйте, Daniil!
Создаете консоль FreeConsole+AllocConsole, функцией ReadConsole читаете числа, например, в формате "10 20", т.к. вы знаете особенности ассемблера, то Вам не составит труда разбить СТРОКУ на сост. части по пробелу, переконвертировать строку в число, затем сложить со вторым числом, перевести число в строку (хотя здесь можно использовать функцию wsprintf), вывести строку в консоль функцией WriteConsole.
З.Ы. Если Вам влом преобразовывать строки, то обратите внимание на функции atoi, _itoa и _splitpath из ntdll.dll
Ответ отправил: mix_mix (статус: 3-ий класс)
Ответ отправлен: 07.05.2006, 17:31
Отвечает: Пан Павел Константинович
Здравствуйте, Daniil!
1. Программа была специально не оптимезирована ибо она служит для ознакомительных целях.
2. Подход для решения задачи был выбран по принцепу "Что первым пришло в голову то и считать лучшим".
3. Программа не использует редких и узкоспец-ых инструкций.
4. Под Формулой (A+B) = C надо понимать что переменые A, B и C имеют тип Unsigned int.
Для справки:
Unsigned int (16 бит) = числовое множество [0..65535]
С, Уважением MnEm0n!C.
Приложение:
--------- Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 7-ой класс)
Ответ отправлен: 08.05.2006, 02:22
Вопрос № 42.378
Прошу прощения может быть это тупой вопрос, но я к сожалению совсем
новичок в ассемблере.
Нужно вычислить результат выражения a – b / (c + d * 2), используя
регистры AX, BX, CX и DX. Значения переменных могут быть любыми, но среди
них должны быть как положительные, так и отрицательные числа. Значения
переменных должны находится в тексте программы, при смене значений проводить повторную компиляцию.
Заранее всем огромное спасибо. Помогите кто может.
Отправлен: 07.05.2006, 17:00
Вопрос задал: Dimik (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: mix_mix
Здравствуйте, Dimik!
AX = a, BX = b и т.д. (хотя лучше будет поменять местами a и b, т.к. этим можно извавится от инструкции xchg)
Приложение:
Ответ отправил: mix_mix (статус: 3-ий класс)
Ответ отправлен: 07.05.2006, 17:22
Отвечает: Пан Павел Константинович
Здравствуйте, Dimik!
Извените что я использовал 8-ые регистры, опомнался поздно. НО! на основе этого примера можно сделать и с 16-ми регистрами, просто заменив <cl> на <cx> т.е. заменить 8-ые регистры на 16-ые. И ещё надо заменить инструкцию cbw на cwd.
Когда вы сделаете код с 16-ми регисрами вы поймёте, что с 8-ми регисрами код более элегантней.