Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10654
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 3992
∙ повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска: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 байт памяти для связи между приложениями. Выделяешь в главной проге память и пишешь в эту область адрес, а второй прогой считываешь его и работаешь.

Консультировал: Voituk Alexander
Дата отправки: 21.07.2005, 17:56
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует DSota:

Здравствуйте, Артем Талипов!

Можно загрузить асмовую программу, как оверлей - и тогда вся ее память будет доступна из программы на бейсике.
Т.е. Во второй программе делаешь какую либо переменную, как дальнюю ссылку.
При работе бейсиковская программа, загружает асмовскую как оверлей,
выделяет память, изменяет эту ссылку в асмовской программе и запускает ету программу.

И еще можнол в самой асмовской программе создать большой неинициализированный сегмент данных, тогда при загрузке ДОС сам выделит память под этот сегмент и нужно будет просто считать его адрес и обмениваться данными через него...

Консультировал: DSota
Дата отправки: 21.07.2005, 18:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Евгений Иванов:

Здравствуйте, Артем Талипов!
используй общее прерывание и обслуживание через функции.

Консультировал: Евгений Иванов
Дата отправки: 21.07.2005, 22:08
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 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 байт.

Удачи!

Приложение:

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 06.02.2008, 18:32
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 17424:

Здравствуйте, уважаемые эксперты.
Я хочу, чтобы моя программа оставалась резидентной.
Использую прерывание INT 27H
Перед тестированием программы запускаю Volkov Kommander
Volkov Kommander программу не видит (Alt+F5)
Помогите!
Если можно, превидите пример простой резидентной программы
( использую TASM )

Дата отправки: 24.02.2005, 13:00
Вопрос задал: Дробнов Сергей
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Котиев Зураб:

Здравствуйте, Дробнов Сергей!
Ты исходник то скинь, я покопаюсь.Мож шо придумаю, если не правильно.
А вот тебе исходник с рассылки Калашникова.

Приложение:

Консультировал: Котиев Зураб
Дата отправки: 24.02.2005, 15:21
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует psevdo:

Здравствуйте, Дробнов Сергей!
Хотелось бы увидеть исходник. А вот простейший резидетн из рассылки Калашникова

Приложение:

Консультировал: psevdo
Дата отправки: 24.02.2005, 22:38
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Евгений Иванов:

Здравствуйте, Дробнов Сергей!
;Программа очистки экрана по нажатию 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

Консультировал: Евгений Иванов
Дата отправки: 24.02.2005, 23:56
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


© 2001-2015, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А. | Гладенюк А.Г.
Версия системы: 2011.6.36 от 26.01.2012

В избранное