Вопрос № 29846: Здравствуйте уважаемы эксперты!
Такой вопрос: две программы (два процесса). Первый процесс, написанный на С++ вызывает второй, написанный на асме. При этом асм-процессу необходимо передать параметром строку. Если его передавать как параметр комма...Вопрос № 29864: Здраствуйте! Уважаемые эксперты,для "чайника"(59 лет) поясните подробно сам механизм перехода с текстового редактора DOS Navigator(F4) на ассемблирование файла. Набираю листинг 1.2 (/001/ prog01.asm) по книге " Accемблер?
Это просто&qu...Вопрос № 29868: Здравствуйте. Помогите. Никак не могу разобраться с задачей " Дан однобайтовый массив от 5555 до 555А. Найти в нём простые числа и заменить их порядковыми номерами " Не могу придумать алгоритм нахождения простых чисел. ( Простое число - это...Вопрос № 29877: Доброе время суток.
У меня к вам такой вопрос: мне нужно загрузить свой шрифт в досе, в графическом режиме, использую ф-ю 10h-1121h, как мне изменить ширину символа, по умолчанию она 8 пикселей?
Спасиб....
Вопрос № 29.846
Здравствуйте уважаемы эксперты!
Такой вопрос: две программы (два процесса). Первый процесс, написанный на С++ вызывает второй, написанный на асме. При этом асм-процессу необходимо передать параметром строку. Если его передавать как параметр коммандной строки, то как этот прамаетр получить в асме, т.е. при запуске процесса "asm.exe abcdef" как в асме получить "abcdef" или хотя бы всю коммандную строку целиком?
Отправлен: 20.11.2005, 00:33
Вопрос задал: koshi (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, koshi!
GetCommandLine
также можно использовать общие ресурсы
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 20.11.2005, 01:08 Оценка за ответ: 4 Комментарий оценки: Спасибо!
Отвечает: Sager
Здравствуйте, koshi!
Для этого воспользуйся функцией GetCommandline - вызывается без параметров и на выходе в eax лежит смещение командной строки, причем первый параметр - это имя запущенной проги. Вот пример для "asm.exe abcdef":
call GetCommandLine
mov edi,eax ;кидаем в edi смещение
mov al,20h ; что ищем? - 20h это пробел
mov ecx,-1 ;количество итераций
repne scasb ;сравниваем подряд все символы, пока не равно пробелу, если ;равно пробелу, то выходим из цикла
cmp byte ptr [edi],0 ; проверяем есть ли вообще параметр
je net_parametra ; нету - прыгаем на метку net_parametra
repe scasb ;это делаем на случай, если вместо одного пробела нажали два и ;более
dec edi
;Все теперь edi указывает на "abcdef"
Ответ отправил: Sager (статус: Студент)
Отправлен: 20.11.2005, 08:25 Оценка за ответ: 5 Комментарий оценки: Спасибо за полный и развернутый ответ!
Вопрос № 29.864
Здраствуйте! Уважаемые эксперты,для "чайника"(59 лет) поясните подробно сам механизм перехода с текстового редактора DOS Navigator(F4) на ассемблирование файла. Набираю листинг 1.2 (/001/ prog01.asm) по книге " Accемблер? Это просто" в редакторе, сохраняю файл,далее в командной строке Навигатора,либо командной строке MS-DOS согласно приложению 1 этой же книге набираю >ML.EXE PROG.ASM /AT. Выдает: Имя команды или файла указано неправилъно. Объясните мою ошибку. C уважением Бурматов.
Отправлен: 20.11.2005, 13:17
Вопрос задал: Burmat (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Sager
Здравствуйте, Burmat!
Попробуйте указать полный путь до компилятора и листинга 1.2
Например, если пакет masm находится в C:masm то следует писать так:
C:masminml.exe C:prog.asm /AT
Ответ отправил: Sager (статус: Студент)
Отправлен: 20.11.2005, 14:20
Вопрос № 29.868
Здравствуйте. Помогите. Никак не могу разобраться с задачей " Дан однобайтовый массив от 5555 до 555А. Найти в нём простые числа и заменить их порядковыми номерами " Не могу придумать алгоритм нахождения простых чисел. ( Простое число - это число, которое делится только на себя (без остатка)). Выполнить в debug'е. Можно использовать подпрограммы - call, ret и циклы ...
Отправлен: 20.11.2005, 14:04
Вопрос задал: S1lveR (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Bob Johnson
Здравствуйте, S1lveR!
Обычный алгоритм нахождения простых чисел такой. Определяется массив, который будет содержать простые числа, количество простых чисел устанавливается 0. Далее берется начальное число 2. Проверяется, не делится ли оно на какое либо ранее найденное простое число из массива, если да - то выбранное число не простое, если нет - то оно простое и добавляется в массив. Берется следующее число (3) и т.п.
В результате получится, что 2 добавится в массив, т.к. он пуст, 3 - тоже, потому что оно не делится на 2, 4 - нет, т.к. оно делится на 2. 5 - добавится, т.к. оно не делится ни на 2, ни на 3 и т.п.
Это не очень быстрый алгоритм, но для твоей задачи вполне подойдет.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 20.11.2005, 14:13 Оценка за ответ: 5
Отвечает: Юра Устинов
Здравствуйте, S1lveR!
Сохрани все простые числа, в пределах 255, в специальную таблицу, а элементы соего массива сравнивай с таблицой, если число простое то записывай в него cl.
--------- Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 6-ой класс)
Отправлен: 21.11.2005, 13:08
Вопрос № 29.877
Доброе время суток.
У меня к вам такой вопрос: мне нужно загрузить свой шрифт в досе, в графическом режиме, использую ф-ю 10h-1121h, как мне изменить ширину символа, по умолчанию она 8 пикселей?
Спасиб.
Отправлен: 20.11.2005, 16:44
Вопрос задал: PLut (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, PLut!
ширина шрифта не может быть более 8 точек.
для этого используй свою собственную подпрограмму для вывода строк.
там шрифты есть из-под Win :)
я их переделывал. преобразовывал.
и выводит быстро очень.
пользуйся!
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 20.11.2005, 17:01