ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #191  
Старый 24.01.2008, 01:27
Аватар для AFoST
AFoST
Members of Antichat - Level 5
Регистрация: 28.05.2007
Сообщений: 729
Провел на форуме:
5571194

Репутация: 1934


Отправить сообщение для AFoST с помощью ICQ
По умолчанию

или
lea dx,message вместо mov dx,offset message
 
Ответить с цитированием

  #192  
Старый 24.01.2008, 01:54
Аватар для GlOFF
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


По умолчанию

Непонятно почему люди начинают с win16 )))
 
Ответить с цитированием

  #193  
Старый 24.01.2008, 01:57
Аватар для Delimiter
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

моделька досовская.... в принцыпе можно было не заморачиваться
а заменить mov на lea и грузить реальный адрес а не смещение.
 
Ответить с цитированием

  #194  
Старый 05.02.2008, 18:43
Аватар для TruPAC
TruPAC
Познающий
Регистрация: 20.12.2007
Сообщений: 36
Провел на форуме:
71113

Репутация: 20
По умолчанию

хочу написать прогу которая выводит текущий ип в плане освоения диалоговых окон.
есть примерно такого вида наработка вызова модального диалогового окна. она находиться в конце, чтобы не мусорить вопрос. вообщем проблема в том что я не могу заставить его работать - оно просто не отображается. те происходит вызов функции и возвращаемое значение равно -1, что не есть гуд.

рассуждения, пожалуй, писать не буду, а то уже наученный горьким опытом знаю что там будет бред.

вообщем они самые наработки.
жаль что приатачить нельзя, но думаю в ресурсах ошибки быть не должно, так что их не выписываю.

ну и теперь: как это заставить работать?

Код:
   
   .386
   .model flat,stdcall
   option casemap:none

   DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD

   include \masm32\include\windows.inc
   include \masm32\include\user32.inc
   include \masm32\include\kernel32.inc
   includelib \masm32\lib\user32.lib
   includelib \masm32\lib\kernel32.lib

   .data
   DlgName db "MyDialog",0
      AppName db "First",0
      

   .data?
   hInstance HINSTANCE ?
   
   .const
   MyDialog        equ 101
   IDC_IPADDRESS1  equ 1000
   IDM_EXIT        equ 32003


   .code

   start:

       invoke GetModuleHandle, NULL
       mov    hInstance,eax
       invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL
       invoke ExitProcess,eax

   DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
       .IF uMsg==WM_INITDIALOG
           invoke GetDlgItem, hWnd,IDC_IPADDRESS1
           invoke SetFocus,eax
       .ELSEIF uMsg==WM_CLOSE
           invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0
       .ENDIF
       mov eax,TRUE

       ret

   DlgProc endp

   end start
 
Ответить с цитированием

  #195  
Старый 05.02.2008, 19:21
Аватар для GlOFF
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


По умолчанию

TruPAC При вызове функции
Цитата:
invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL
DlgName - не должен быть DlgName db "MyDialog",0 Это индетификатор описания окна, который по идеи храниться в ресурсе, также как и IDC_IPADDRESS1...

По идеи у тебя уже обьявлен индетификатор окна
Цитата:
.const
MyDialog equ 101
IDC_IPADDRESS1 equ 1000
IDM_EXIT equ 32003
Русурсы ты не выложил, поэтому можно предпологать, что с ними все ок! Поэтому есть вариант попробывать так...
Цитата:
invoke DialogBoxParam, hInstance, MyDialog ,NULL, addr DlgProc, NULL
Окно должно создасться с условием если описание окна в ресурсах соответствует спецификациям
 
Ответить с цитированием

маленькие проблемки
  #196  
Старый 06.02.2008, 11:32
Аватар для Flame of Soul
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме:
1740746

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию маленькие проблемки

Приветики, у меня есть вопросик, но сначала обрисую ситуацию.

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

у меня с загрузчика на ядро управление передаеться :
Цитата:
jmp 0800h:0000h
да кстати ось работает в текстовом режиме 80х25

Цитата:
mov ah, 00h
mov al, 03h
int 10h
собственно вопрос вот в чем:
когда я ввожу команду, она идет на выполнение, вот пример:

Цитата:
chelp db "help", 0
chelp_tail:
......
help_msg db "тут приветствие", 0Dh,0Ah,0
......
......
lea si, command_buffer
mov cx, chelp_tail - offset chelp ; size of ['help',0] string.
lea di, chelp
repe cmpsb
je help_command
......
......
; +++++ 'help' command ++++++
help_command:

; scroll text area 11 lines up:
mov al, 11
call scroll_t_area

; set cursor position 11 lines
; above prompt line:
mov ax, 40h
mov es, ax
mov al, es:[84h]
sub al, 11
gotoxy 0, al

lea si, help_msg
call print_string

mov al, 1
call scroll_t_area

jmp processed
Как сделать так чтобы при вводе команды, допустим "tasm" у меня запускался внешний файл "exe" or "com" любой. То есть независимо от адресного пространства?

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

  #197  
Старый 06.02.2008, 17:19
Аватар для ProTeuS
ProTeuS
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме:
4226592

Репутация: 2175


Отправить сообщение для ProTeuS с помощью ICQ
По умолчанию

это не ОС никакая...
по4ему под 16разрядн. пишем? проще под винь и invoke ShellExecute
 
Ответить с цитированием

  #198  
Старый 07.02.2008, 00:20
Аватар для Flame of Soul
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме:
1740746

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию

Цитата:
по4ему под 16разрядн. пишем? проще под винь и invoke ShellExecute

))) блин а я то дура думала, есив я загружаюсь с дискетки, меня приветствует загрузчик, потом появляеться приветствие ОС и в итоге я могу выполнять некоторые команды - это однозадачная ос, а оказываеться нет, да при том она и 16 разрядная? какая досада((( не гони. Есив это написано и откомпиленно не на тасме и не на масме то это не значит что это 16 разрядный асемблер.

вопрос был другой как с ядра обращаться к посторонним файлам.
 
Ответить с цитированием

  #199  
Старый 07.02.2008, 00:34
Аватар для Delimiter
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

А Dos и есть и был однозадачный. Там и ядра то не было.... и у тебя не будет! Есть БИОС таблица прерываний.....часть БИОСА часть под Dos заточена....там все есть,что тебе нужно! А грузится все энто бизобразие в единое адресное пространство 640Килобайт 8)).. соответственно расслабься грузи программу в память определяй точку входа и передавай управление.

Или "вытесняющая многозадачность"мастдая вьелась в моск?

А вообще мадам.... вы похоже идете в сторону MBR вируса... дык зайдите на lab29a... возьмите лучший образец и "думайте" ....там то управление передается на оригинальный загрузчик.

Последний раз редактировалось Delimiter; 07.02.2008 в 00:46..
 
Ответить с цитированием

  #200  
Старый 07.02.2008, 02:38
Аватар для Flame of Soul
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме:
1740746

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию

Цитата:
зайдите на lab29a... возьмите лучший образец и "думайте"
это я все просматрела. На счет доса и много задачности.
Я в замешательстве. Есть разница между графическим и текстовым режимом?
а то вот тут я наблюдаю много задачность Manuet OS v0.78.
под Fat 12 так е на флопике. Имеет возможность запускать файлы и работать с ними не зависимо от адресного пространства. И там и у меня система 32-х битная.

Со всей симпатией за помощь в развитии моих знаний Delimiter но как это понимать?

Цитата:
А Dos и есть и был однозадачный. Там и ядра то не было.... и у тебя не будет!
Как раз таки через прерывание эти действия и производяться, вот только я пока не могу понять как.

PS: DOS -дисковая операционная система, не все они однозадачные:-)

Цитата:
Многозадачная, многопользовательская операционная система DOS-Line
В реальном режиме мы имеем 640Kb памяти - 10 сегментов по 64Kb. В первый сегмент лучше не соваться - эта область BIOS. Для простоты предположим, что каждая задача нашей ОС - это COM файл MS-DOS.

COM-программы содержат единственный сегмент (или, во всяком случае, не содержат явных ссылок на другие сегменты). Образ COM-файла считывается с диска и помещается в память, начиная с PSP:0100. Притом COM-программа может использовать множественные сегменты, но она должна сама вычислять сегментные адреса, используя PSP как базу.

В MS-DOS после загрузки двоичного образа:

Цитата:
CS, DS, ES и SS указывают на PSP
SP указывает на конец сегмента PSP (обычно 0fffeH, но может быть и меньше, если полный 64K сегмент недоступен). Слово по смещению 06H в PSP указывает, какая часть программного сегмента доступна.
Вся память системы за программным сегментом распределена программе.
Слово 00H помещено (PUSH) в стек.
IP содержит 100H (первый байт модуля) в результате команды JMP PSP:100
задача при загрузке файла проделать те-же самые действия, что-бы программы ни коим образом не догадывалась об отстутствии ее родной ОС.

Предположим, что каждая COM-программа занимает в памяти один сегмент.
18.2 раза в секунду приходит аппаратное прерывание, и процессор отвлекается на выполнение некоторой процедуры - восьмого прерывания (int 08h). При этом он сохраняет в стеке регистр флагов (PUSHF), и регистры указывающие на текущую команду (CS:IP) (PUSH CS, PUSH IP). Всего 6 байт. После окончания аппаратного прерывания эти регистры восстанавливаются и основная программа продолжает свое выполнение.

Задача, состоит в том, чтобы во время выполнения прервания подменять стек таким образом, что-бы после восстановления регистров выполнялась другая программа, находящаяяся в памяти.

При наилучшем раскладе возможна загрузка восьми задач - 640Kb/64Kb=10, то есть всего имеем десять сегментов - один под переменные DOS, и один под ядро, вот и остается только восемь.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Delphi, .NET, Asm 92 14.05.2010 17:59
Обзор программ для очистки жёсткого диска v1ru$ Soft - Windows 21 17.01.2010 21:07
ОС с нуля z01b С/С++, C#, Delphi, .NET, Asm 36 03.07.2008 15:30
Лучший софт для Linux _-Ramos-_ Soft - *nix 11 15.01.2008 12:08
Взлом Unix а silveran *nix 4 21.12.2005 22:46



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ