| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > как сохранить файл |
| Автор: делитает 7.9.2004, 09:48 |
| вот построил график в досе!!! взял данные из микроконтроллера через com порт , создал массив и построил в ассемблере график!!! удача,конечно большая!!!! а вот сохранить ни массив ни график не получается!!!----- ----- это чтобы потом посмотреть. может кто - нить подскажет как это сделать!??????/ лучше бы в реальном режиме -- я ведь начинающий пока. не могу разобраться с прерываниями дос. вот если бы еще простейший пример!!!! |
| Автор: Akina 7.9.2004, 11:56 | ||
|
| Автор: Guest 8.9.2004, 13:24 |
| спасибо конечно!!!!! а может хоть скажешь пару слов о проге то!!!!??/ |
| Автор: Guest 8.9.2004, 13:29 |
| я ваще то в masm611 пишу , а тут похоже TASM!,,,.. НУ ХОТЬ ПАРУ КОМЕНТАРИЕВ ТО СБРОСЬ!!! то что у тебя по int 21h я понял. ну все равно бы прокоментировал!!!!? |
| Автор: Akina 8.9.2004, 13:30 |
| Комментов не будет. Во-первых, ты не зарегистрирован, во-вторых, изволь почитать доки по прерываниям. |
| Автор: Guest 8.9.2004, 13:40 |
| я пока не сильно врубился !! мне надо сохранить набранную инфу --- она в db .......----- ---- то что я массивом называю----- ----- например в конце проги info db ...... куда я все пишу. и сохранить график в досе !!----- построенный по массиву. . поясни пожалуйста!!!! |
| Автор: Guest 8.9.2004, 13:50 |
| я может непонятно выражаюсь , но массив набираю в ячейки памяти , которые я обозвал под хххх db ..... по ним строю график функции времени-- все пока получается а мне сохранить надо и массив и график в разных файлах. |
| Автор: Chingachguk 8.9.2004, 18:45 |
| Напиши на паскале или си аналог того, что ты хочешь. Тогда кто-то из нас перебьет это на асме или что-то подскажет. |
| Автор: oleg1973 8.9.2004, 20:34 |
| да шкрин ему нада походу получить |
| Автор: Akina 9.9.2004, 07:56 |
| oleg1973 ему походу надо получить готовый код, ни фига не делая. |
| Автор: oleg1973 9.9.2004, 09:35 |
| Akina что ни есть гуд |
| Автор: Guest 12.9.2004, 11:58 |
| oleg1973 ему походу надо получить готовый код, ни фига не делая. !!!!!!!!!!!! ты не прав, ОЛЕГ!! хорошо рассуждать,когда ты мастер!!! я вот только учусь в реальном режиме программировать. ничего позорного я не спросил --- всего лишь как файло -- -- график в досе -сохранить!!!! ващето я только принцип спрашивал, а не готовую прогу. если тебе жалко поделиться такими крохами знаний -- не пиши !!! я у других спрошу! --- на то и существует форум в росии. |
| Автор: Guest 12.9.2004, 12:06 |
| хорошо вам ребята в москве рассуждать!! а у нас на севере инет полчаса в день и то с низкой скоростью и никакой информации нету больше. |
| Автор: Chingachguk 12.9.2004, 13:24 |
| Гвест-делитает, напиши код примерно - я тебе напишу ответ. Я же обещал. |
| Автор: oleg1973 12.9.2004, 14:43 |
| да написать не жалко просто я не пойму что именно сохранить нада шкриншот графика? или координаты ? или че? |
| Автор: Guest 13.9.2004, 08:01 |
| Спасибо! Задача вот в чем: Из микроконтроллера 51 серии по порту RS-232 принимаю байты информации. Режим полудуплексный. Использую прерывания BIOS для инициализации COM1 , его опроса— --- на предмет получения байта , а далее чтение порта. Результат – полученный байт в регистре AL. Далее создаю массив М известным способом— MOV CX,512 ; можно и больше, от графика зависит. MOV BX,offset M Met1: MOV byte ptr [bx][si],AL INC SI LOOP met1 ……………………………… M DB 512 DUP(0) Потом в графическом режиме DOS ( 11h) рисую оси координат. Потом строю график. Координата X –номер байта из массива M. Координата Y—значение байта из массива M. Программа элементарная, единственно, что неприятно, смещение точек по Y приходится изначально рассчитать. При разрешении 470*630 неплохой график. НЕ получается вот что : 1 – сохранить в отдельном файле набранный массив M, а их надо несколько набрать. 2-- сохранить построенный график тоже в отдельном файле. Их тоже надо несколько , чтобы потом распечатать. Распечатать я думаю догадаюсь как. Писать на асме в защищенном режиме пока не умею, только в реальном , используя MASM611. |
| Автор: Guest 13.9.2004, 08:11 |
| возможно неправильно номер графического режима DOS написал то ли 11h то ли 12h , но 470*630. |
| Автор: Guest 13.9.2004, 08:13 |
| но это наверно не так важно. |
| Автор: _Chingachguk_ 13.9.2004, 16:39 |
| Насчет скинуть массив. Пусть есть массив M: M db 480*640 dup(?) ... ; Допустим, он чем-то уже заполнен. ... ; Скидываем его в файл как есть: FILE_SIZE equ 180*340 mov ah,3Ch mov dx,offset filename xor cx,cx ; Attributes int 21h jc @@Error mov bx,ax ; handle file (ax) mov ah,40h mov cx,FILE_SIZE mov dx,offset mas ; ds:dx=seg:ofs of mas int 21h cmp ax,cx ; if error, cx <> ax jnz @@Error ; close file mov ah,3Eh int 21h @@Error: filename db 'file01.dat',0 mas db FILE_SIZE dup(1) |
| Автор: _Chingachguk_ 13.9.2004, 16:40 |
| Насчет картинок. Для доса можешь поставить себе ~graphics.com - драйвер печати экрана по PrintScreen. После нажатия клавиши он скинет тебе график на печать. |
| Автор: Guest 13.9.2004, 17:08 |
| СПАСИБО!!! ПОПРОБУЮ РАЗОБРАТЬСЯ. |
| Автор: Chingachguk 14.9.2004, 06:48 |
| Да, и вот еще что. Почему ты пишешь код получения и построения данных на асме ? Не потому ли, что ты не можешь написать этот код в паскале или си ? Так вот - это сделать гораздо легче, чем написать весь код на ассемблере. |
| Автор: Guest 14.9.2004, 08:00 |
| Chingachguk !!!!!!! пишу на асме --- потому , что хочу еще и с машиной разобраться!! наверно ты со мной согласишься , что АСМ --- САМЫЙ МОЩНЫЙ ЯЗЫК!! на паскале -- конечно проще --- но НЕ ИНТЕРЕСНО! можно и на фортране-- тоже не интересно. СИ--- хорошо , но только после асма! пока АСМ не освою , ничего учить не буду. мне так преподаватель информатики рекомендовал. я начинал учиться по КАЛАШНИКОВУ -- он конечно феномен , но его часто заносит --- пишет как будто для людей своего уровня. На его месте я бы вначале все способы адресации объяснил, а потом объяснял оболочку типа дяди нортона , но не наоборот. Вобще то , когда информации мало, колоть асм самостоятельно довольно тяжело, но интересно. |
| Автор: Guest 14.9.2004, 08:28 |
| Chingachguk !!!!!!! хочу еще с тобой посоветоваться. Как ты считаешь , можно ли в DOS реализовать такой режим , что бы при формировании массива (--- инфа идет из МК по rs-232) сразу было все видно на графике!????? Мне кажется , что нельзя. Наверно для этого должен работать параллельный процессор. То есть один процессор работает на набор , а второй на график. Вообще я слышал , что американцы разработку многопроцессорных систем типа ЕС-эвм продолжают. |
| Автор: Guest 14.9.2004, 08:38 |
| Chingachguk !!!!!!! я еще про ТРАНСПЬЮТЕРЫ читал. Как думаешь-- почему это направление не развивается? а на счет graphics.com ------ почему то нет -- везде ice-graphics так это для чтения текста. |
| Автор: _Chingachguk_ 14.9.2004, 15:07 | ||||
Ну если ты хочешь на асме только, то это здорово. Я сам так начинал.
Я не очень тебя понял, возможно, тебе помогут прерывания. Я в свое время рисовал графики получая данные с КАМАКА, так я использовал графический режим 640x350 и приращение гистограммы рисовал белым цветом (так быстрее). При работе с режимом 13h вообще все просто: там прямая запись байтов в память приводит к немедленной выдачи на монитор. Берешь байт данных, сохраняешь в буфере и сразу рисуешь на экране точку (или столбец).
Ничего не знаю про это. |
| Автор: LOXX 14.9.2004, 18:03 |
| Chingachguk !!!!!!! Братишка,помоги!!! Как из биоса вирус вывести,а? Грузится сразу после опроса флоппи...забивает оперативку говном,так что ,пока не забьёт,на экране все цвета радуги прям...или вобще гаснет...я дамп смотрю,но нифига не понимаю...я ж лох... удели внимание,а..? только на тебя вся надежда... |
| Автор: Guest 14.9.2004, 18:29 |
| После опроса флоппи ? А может он на винте у тебя ? Слишком мало вирусов умеют переписыать bios. |
| Автор: _Chingachguk_ 14.9.2004, 18:30 |
| Прошлое сообщение by me. |
| Автор: Guest 19.9.2004, 12:33 |
| _Chingachguk_ а знаешь, оказывается довольно просто формировать массив и строить график одновременно!!!!! Практически одни и те же команды. Даже при высоком разрешении в досе получается. ТОЛЬКО ВОТ ВОПРОС К ТЕБЕ : как можно оценить быстродействие, чтобы наверняка знать какую максимальную скорость передачи по COM порту можно устанавливать без потери данных !????? |
| Автор: Chingachguk 19.9.2004, 14:14 |
| Я не очень хорошо представляю себе твой стенд, но вот как мы раньше меряли максимальную загрузку: на вход АЦП (аналогово-цифровой преобразователь) вместо реальных данных давали сигнал с генератора с заданной частотой. На малых частотах процент регистрации был 100%, далее показатель запоминался и частота увеличивалась до того момента, пока программа не начинала "захлебываться". Вообще насколько мне позволяют судить мои скромные познания в com-портах, если приходит прерывание (а ты читаешь через прерывания ?) типа "буфер передачи содержит данные", то ты читаешь какой-то там регистр состояния буфера передачи до того времени, пока не выберешь все данные, те теоретически прерывание срабатывает "всегда" и все данные будут в буфере (если, конечно, он не переполниться). На обычном современном компе вполне можно ставить 115200, я думаю. На работе была моя программка типа терминал-терминал по com-портам, передающая файлы и т.п. Если что, я могу дать тебе ее исходняк. |
| Автор: Guest 23.9.2004, 12:59 |
| уважаемый Chingachguk !!!! я разобрался в твоей проге. мне показалось ,что создать и сохранить файл можно проще: ; создать файл mov AH,3Ch XOR CX,CX MOV DX,offset fname INT 21h ; создать c:\masm611\bin\myfile.dat JC err mov bx,ax ; AX - дескриптор ; записать в файл mov AH,40h MOV CX,8 ; число байт mov dx,offset m1 int 21h ; записать cmp ax,cx jnz err ; закрыть MOV AH,3Eh int 21h err: MOV AH,4Ch int 21h m1 DB 8 DUP(0) ;резервируем 8 яп fname db "c:\masm611\bin\myfile.dat",0 здесь , конечно нет необходимых тестов. относительно твоего последнего сообщения , не совсем ясно- -- о каких буферах идет речь. я пока с буферами просто не разбирался. А относительно стенда , это просто -- микроконтроллер 51 серии с ацп с которого по rs-232 сигналы идут в комп. На ацп подаем сигналы с датчика. Диапазон от 0 до 5 вольт. Может ты сталкивался с такой задачкой ::::: мы создаем файл , но таких файлов то много надо!!!! Есть идея -- присваивать им название минута-час -месяц.dat Допустим , мы умеем считывать эти параметры из компа. Но как их представить в виде названия файла!???!!!!!!!!!!!!!!!! И как при этом еще и в виде сервиса предварительно вывести на экран в виде сообщения? Все известные мне прерывания перебрал, ничего не получается. Слышал, что на других языках это можно, но на других не интересно. |
| Автор: Guest 23.9.2004, 13:09 |
| Chingachguk !!!! кстати, как ты считаешь: будет ли быстрей работать прога , если порты программировать на самом низком уровне без использования прерываний биос!??? я пока не умею, но мне кажется должно быть быстрее. Конечно, лучше всего набор байтов делать в микроконтроллере, но память у него всего 256 байт максимум, да и то часть ее идет на программу. А если нужно 16 бит, то вааще мало памяти. |
| Автор: Chingachguk 25.9.2004, 09:17 | ||
Получить текущие дату и время в дос и создать имя файла:
Диалоги можно организовать разными способами, в том числе и через функции дос (запрос на ввод строки или на ввод 1-го символа). Но у таких функций есть свои ограничения: это обработка специальных клавиш и проч. Наиболее оптимальный (но и более трудоемкий) путь: использовать int 16h для проверки нажатия клавиши или ее считывания, для рисования использовать прямой вывод в видеобуфер в текстовом режиме 03h (запись в память с адреса 0B800h). Можешь посмотреть мою библиотеку pas_lib, размещенную в каталоге программ Vingrad.ru - там я организую менюшечные диалоги именно таким образом и именно на ассемблере. Насчет быстрее или медленнее - сказать трудно, написать самому получение данных с ком-порта совсем не сложно, для этого нужно написать обработчик прерывания линии ком-порта. Я могу тебе дать его вариант на си/пасе/асме. Скорее всего на современных компах даже на скорости 115200 ты не заметишь разницы. Однако в ряде случаев int 14h может не дать необходимую гибкость. |
| Автор: Guest 25.9.2004, 13:50 |
| Chingachguk !!!! ОГРОМНОЕ СПАСИБО!! обязательно ознакомлюсь с твоей библиотекой--Vingrad.ru а относительно варианта обработчика прерываний--- ---- попробую написать самостоятельноя, помучаюсь, если не получится --тебя попрошу выслать, СПАСИБО! речь идет о реализации максимального быстродействия, которое я то не замечу, но искажение сигнала не должно быть. |
| Автор: Guest 25.9.2004, 14:03 |
| Chingachguk Статус: Freeware Обращений: 359 Автор: Chingachguk Сайт: перейти... Описание: Библиотека для разработки простых интерфейсов для *.pas. Функции на *.asm. Исходный текст. Поддержка мыши. Есть два примера. Доступные файлы: 10 Кб (Скорость загрузки: 28.8 < 1 мин; 33.6 < 0 мин; ADSL < 1 мин) НЕ СКАЧИВАЕТСЯ --- НЕДОСТУПНО! попробую в другой день |
| Автор: Guest 25.9.2004, 14:13 |
| Chingachguk если не трудно, сбрось на [email protected] |
| Автор: Chingachguk 29.9.2004, 20:51 |
| Сбросил на mail. |