РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1563 | Дата выхода: | 22.08.2015, 15:09 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 13 / 5 | Вопросов / ответов: | 3 / 7 | Консультация # 23827: Здравствуйте! Подскажите как выделить общий кусок памяти, для обмена данными между двумя моими прогами, (под дос). Главная программа на basic, вторая генерится первой на asme. Поэтому нужно както еще сообщить главной программе этот адрес (лучше будет если она сама и выделит этот кусок памяти). Прим: через временный файл не хочу работать... Консультация # 121851: Здраствуйте, у меня такой вопрос: как правильно считывать с дискеты данные. Например считать первые 100кб и разместить их в памяти с опредиленного адреса. По возможности напишите с подробными коментариями. Заранее благодарен!... Консультация # 17424: Здравствуйте, уважаемые эксперты. Я хочу, чтобы моя программа оставалась резидентной. Использую прерывание INT 27H Перед тестированием программы запускаю Volkov Kommander Volkov Kommander программу не видит (Alt+F5) Помогите! Если можно, превидите пример простой резидентной программы ( использую TASM )... Консультация # 23827: Здравствуйте! Подскажите как выделить общий кусок памяти, для обмена данными между двумя моими прогами, (под дос). Главная программа на basic, вторая генерится первой на asme. Поэтому нужно както еще сообщить главной программе этот адрес (лучше будет если она сама и выделит этот кусок памяти). Прим: через временный файл не хочу работать. Также могу включить асмовый код в главную. Дата отправки: 21.07.2005, 17:10 Вопрос задал: Артем Талипов Всего ответов: 3 Страница онлайн-консультации » Консультирует Voituk Alexander: Здравствуйте, Артем Талипов! Есть такой вариант (я им пользуюсь) В главной проге выделяешь память для совместной работы и вешаешься на какое нибудь прерывание, которое не используется (например 60h). В обработчике возвращаешь адрес этой памяти в каком нибудь регистре. Вторая программа вызывает это прерывание и получает адрес, а потом уже работает с ним. Или можно еще писать в область данных БИОСа по адресу 0000:4F0h находится 16 байт памяти для связи между приложениями. Выделяешь в главной проге память и пишешь в эту область адрес, а второй прогой считываешь его и работаешь. Консультирует DSota: Здравствуйте, Артем Талипов! Можно загрузить асмовую программу, как оверлей - и тогда вся ее память будет доступна из программы на бейсике. Т.е. Во второй программе делаешь какую либо переменную, как дальнюю ссылку. При работе бейсиковская программа, загружает асмовскую как оверлей, выделяет память, изменяет эту ссылку в асмовской программе и запускает ету программу. И еще можнол в самой асмовской программе создать большой неинициализированный сегмент данных, тогда при загрузке ДОС сам выделит память под этот сегмент и нужно будет просто считать его адрес и обмениваться данными через него... Консультирует Евгений Иванов: Здравствуйте, Артем Талипов! используй общее прерывание и обслуживание через функции. Консультация # 121851: Здраствуйте, у меня такой вопрос: как правильно считывать с дискеты данные. Например считать первые 100кб и разместить их в памяти с опредиленного адреса. По возможности напишите с подробными коментариями. Заранее благодарен! Дата отправки: 05.02.2008, 21:25 Вопрос задал: Razboynik Всего ответов: 1 Страница онлайн-консультации » Консультирует Зенченко Константин Николаевич (Модератор): Здравствуйте, Razboynik! Информацию с дискеты можно считывать с помощью функции BIOS 13h | 02h. В приложении пример который считывает 4-е сектора - 2кб в видео буфер. Работа с дискетами отличается от работы с жесткими дисками, из-за того, что рабочая поверхность открыта(не герметична), нет смысла постоянно держать мотор диковода включенным (с небольшой задержкой он отключается сам), т.к. при попадании пыли можно поцарапать её и как следствие потерять информацию. По этому при чтении или записи информации нужно постоянно вызывать функцию BIOS 13h | 00h, которая приводит в исходное состояние дисковод и только после этого проверить ошибку выполнения функции, к примеру если флаг CF=1 и АН=6 это значит, что нет дискеты в дисководе. Ещё добавлю стандартный формат дискеты 3.5 дюйма: 720кб= 80 дорожек(цилиндров), 2 головки(стороны), 9 секторов на дорожке; 1,44мб= 80,2,18 соответственно. В одном секторе 512 байт. Удачи! Приложение:
Консультация # 17424: Здравствуйте, уважаемые эксперты. Я хочу, чтобы моя программа оставалась резидентной. Использую прерывание INT 27H Перед тестированием программы запускаю Volkov Kommander Volkov Kommander программу не видит (Alt+F5) Помогите! Если можно, превидите пример простой резидентной программы ( использую TASM ) Дата отправки: 24.02.2005, 13:00 Вопрос задал: Дробнов Сергей Всего ответов: 3 Страница онлайн-консультации » Консультирует Котиев Зураб: Здравствуйте, Дробнов Сергей! Ты исходник то скинь, я покопаюсь.Мож шо придумаю, если не правильно. А вот тебе исходник с рассылки Калашникова. Приложение:
Консультирует psevdo: Здравствуйте, Дробнов Сергей! Хотелось бы увидеть исходник. А вот простейший резидетн из рассылки Калашникова Приложение:
Консультирует Евгений Иванов: Здравствуйте, Дробнов Сергей! ;Программа очистки экрана по нажатию F11.Иванов Евгений <<SUPER>> @ 14.8.1998 386p jr equ jmp short ofs equ offset wptr equ word ptr bptr equ byte ptr Model tiny Assume CS:F11,DS:F11 F11 segment \'code\' use16 Org 256 start: db 19 dup(144) jr m101a dat equ $ data1 db 1eh,0,26h,0,63h,2eh,6ch,26h,73h,1fh,0dh,0 int9_entry: cmp bptr [cs:(data1-dat+11)],0 jnz m15i9 push ax in al,96 cmp al,57h jz m10i9 pop ax m15i9: db 0EAh,0,0,0,0 m10i9: push ds si di es cx cs pop ds mov bptr [ds:(data1-dat+11)],1ch push 40h pop es mov cx,12 mov si,ofs data1-dat mov di,1ah cld rep movsb in al,97 or al,128 out 97,al and al,127 out 97,al mov al,32 out 32,al mov bptr [ds:(data1-dat+11)],0 pop cx es di si ds ax iret len_resid equ $-data1 m101a: mov bx,[ds:2ch] sub bx,1000h mov ds,bx xor si,si mov cx,65500 cld m52a: lodsb cmp al,\'M\' jz m102a m72a: loop m52a m12a: push cs pop ds jmp dos m142a: pop si cx jmp m72a m102a: mov bx,88 push cx si m162a: mov cx,bx m172a: lodsb cmp al,\'=\' jz m202a loop m172a jmp m142a m212a: pop bx ds push dx jmp m162a m202a: pushf push si std sub si,2 mov di,ofs d1+5 mov bx,cx mov cx,6 repz cmpsb lahf pop si popf sahf jnz m162a pop dx push ds bx mov bx,dx mov bx,wptr [bx] mov ds,bx mov bx,wptr [ds:2ch] dec bx mov ds,bx mov ax,wptr [ds:1] mov cx,wptr [ds:3] sub ax,cx dec ax dec ax cmp ax,bx jnz m212a cmp bptr [ds:0],\'M\' jnz m212a cmp cx,(len_resid/16)+1 jc m212a pop bx ds cx add dx,17 mov cl,4 shr dx,cl mov cx,ds add cx,dx push cs pop ds mov dx,ofs dhelp mov ah,9 int 33 mov ax,3509h int 33 mov wptr [m15i9+1],bx mov wptr [m15i9+3],es mov es,cx mov si,ofs data1 mov di,0 mov cx,len_resid push es rep movsb mov ax,2509h mov dx,ofs int9_entry-dat pop ds int 33 jmp m12a dos: mov ah,4ch int 33 d1 db \'PROMPT\' dhelp db 10,13,\'Для очистки экрана нажмите F11 \',10,13,36 db \'@21\' F11 Ends End start
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий