Здравствуйте эксперты! Хочу написать процедурку, аналог write в Пасквиле, пишу, компилирую, а она мне какой-то мусор выдает. Помогите, в чем тут дело? С уважением, ILYA D.
Доброе время суток, ILYA D.! Сам не знаю почему, но если создать две переменные и вызвать seg и ofs паскаля а не ассемблером, то всё ОК! Ответ отправлен: 12.06.2002, 20:18 Отправитель: Dark_Lord Отвечает Артём Шегеда
Добрый день, ILYA D.! Два замечания. 1. Поскольку параметры в функцию передаются через стек, то манёвр типа mov ax,seg str не катит. Компилятор не знает, чему в данный момент будет равен seg str. Нужно написать так: mov ax,ss mov ds,ax 2. В dx нужно грузить эффективный адрес не str, а str[1]. В строке Pascal первый байт содержит длину. To "expert" Dzik: befor You answer You shold check all variants and choose the best. Ответ отправлен: 12.06.2002, 12:17 Отправитель: Артём Шегеда Отвечает pin
Доброе время суток, ILYA D.! Во первых: push ax push dx push ds . . . pop ds pop dx pop ax Далее: Строка должна заканчиваться "$". Т.Е. procedure WriteB(str:string); begin WriteA(Str+"$"); end; Ответ отправлен: 12.06.2002, 15:17 Отправитель: pin Отвечает Dzik
Добрый день, ILYA D.! Возможно косяк в том, что ты пытаешься использовать переменную в параметрах. Попробуй скопировать твою строку в локальную переменную
Ответ отправлен: 12.06.2002, 08:10 Отправитель: Dzik Отвечает Blackeye
Доброе время суток, ILYA D.! Это все потому что, string это не набор ASCII симолов. А специальный формат строки! Если хочешь выводить, то вместо str:string используй str:array[0..254] of char или просто char на твое усмотрение. Ответ отправлен: 14.06.2002, 20:32 Отправитель: Blackeye Отвечает Ayl
Приветствую Вас, ILYA D.! По-моему, строки в процедуры передаются в любом случае в виде указателя (4 байта), поэтому адрес надо грузить так: lds dx, str Попробуй.
Ответ отправлен: 13.06.2002, 19:39 Отправитель: Ayl
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.