Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выдрать OS, из ассемблера 
:(
    Опции темы
apook
Дата 25.2.2007, 04:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нечто подобное я наваял на С но для такой мелкй задачи программа
даже под UPX 5kb меня прильщает что на ассемблере очень легкая
но вот беда ни х..я не работает что-то она smile

Код

assume CS:code,DS:code
code segment

org 256      ; Место под PSP

main proc

mov al, 00
mov ah, 30h
int 21h
jc Exit


cmp al, 0FFh     ; проверка 
je MS_DOS

cmp al, 0FDh     ; проверка
je FREE_DOS

jmp Exit

MS_DOS:
mov AH, 09h    ; Функция вывода на экран
mov DX, offset msg2
int 21h
jmp Exit

FREE_DOS:
mov AH, 09h    ; Функция вывода на экран
mov DX, offset msg1
int 21h
jmp Exit


Exit:
mov AX,4C00h        ; Функция завершения
int 21h             ; программы
main endp

msg1 db 'FreeDos$'
msg2 db 'MS-Dos$'
;msg3 db 'xx$'
;msg4 db 'xx$'
;msg5 db 'xx$'


code ends
end main



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
corpsehunter
Дата 26.2.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну почему же, все работает, только обе эти проверки:
Код

cmp al, 0FFh     ; проверка 
je MS_DOS

cmp al, 0FDh     ; проверка
je FREE_DOS

возращают false и по этому происходит это:
Код

jmp Exit

Возможно это тебе поможет:
Цитата
Полный формат вызова функции 30h прерывания INT 21h. 
Регистры на входе:
AH    30h
AL    00h - получить код ОЕМ (код фирмы-изготовителя DOS) и версию DOS; 
      01h - получить флаги расположения DOS. 
Регистры на выходе:
AL    Верхний (major) номер версии. 
AH    Нижний (minor) номер версии. 
BX:CL 24-битовый серийный номер конкретного экземпляра MS-DOS 
BH    Если при вызове функции AL был равен 0: 
Код фирмы-изготовителя:
00h - IBM;
05h - Zenith;
16h - DEC; 
23h - Olivetti;
29h - Toshiba;
4Dh - Hewlett Packard;
99h - архитектура STARLITE;
FFh - Microsoft, Phoenix.

Если при вызове функции AL был равен 1:
08h - DOS расположен в ПЗУ; 
10h - DOS загружен в старшие адреса памяти (область HMA).


P.S. У меня al вернуло 05h.
P.P.S. Возможно я придираюсь, но было бы красивее, если бы ты
Код

mov al, 00
mov ah, 30h
 объединил в одну smile 

Это сообщение отредактировал(а) corpsehunter - 26.2.2007, 12:47
--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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