Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ASM - с чего начать? 
:(
    Опции темы
Гость_Andrew
Дата 2.7.2004, 11:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











КОД

#include<iostream.h>
#include<dos.h>
#include<conio.h>
void main()
{ int d=0,a=0,c=0;
unsigned int msec=1000;
outportb(0x378,0);
do
{
do
{

asm {
mov ax,msec
mov dx,1000
mul dx;// dx:ax microseconds
mov cx,dx
mov ah,0x86
int 0x15;// wait cx:dx microseconds
}
a=a^1;
outportb(0x378,a);
}
while(!kbhit());
c = getch();
if (c == 72) msec=msec+1;
if ((c == 80)&(msec>1)) msec=msec-1;
}
while(c!=27);
outportb(0x378,0);
}

Вот. "Лампочка" что к LPT подключена, мигает пока "msec" больше 65, а как тока меньше сделаешь, так сразу просто гореть начинает
  Вверх
Chingachguk
Дата 2.7.2004, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 11
Всего: 18



Может, так и должно быть ? Трудно увидеть частоту моргания > 1000/65 ?

Да и у лампочки должна быть инерция. Вообще-то этот сервис подглючивает, то ли из-за win, то-ли на новых компах.

Попробуй команду rdtsc. Она выдает 64-ти четырехбитный счетчик тактов процессора в регистрах edx:eax. Когда проц исполняет команды, он тратит на них такты (частота CPU). Но если ты хочешь универсального кода (на любых компах), то тебе придется калибровать эту процедуру. Допустим, ты измеряешь число тактов за секунду и тогда 0,1 сек - это 1/10 от этого цикла:

Код

void main( void )
{
 unsigned long CStart_l, CStart_h, CStop_l, CStop_h;
 long t;

 // Get start system clock
 asm {
 db 0x0F, 0x31 // RDTSC
 lea  si,CStart_l
 db  0x66, 0x36, 0x89, 0x04 // mov  ss:[si],eax
 lea  si,CStart_h
 db  0x66, 0x36, 0x89, 0x14 // mov  ss:[si],edx
 }

//  t=time();

 // Get stop system clock
 asm {
 db 0x0F, 0x31 // RDTSC
 lea  si,CStop_l
 db  0x66, 0x36, 0x89, 0x04 // mov  ss:[si],eax
 lea  si,CStop_h
 db  0x66, 0x36, 0x89, 0x14 // mov  ss:[si],edx
 }

 printf("Start=%ld:%ld Stop=%ld:%ld\n",CStart_h,CStart_l,CStop_h,CStop_l);


Это сообщение отредактировал(а) Chingachguk - 2.7.2004, 13:05


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
oleg1973
Дата 2.7.2004, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



я так весь ваш трейд о милисекундах не читалsmile.gif
ну так у нас есть же таймер который вырабатвает int 8 вроде
ну дык его надо перепрограмировать на нужый отрезок и все smile.gif


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Akina
Дата 2.7.2004, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Код
SET_TIMER   MACRO   COUNT
                       PUSH    AX
                       MOV     AL,00110110B
                       OUT     43H,AL
       IFIDN   <COUNT>,<>
                       XOR     AL,AL
                       OUT     40H,AL
                       XOR     AL,AL
                       OUT     40H,AL
       ELSE
               IFDIF   <COUNT>,<AX>
                       MOV     AX,COUNT
               ENDIF
                       OUT     40H,AL
                       MOV     AL,AH
                       OUT     40H,AL
       ENDIF
                       POP     AX
               ENDM



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Chingachguk
Дата 2.7.2004, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 11
Всего: 18



Цитата
ну дык его надо перепрограмировать на нужый отрезок и все


Да грил я про это... Видимо, в данном случае не требуется что-то большее, чем Super_Delay(unsigned micsec).

Вы бы уж тогда и хэндлер новый привели ;)

Akina

Интересно, что скажет винда на попытку переставить частоту выше, чем ее собственная ? ;)



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Ivan Ryzhakov
Дата 4.7.2004, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.7.2004

Репутация: нет
Всего: нет



Посмотрел ваши уроки. Очень интересно, а об особенностях порграммирования ассемблером в юникс-системах не могли бы что-нибудь написать?
PM MAIL   Вверх
antonmasteR
Дата 4.7.2004, 19:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а где можно найти описание по всем функциям под дос ???
  Вверх
Guest
Дата 4.7.2004, 19:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











и где можна найти описание по буферам. т. есть где буфер монитора, клавиатуры...
  Вверх
Chingachguk
Дата 5.7.2004, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 11
Всего: 18



Ivan Ryzhakov

К сожалению, я крайне мало кодировал под *nix, да и то на C. Так что считать себя достойным писать про эту платформу, разумеется, не могу.

Рекомендую следуюущие источники:

- статья на wasm.ru должна быть специально про *nix.
- Зубков С.В. , "Программирование на языке ассемблера".

В целом из той литературы, которую я читал по этому вопросу, авторы сходятся на мнении, что под nix писать лучше на си, только оптимизацию отдельных относительно платформеннонезависимых подпрограмм вроде video-вывода (Зубков) имеет смысл писать на асм. С другой стороны (я опять тут не практик) кто-то как-то пишет эксплойты под nix, а это означает достаточно глубокое знание этой платформы. Но вот про эксплойты под nix я литературы не видел, даже у того же Касперски.

antonmasteR

Ральф Браун, Interrupt List, прерывания int 21h и вспомогательные типа int 23h, 24h, 25h ... etc. Некоторые пишут про TechHelp, но я не юзал.

Guest

Это очень общий вопрос. Что именно тебя интересует ? Простые примеры работы с Video или Keyboard ты легко найдешь в книгах по ассемблеру. У того же Зубкова есть примеры с текстовым буфером VGA (B8000h), графикой (обычно рассматривают режим 320x200, 256 цветов - про это пишет Зубков). Разумеется, там же можно прочесть про клавиатуру. Источник доступен в электронном виде. Ссылку я уже давал в этом разделе или яндекс.





--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
oleg1973
Дата 5.7.2004, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



в целом под *никсы даже легче чем под виндос писать smile.gif
очень дос напоминаетsmile.gif



--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Jin X
Дата 6.7.2004, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 5.3.2004

Репутация: нет
Всего: 1



Народ!!! Вы бы хоть ссылки, которые я привёл почитали exclamation.gif
Ничего перепрограммировать не надо, иначе будут тормоза и прочие проблемы. Кому это надо? Значение счётчика (> 1 МГц) можно читать, ничего не перепрограммируя.
--------------------
Бойся своей мечты, ибо она осуществима!
PM MAIL   Вверх
antonmasteR
Дата 27.7.2004, 22:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Chingachguk @ 5.7.2004, 00:11)
Источник доступен в электронном виде. Ссылку я уже давал в этом разделе или яндекс.

не могу найти bored.gif
может кинеш линк или на мыло
[email protected]
  Вверх
kusa
Дата 4.8.2004, 11:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А что такое byte ptr <registr> кто-нибудь может объяснить?

  Вверх
Akina
Дата 4.8.2004, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата
что такое byte ptr <registr>

это указатель на байт, адрес коего в указанном регистре.

Т.е. в операции будет задействована ячейка оперативной памяти размером в байт, смещение адреса которой берется из указанного регистра, а сегмент - из сегментного регистра по умолчанию для данного регистра, если таковой не переопределен явно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Jin X
Дата 4.8.2004, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 5.3.2004

Репутация: нет
Всего: 1



Akina, не правда.
Код
mov byte ptr bx,1
аналогично
Код
mov bx,1

А вот:
Код
mov byte ptr [bx],1
это запись в память по адресу bx.
--------------------
Бойся своей мечты, ибо она осуществима!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0880 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.