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

  #1  
Старый 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, и один под ядро, вот и остается только восемь.
 
Ответить с цитированием

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

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

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

вот полный текст и программы и ресурсов.

Код:
   .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
   IDM_EXIT        equ 32003
   IDD_DLG2        equ  1000
   IDC_RED1                equ  1001


   .code

   start:

       invoke GetModuleHandle, NULL
       mov    hInstance,eax
       invoke DialogBoxParam, hInstance, IDD_DLG2, 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_RED1
           invoke SetFocus,eax
       .ELSEIF uMsg==WM_CLOSE
           invoke SendMessage, hWnd, WM_COMMAND, IDM_EXIT, 0
       .ENDIF
       mov eax,TRUE

       ret

   DlgProc endp

   end start
Код:
#define IDD_DLG2 1000
#define IDC_RED1 1001
IDD_DLG2 DIALOGEX 5,5,65,13
CAPTION "IDD_DLG"
FONT 10,"MS Sans Serif",400,0,204
STYLE 0x10CF0000
BEGIN
  CONTROL "IDC_RED",IDC_RED1,"RichEdit20A",0x50010000,1,1,63,11,0x00000200
END
 
Ответить с цитированием

  #3  
Старый 11.02.2008, 00:35
Аватар для ZET36
ZET36
Участник форума
Регистрация: 08.10.2007
Сообщений: 259
Провел на форуме:
500748

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

Сразу приношу извенения я только начал изучать языки програмирования не считая скриптов. Решил начать с асемблера.

Посоветте с чего мне начать? где скачать програмное обеспечение для написания программ на асемблере?

я скачал с http://softok.org/coding/debug/13111prog.html Turbo Assembler Shell v.3.00
пробывал запустить простенький код
Код:
.data
msgtext db "Hello, WORLD", 0h
msgcap db "It is ASM!!! =)", 0h

.code
start:
INVOKE MessageBoxA, 0 offset msgtext, offset msgcap, 0
end start
конечно же неполучилось в ошибке пишут
Оut-file not found

какого выходного файла нету я понять немогу. вроде перед запуском проект сохранил.

посоветте пожалусто чтонибть для совсем зелёных. заранее благодарен
 
Ответить с цитированием

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

Репутация: 1338


По умолчанию

ZET36
Цитата:
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_INITDIALOG
invoke GetDlgItem, hWnd, IDC_RED1
invoke SetFocus,eax
.ELSEIF uMsg==WM_CLOSE
invoke EndDialog, hWndn, 0
.ENDIF
xor eax, eax

ret

DlgProc endp
Оконная процедура должна возвращать НОЛЬ. + по событию WM_CLOSE закрываем диалог.

CONTROL "IDC_RED",IDC_RED1,"RichEdit20A",0x50010000,1,1,63 ,11,0x00000200 - тут что-то неправильно!!!

Для примера попробуй заменить на
CONTROL "IDC_RED",IDC_RED1,"edit",0,1,1,63,11


Софт для асма бери на WWW.WASM.RU -> предпочтительно MASM or FASM.

Последний раз редактировалось GlOFF; 11.02.2008 в 02:34..
 
Ответить с цитированием

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

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

ZET36
думаю для совсем зеленых подойдет вот этот вариант. если что то непонятно могу откоментировать. вот тут прямая ссылка на MASM. в нем я компилировал чего и вам желаю. http://wasm.ru/baixado.php?mode=tool&id=48

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

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

    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib

.data
    msgtext db "Hello, WORLD", 0h
    msgcap db "It is ASM!!! =)", 0h

.code
    start:

    invoke MessageBox, NULL, addr msgtext, addr msgcap, MB_OK
    invoke ExitProcess, NULL

    end start
GlOFF
хм.. где же в листинге вы нашли процедуру окна? я наконецто по лазил под отладчиком и наткнулся на то что при вызове диалоговой процедуры сначала ищется ресурс, если он не находится, то и не происходит вызова DialogBoxParam что и происходит у меня. вообщем посмотрел у Iczelion'a и нашел что у него имя ресурса задается ASCI-zero строкой. вообщем это внесло еще больше сумятицы в то что вы сказали что так нельзя. вы не могли бы довести проект до рабочего состояния, если вас не затруднит?
 
Ответить с цитированием

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

Репутация: 1338


По умолчанию

TruPAC Вот так попробуй компильнуть ->
PHP код:
.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
   AppName db 
"First",0
      

   
.data?
   
hInstance HINSTANCE ?
   
   .const
   
IDM_EXIT        equ 32003
   IDD_DLG2        equ  1000
   IDC_RED1                equ  1001


   
.code

   start
:

       
invoke GetModuleHandleNULL
       mov    hInstance
,eax
       invoke DialogBoxParam
hInstanceIDD_DLG2NULLADDR DlgProcNULL
       invoke ExitProcess
,eax

DlgProc proc hWnd
:HWNDuMsg:UINTwParam:WPARAMlParam:LPARAM
.IF uMsg==WM_INITDIALOG
invoke GetDlgItem
hWndIDC_RED1
invoke SetFocus
,eax
.ELSEIF uMsg==WM_CLOSE
invoke EndDialog
hWndn0
.ENDIF
xor 
eaxeax
ret

DlgProc endp

   end start 
+

PHP код:
#define IDD_DLG2 1000
#define IDC_RED1 1001
IDD_DLG2 DIALOGEX 5,5,65,13
CAPTION 
"IDD_DLG"
FONT 10,"MS Sans Serif"
STYLE 0x10CF0000
BEGIN
  CONTROL 
"IDC_RED",IDC_RED1,"edit",0,1,1,63,11
END 
TruPAC DlgProc - оконная\диалоговая процедура, обслуживает сообщения приходящие к данному диалогу. Просто щас сравни листинги и найди что изменилось.
 
Ответить с цитированием

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

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

ё маё... ну сколько ж можно... и так тоже не работает. вроде бы все нормально - проверял на чужих исходниках и все прекрасно собирается, а тут нет. у вас это точно собирается? мб ошибка не только у меня? не обижайтесь, а вдруг? вы можете приатачить файлы? я уже просто с ума схожу - 6 дней возни на стенке кашей и толку 0.

Ps
я всегда различал оконную и диалоговую процедуры.
 
Ответить с цитированием

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

Репутация: 1338


По умолчанию

TruPAC Вот мой рабочий\компилируемый вариант ->
http://webfile.ru/1737398
 
Ответить с цитированием

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

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

GlOFF
огромное спасибо! оказывается ошибка была в том что по какимто причинам мой линкер собирал новый вариант в папку общих документов и вместо того чтобы получить новый exe я работал со старым. сейчас я непременно посмотрю ваш вариант.
 
Ответить с цитированием

  #10  
Старый 12.02.2008, 13:13
Аватар для Minimus
Minimus
Новичок
Регистрация: 22.09.2007
Сообщений: 9
Провел на форуме:
312775

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

гуру и не гуру,дайте пожалуйста консольный пример "Hello, Wolrd" на асме,а то обыскался уже.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (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