Вопрос № 156933: Есть такой код: Вопросы: Зачем увеличивается и уменьшается регистр di? Как логическая команда "or ax,ax" меняет флаг SF?...
Вопрос № 156946: Начал изучать ассемблер по книге "Ассеблер-это просто..." но не получается сассемблировать.Пишу как в книге >ml.exe prog.asm /AT cmd пишет,что не является вн. и внешн. командой.Задаю полный путь c:masm611inml.exe prog.asm /AT пише...Вопрос
№ 157005: Здравствуйте эксперты, у меня следующий вопрос. Как задать динамически меняющиеся данные, например я пишу db 25 dup (0d) тем самым резервирую память под 25 байт, а как быть если заранее неизвестно сколько надо резервировать. Колличество байт будет...
Вопрос № 156.933
Есть такой код:
Вопросы: Зачем увеличивается и уменьшается регистр di? Как логическая команда "or ax,ax" меняет флаг SF?
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Кусинов Максим Борисович!
Когда-то писал эту программу, теперь об этом участке кода:
Код:
;считаем все числа inc di ;проверяем знак числа or ax,ax ;если положительное переходим jns noNegative ;отрицательные числа уменьшаем счетчик dec di
регистр
di - счетчик положительных чисел массива. При каждом вызове подпрограммы OutNumber будет увеличиватся содержимое регистра вне зависимости от того положительное или нет число в регистре АХ. Если число в АХ отрицательное (старший бит регистра содержит 1), то после команды OR AX,AX соответсвенно флаг SF будет установлен в 1. Перехода не будет и выполнится следующая команда - DEC DI, а это DI=DI+1-1=DI. Дл я положительных чисел в АХ , вы
полнится только команда INC DI, т.е. DI=DI+1. Отсюда считаются только положительные числа.
Удачи!
--------- Итерация от человека, рекурсия — от Бога (Питер Дойч)
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор) Украина, Киев Тел.: +380979536619 Адрес: Украина г.Киев ---- Ответ отправлен: 08.01.2009, 13:24
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 240571 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 156.946
Начал изучать ассемблер по книге "Ассеблер-это просто..." но не получается сассемблировать.Пишу как в книге >ml.exe prog.asm /AT cmd пишет,что не является вн. и внешн. командой.Задаю полный путь c:masm611inml.exe prog.asm /AT пишет ошибка:A1000:cannot open file: prog.asm. Скажите как делать программы с нуля,для новичков это проблема т.к в инете те же самые фразы,что и в книгах. Просто и доходчиво нигде нет. Если возможно пошагово.Заранее благодарен!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Харин Константин Иванович!
Посмотрите рисунок, как метод решения Вашей проблемы. В открывшеся окне командной строки DOS я перехожу на диск D:(т.к. компиляторы у меня находятся на этом диске) и меняю текущую папку командой CD. После этого запускаю компилятор.
Пишу как в книге >ml.exe prog.asm /AT - cmd пишет,что не является вн. и внешн. командой.Задаю полный путь c:masm611inml.exe prog.asm /AT пишет ошибка:A1000:cannot open file: prog.asm.
Теперь о Ваших ошибках: 1) cmd ищет в системных папках команду или программу с именем ml, а раз таковой нет отсюда
и ошибка. Решается записью в файл wincmd.ini строки типа этой: path=. . . , с указанием пути к компилятору, подробности смотрите набрав в CMD команду HELP PATH 2) Указав путь к компилятору и запустив его, Вы заставили его искать файл prog.asm в текущей папке, а это С:, соответственно его там нет. Т.е. Ваша команда должна была выглядить так: путь к программе ML путь к файлу prog.asm ключи.
Дополнительно, как методы компиляции: 1)использовать
ВАТ-файлы, в которых Вы запишите набираемый команды, как вариант посмотрите рисунок. На нем Вы увидете, содержимое ВАТ-файла для работы с командной строкой и вызова компилятора tasm: %1 - означает подставить второй параметр командной строки в саму команду. /l и /t - ключи компилятора. А также содержимое свойств ярлыка на рабочем столе, клика на нем достаточно, для того чтобы попасть в нужную раб
очую папку. Вы можете написать ВАТ-файл с уже прописанными именами файлов и путями. недостаток такого метода для каждой программы нужно будет переписывать или создавать новый файл. 2)использовать оболочку PWB.ЕХЕ, на рисунке видно как создавать и настраивать сам проэкт. 3)использовать утилиту маке.ехе, по ссылке, Вы найдете инструкцию как ею пользоватся.
Удачи!
--------- Итерация от человека, рекурсия — от Бога (Питер Дойч)
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор) Украина, Киев Тел.: +380979536619 Адрес: Украина г.Киев ---- Ответ отправлен: 08.01.2009, 12:53
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 240565 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 157.005
Здравствуйте эксперты, у меня следующий вопрос. Как задать динамически меняющиеся данные, например я пишу db 25 dup (0d) тем самым резервирую память под 25 байт, а как быть если заранее неизвестно сколько надо резервировать. Колличество байт будет меняться в процессе выполнения программы, как быть в таком случае. За ответ заранее благодарен.
Отвечает: Airyashov
Здравствуйте, Парапонов Виталий! если для DOS, для Windows будет подругому читаем тут http://www.codenet.ru/progr/dos/int_0026.php Функция DOS 48H: распределить память Функция DOS 49H: Освободить блок распределенной памяти Функция DOS 4aH: Сжать или расширить блок памяти
Ответ отправил: Airyashov (статус: Студент)
Ответ отправлен: 08.01.2009, 18:40
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 240592 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.