| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Заменить команды на альтернативы (без использовани |
| Автор: Oxidous 23.12.2015, 09:26 | ||
| Всем доброго времени суток, Задание такое (делается в emu8086): Пользователь вводит координаты левого верхнего (x1, y1) и правого нижнего (x2, y2) углов прямоугольника. Программа должна нарисовать прямоугольник на экране и вывести его периметр (P) и площадь (S). Примечание: Для ввода/вывода использовать прерывания (INT). Не использовать никакие команды "emu, macro" и т.п. Вот код:
А можно ли чем то заменить директиву "include emu8086.inc"? Просто препод хочет,чтоб не использовались директивы и всякие команды macro. Чем тогда можно заменить "call scan_num" и "call CLEAR_SCREEN"? Чтоб убрать из программы emu8086.inc? Заранее благодарю за ответ. |
| Автор: leniviy 24.12.2015, 11:14 |
| > можно ли чем то заменить директиву "include emu8086.inc"? находишь файл emu8086.inc и добавляешь его содержимое вместо директивы include. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Zamenit-komandy-na-alternativy-(bez-ispolzovani-id567a3ed8ae201549128b4568#findElement_E7045_567ba965ae20156e44150749_0 |
| Автор: ФедосеевПавел 24.12.2015, 21:45 |
| Если вы умеете читать, то 1. CLEAR_SCREEN - очистку экрана можно реализовать через int 10h AH=06h. 2. scan_num - обычный ввод числа - через int16h и умножение-сложение. http://forum.vingrad.ru/faq/topic-158522/kw-ввод-вывод-числа.html, http://forum.vingrad.ru/forum/act-ST/f-72/t-260026.html. Назначение остального (DEFINE_SCAN_NUM, DEFINE_CLEAR_SCREEN) я не понимаю. |
| Автор: Oxidous 28.12.2015, 08:58 | ||
| Доброго времени суток, Выкладываю код программы, быть может кому-то пригодится:
|
| Автор: Oxidous 28.12.2015, 12:44 | ||||||
| И ещё такой вопрос Есть второй вариант этого задания - Для ввода\ вывода использовать прерывание (INT). Не использовать никаких emu, macro и т.п. команд. 2 вариант: Пользователь вводит координаты верхнего левого (x1, y1) и правого нижнего (x2, y2)углов прямоугольника. Нужно начертить на экране прямоугольник и вывести на экран его площадь (S) и периметр (P). Периметр и площадь, вроде как, некорректно считаются для второго варианта, а потому нужно, чтоб из координат второй точки вычитались координаты первой точки. Допустим, пусть координаты первой точки (x1, y1) будут 10 и 10, а координаты второй точки (x2, y2) 100 и 100. Тогда вычитаем первую точку из второй (100-10 и 100-10), получаем 90 и 90, и уже по этим полученным значениям считаем периметр и площадь прямоугольника. Вот код вводимых координат первой точки:
Вот код вводимых координат второй точки:
Вот код периметра и площади прямоугольника:
Как я понимаю, первые координаты записываются в CX регистр. Как в мне в периметре и площади прямоугольника вычесть из значений второй координаты значения первой координаты? Я понимаю, что это делается командой SUB CX, BX, но при работе программы периметр и площаль остаются такими же, как при умножении значений второй координаты для площади(a*b)и 2*(a+b) - для периметра. Со всем разобрался. Тема больше не актуальна. Благодарю за помощь |