HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.01.2008, 01:11
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
С нами: 10182506

Репутация: 1393


По умолчанию

Пробуй вместо offset, addr
 
Ответить с цитированием

  #2  
Старый 24.01.2008, 01:27
AFoST
Members of Antichat - Level 5
Регистрация: 28.05.2007
Сообщений: 729
С нами: 9976706

Репутация: 1934


По умолчанию

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

  #3  
Старый 24.01.2008, 01:54
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
С нами: 10531106

Репутация: 1338


По умолчанию

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

  #4  
Старый 24.01.2008, 01:57
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами: 11099536

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

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

  #5  
Старый 05.02.2008, 18:43
TruPAC
Познающий
Регистрация: 20.12.2007
Сообщений: 36
С нами: 9679897

Репутация: 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
 
Ответить с цитированием

  #6  
Старый 05.02.2008, 19:21
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
С нами: 10531106

Репутация: 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
Окно должно создасться с условием если описание окна в ресурсах соответствует спецификациям
 
Ответить с цитированием

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

Репутация: 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" любой. То есть независимо от адресного пространства?

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

  #8  
Старый 06.02.2008, 17:19
ProTeuS
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,367
С нами: 11291486

Репутация: 2175


По умолчанию

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

  #9  
Старый 07.02.2008, 00:20
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
С нами: 9980798

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

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

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

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

  #10  
Старый 07.02.2008, 00:34
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами: 11099536

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

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

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

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

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 92 14.05.2010 17:59
ОС с нуля z01b С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 36 03.07.2008 15:30



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


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




ANTICHAT ™ © 2001- Antichat Kft.