Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 102
от 03.04.2005, 16:30

Администратор:Калашников О.А.
В номере:Вопросов: 8, Ответов: 21


Вопрос № 18898: добрый день всем!!! у меня вопрос может кто обьяснит по поводу прерывания 15Н функция 530ЕН что это она делает или может есть ссылочка на на данный вопрос в инете ничегошеньки не нашла с Уважением Виктория...
Вопрос № 18900: У меня такой вопрос!!! Я хочу написать ОС наподобие Windows ,но не знаю как загрузить программу сделанную из под Windows. И ещё для своей ОС как сделать свой язык программирования высокого уровня!!! Буду благодарен всем тем кто ответи...
Вопрос № 18902: У меня такой вопрос!!! Я хочу написать ОС наподобие Windows ,но не знаю как загрузить программу сделанную из под Windows. И ещё для своей ОС как сделать свой язык программирования высокого уровня!!! Всем благодарен заранее!!! ...
Вопрос № 18903: Ув эксперты! Объясните,плз,я скачал MASM32,с API все нормально работает,а пытаюсь компилировать DOS`овские проги,компиллер ругается.Я уже брал пример файла ASM и у Зубкова и у Пильщикова и у Финогенова - где-то все-равно есть ошибка,даже когда пр...
Вопрос № 18921: Здравствуйте. Не могу разобраться в условии задания по ассемблеру: Составить программу для 16-разрядного процессора, реализующую следующее задание: Адрес окружения программы находится в префиксе прграммного сегмента (PSP – область, с которой ...
Вопрос № 18945: Как можно поставить пароль на *exe и *com файл. Как можно приписать свой код к файлу. Например при запуске любого exe и com файлов будет выходить окно с текстом(досовское) и при нажатии любой клавиши запустится сама прога. ...
Вопрос № 18946: Здрасвуйте! Я бы хотел узнать насчёт загрузки задач откомпилированных на языках программирования для WINDOWS!!! Вот я делаю свою ОС , чтобы она могла загружать все задачи сделанных на платформе Windows,DOS и на моей платформе ОС!!! Че...
Вопрос № 18949: А можно ли на Ассемблере сделать свой язык программирования сделать(любого уровня)?...

Вопрос № 18898
добрый день всем!!!
у меня вопрос может кто обьяснит по поводу прерывания 15Н функция 530ЕН что это она делает или может есть ссылочка на на данный вопрос в инете ничегошеньки не нашла
с Уважением Виктория
Отправлен: 28.03.2005, 17:47
Вопрос задала: Виктория Путина (статус: 6-ой класс)
Всего ответов отправлено: 5

Отвечает: Котиев Зураб
Здравствуйте, Виктория Путина!
Ralf Brown's Interrupt List(посмотри http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html)
Inp.:
AX = 530Eh
BX = device ID of system BIOS (0000h)
CH = APM driver major version (BCD)
CL = APM driver minor version (BCD) (02h for APM v1.2)
Return: CF clear if successful
AH = APM connection major version (BCD)
AL = APM connection minor version (BCD)
CF set on error
AH = error code (03h,09h,0Bh)
все это относится к управлению питанием(Advanced Power Management)
Ответ отправил: Котиев Зураб (статус: 3-ий класс)
Отправлен: 28.03.2005, 18:03
Оценка за ответ: 5
Комментарий оценки:
merci

Отвечает: DSota
Здравствуйте, Виктория Путина!
В APM (advansed power management driver) -в AWARD BIOS разрешает (включает) управление электропитанием.

Приложение:

Ответ отправил: DSota (статус: Студент)
Отправлен: 28.03.2005, 18:12
Оценка за ответ: 5
Комментарий оценки:
merci

Отвечает: Boriss
Здравствуйте, Виктория Путина!
Почитать подробнее можно здесь:
http://hdebruijn.soo.dto.tudelft.nl/newpage/interupt/out-1400.htm
а где кратко, Вы уже наверно, видели :))
Сам не сразу нашел ...
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 28.03.2005, 18:48
Оценка за ответ: 5
Комментарий оценки:
просто нет слов прекрассно

Отвечает: Евгений Иванов
Здравствуйте, Виктория Путина!
--------p-15530E-----------------------------
INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
AX = 530Eh
BX = device ID of system BIOS (0000h)
CH = APM driver major version (BCD)
CL = APM driver minor version (BCD) (02h for APM v1.2)
Return: CF clear if successful
AH = APM connection major version (BCD)
AL = APM connection minor version (BCD)
CF set on error
AH = error code (03h,09h,0Bh) (see #00473)
SeeAlso: AX=5300h,AX=5303h

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 14 суток с момента отправки ответа.

Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 28.03.2005, 22:34
Оценка за ответ: 5
Комментарий оценки:
благодарю

Отвечает: Voituk Alexander
Здравствуйте, Виктория Путина!
Скажи пожалуйста, где ты такую нашла? У меня есть справочник по прерываниям, но по данному вопросу заканчивается на функции 530Bh. Одно могу сказать, что вроде это относится к
Advanced Power Management Specification. По крайней мере, все функции 53 этого прерывания про это.
Ответ отправил: Voituk Alexander (статус: 6-ой класс)
Отправлен: 29.03.2005, 12:39


Вопрос № 18900
У меня такой вопрос!!!
Я хочу написать ОС наподобие Windows ,но не знаю как загрузить
программу сделанную из под Windows.
И ещё для своей ОС как сделать свой язык программирования высокого уровня!!!
Буду благодарен всем тем кто ответит на этот вопрос(желательно побыстрее)!!!
Отправлен: 28.03.2005, 18:22
Вопрос задал: newinfo2005 (статус: 1-ый класс)
Всего ответов отправлено: 2

Отвечает: Вiктор
Здравствуйте, newinfo2005! (ну и масштабные у вас задумки...)
я так понял ваша ос будет крутая, тогда она должна сама загружаться при включении
компьютера, как это делают виндовс и дос, и др.
про код загрузки - поищите сами, можете поискать на wasm.ru
если ваша ОС будет работать как программа виндовс (наподобие ДОСа), то
вам следует почитать про дос, виндовс и их взаимодействие.
насчёт языка программирования - если хотите свой язык- делайте его компилятор.
комп работает в машинных кодах. чтобы он понимал ваш "язык программирования высокого уровня!!!" ему надо переводчик - компилятор.
вообще, читайте про написание самодельных ОС. спросите у эксперта Dron, он вроде этим занимался.
надеюсь я вам помог. если нет - сформулируйте вопрос по другому, может быть следует разбить его на более мелкие.
всё.
Ответ отправил: Вiктор (статус: 3-ий класс)
Отправлен: 28.03.2005, 20:36
Оценка за ответ: 4
Комментарий оценки:
Конечно это очень хорошая помощь , но машинные коды это уже большие проблемы!!!

Отвечает: Стас
Здравствуйте, newinfo2005!
Не в обиду...
Но если ты элементарный вещей не понимаешь, как ты собрался писать ОСь?
Что значит "не знаю как загрузить программу сделанную из под Windows" - ни знаков припенания, ни чего - т.е. у тебя прога написана для Windows ты её хочешь запустить без виндов? Практически дохлый номер.
Или ты написал загрузчик, но не знаешь как его запустить (для проверки) под виндами? (запиши на дискету - загрузись с неё, или вообще поставь виртуальную машину)
--
В общем случае тебе надо либы придумывать свою файловую систему, либо брать за основу существующую, писать бут сектор (это легко). И дальше писать процедуры для работы с файлами, экраном, клавиатурой, другим оборудованием. Когда это сделаешь можно "навесить" графическую оболочку. И реализовать "интерпретатор" какого либо языка спец. для твоей ОС. Например пишешь в командной строке - print "Hello Word!", система опознает ключевое слово "print" - понимает что нужно вывести на экран, берёт параметры "Hello Word!" и выводит это на экран с помощью написаных ранее функций ОС.
Ну примерно так. Написание ОС сложная задача, начни с чего нибудь попроще.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 29.03.2005, 01:28
Оценка за ответ: 5
Комментарий оценки:
Я ,конечно, не обижаюсь на то что ты сказал , но за идею спасибо, большое спасибо!!!


Вопрос № 18902
У меня такой вопрос!!!
Я хочу написать ОС наподобие Windows ,но не знаю как загрузить
программу сделанную из под Windows.
И ещё для своей ОС как сделать свой язык программирования высокого уровня!!!
Всем благодарен заранее!!!
Отправлен: 28.03.2005, 18:26
Вопрос задал: newinfo2005 (статус: 1-ый класс)
Всего ответов отправлено: 1

Отвечает: Котиев Зураб
Здравствуйте, newinfo2005!
топай на www.reactos.org там валяются исходники windows-подобной OS.
А вообще лучше писать микро- или экзо- ядерную систему а windows или linux окружение реализовывать в виде библиотек.
можешь зайти на www.osdev.ru там тоже много инфы.
http://www.uw-pc.com/os.html
http://www.experimentalstuff.com/Technologies/ChorusOS/index.html
Ответ отправил: Котиев Зураб (статус: 3-ий класс)
Отправлен: 29.03.2005, 11:30
Оценка за ответ: 5
Комментарий оценки:
Такого ответа мне ещё не давали!!!


Вопрос № 18903
Ув эксперты!
Объясните,плз,я скачал MASM32,с API все нормально работает,а пытаюсь компилировать DOS`овские проги,компиллер ругается.Я уже брал пример файла ASM и у Зубкова и у Пильщикова и у Финогенова - где-то все-равно есть ошибка,даже когда прога без кода,а сам скелет.
Может быть для DOS`a нужен другой DOS`овский MASM?Или в чем тут дело?
Спасибо заранее за содержательный ответ,очень уж хотелось бы разобраться.
Отправлен: 28.03.2005, 18:48
Вопрос задал: Ling (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Вiктор
Здравствуйте, Ling!
TLINK, TASM - точно бывают 16- и 32-битные
MASM :
Microsoft (R) Macro Assembler Version 6.14.8444, Copyright (C) Microsoft Corp 1981-1997.
должен вроде делать и 16, и 32-битный код. (не уверен)
а вот LINK (Microsoft овский) может быть или 16, или 32-битный.
в масм32 нет 16-битного линкера. там есть:
Microsoft (R) Incremental Linker Version 5.12.8078, Copyright (C) Microsoft Corp 1992-1998.
он точно 32-битный
16-битный LINK надо искать в пакете MASM 6.11, 6.12 или вроде того.
попробуйте сделать *.СОМ программу вашим MASM-ом, может выйдет...
попробуйте ещё настойки сегментов USE16, USE32
всё. (надеюсь за такой ответ мне не влепят выговор :-)
Ответ отправил: Вiктор (статус: 3-ий класс)
Отправлен: 28.03.2005, 20:50

Отвечает: _vt
Здравствуйте, Ling!
Как всегда - у меня на сайте можно найти то, что надо :)
Рабочий MASM для DOS лежит тут. 269 Кб.
--

* In Gates we trust! :)

Ответ отправил: _vt (статус: Академик)
Отправлен: 02.04.2005, 00:58


Вопрос № 18921
Здравствуйте. Не могу разобраться в условии задания по ассемблеру:
Составить программу для 16-разрядного процессора, реализующую следующее задание:
Адрес окружения программы находится в префиксе прграммного сегмента (PSP – область, с которой загружается соответствующая программа) со смещением 2Ch. Сегментный адрес PSP находится в регистрах DS и ES при старте программы.
Структура среды окружения:
db строка_1,0
db строка_2,0

db строка_т,00,хх
db строка_запуска_программы 0
1. Необходимо получить из PSP адрес окружения, по этому адресу в среде окружения найти строку, которая описывает путь запуска программы, выдать ее на экран и номер этой строки.
2. Выдатиьстроку с номером 5, 79. Если строки с заданным именем не существует выдать сообщение «Строка не найдена»
3. Выдать все строки содержащие символ @, в формате:
Строка 5: содержимое_строки. Если строки не существует, выдать соответствующее сообщение.
Помогите, кто сможет. Хотя бы советом что и как делать. Спасибо.
Отправлен: 29.03.2005, 01:56
Вопрос задал: MMM72 (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: DSota
Здравствуйте, MMM72!
0. Ошибка небольшая (в запятых):
db строка_т,0,0,хx,0
db строка_запуска_программы 0
1. Написать строку запуска:
mov di,[cs:2ch]
mov es,di
xor di,di;es:di=адрес переменных окружения из PSP[2ch]
;ищем 2 нуля - т.к. строка запуска программы за ними
xor si,si;si=номер строки, строки нумеруются от 0
xor cx,cx
dec cx
mov al,0
findnext:
inc si;увеличим номер строки
repne scasb;ищем ноль в конце
cmp es:di,al
jne findnext
;нашли 2 нуля, пропскаем 2 цифры (xx,0)
add di,2
;теперь в es:di - адрес строки, в si - ее номер
call printnum
call printasciiz
ret
printasciiz proc;печать строки, оканчивающейся на 0
push ds
push es
push di
pop si
pop ds
jmp nxtchar
addchar:
int 29h
nxtchar:
lodsb
cmp al,0
jne addchar
pop ds
ret
endp
printnum proc;печать двухзначного номера в SI
mov al,13
int 29h
int al,10
int 29h
mov ax,si
mov dl,10
div dl
add ax,3030h
int 29h
mov al,ah
int 29h
mov al,' '
int 29h
ret
endp
2. аналогично п.1, только все время проверяется si на равенство искомой строки
xor di,di;es:di=адрес переменных окружения из PSP[2ch]
;ищем 2 нуля - т.к. строка запуска программы за ними
xor si,si;si=номер строки, строки нумеруются от 0
xor cx,cx
dec cx
mov al,0
findnext:
cmp si,5;ищется 5-я строка:
jne findend
call printasciiz
jmp nxt1
findend:
inc si;увеличим номер строки
repne scasb;ищем ноль в конце
cmp es:di,al
jne findnext
nxt1:
;нашли 2 нуля, конец поиска, печатаем "строка не найдена"
3. каждую строку еще и проверяешь на присутствие в нем '@'
xor di,di;es:di=адрес переменных окружения из PSP[2ch]
xor bx,bx;адрес текущего символа
xor si,si;si - номер страницы
tst:
mov ax,[es:bx]
inc bx
cmp ax,0;встретились 2 нуля?
je seed
cmp al,0;началась новая строка?
jne nxtchar
mov di,bx;в di-начало строки
inc si;номер строки
nxtchar:
cmp al,'7'
jne tst
call printnum
push si
call printasciiz
pop si
jmp tst
seed:
Ответ отправил: DSota (статус: Студент)
Отправлен: 29.03.2005, 13:05


Вопрос № 18945
Как можно поставить пароль на *exe и *com файл. Как можно приписать свой код к файлу. Например при запуске любого exe и com файлов будет выходить окно с текстом(досовское) и при нажатии любой клавиши запустится сама прога.
Отправлен: 29.03.2005, 16:00
Вопрос задал: Kairat (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: Котиев Зураб
Здравствуйте, Kairat!
Используй вирусные технологии для записи своего кода в конец файла (так проще чем в начало или середину).
за описанием на www.wasm.ru в раздел вирусология. или скачай книгу
Игорь Коваль :: Как написать компьютерный вирус
http://djs9.agava.net/bookz/teacher/viruses.rar
Ответ отправил: Котиев Зураб (статус: 3-ий класс)
Отправлен: 29.03.2005, 16:32

Отвечает: Вiктор
Здравствуйте, Kairat!
я очень сомневаюсь, но по-моему есть прерывание ДОС, которое вызывается при запуске
новой программы. проверьте на всякий случай.

===
он имел ввиду не перехватывать запуск программы, а встроить код в любую программу.
Евгений Иванов.
===
Ответ отправил: Вiктор (статус: 3-ий класс)
Отправлен: 29.03.2005, 21:31

Отвечает: Евгений Иванов
Здравствуйте, Kairat!
для этого нужно программу сохранить, а точку старта перенаправить на код, который будет расшифровывать и ставить программу на место.
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 29.03.2005, 21:37


Вопрос № 18946
Здрасвуйте!
Я бы хотел узнать насчёт загрузки задач откомпилированных на языках программирования для WINDOWS!!!
Вот я делаю свою ОС , чтобы она могла загружать все задачи сделанных
на платформе Windows,DOS и на моей платформе ОС!!!
Чем отличается загрузки задачи для Windows и DOS!?
Желательно, по подробние объясните!!!
Спасибо за ранее!!!
Отправлен: 29.03.2005, 16:05
Вопрос задал: newinfo2005 (статус: 1-ый класс)
Всего ответов отправлено: 2

Отвечает: Котиев Зураб
Здравствуйте, newinfo2005!
Ну брателла здесь ответа не на одну стр.
Во первых в досе не используются разделяемые библиотеки ,существует прямой доступ к железу,используется реальный режим процессора и сегментация,память ограничена 1мб(без использования различных экстендеров),размер секций в файле не может превышать 64кб(кажется; точно не помню)да сама структура файлов очень отличается от win-pe файлов.
Прога под под дос сама должна обеспечивать себе пользовательский интерфейс , так как DOS предоставляет лишь базовые фунции(типа открыть файл,прочесть ,закрыть и т.д.).
Проги под винду импортируют функции из системных библиотек (kernel32.dll ,ntdll.dll,user32.dll,и т.п.) да и не только, средства пользовательского интерфейса представлены системой(user32.dl,gdi32.dll,comctrl32.dll) ,процессор работает в защищенном flat режиме,используется виртуальная память, исполнимые файлы за исключением dll в основном жестко привязаны к базе 00400000h.
короче тебе надо предоставить все окружение инды и доса в твооей ос.работы хватит на десять твоих жизней.

А побольше инфо где набрать?
Ответ отправил: Котиев Зураб (статус: 3-ий класс)
Отправлен: 29.03.2005, 17:14
Оценка за ответ: 5
Комментарий оценки:
А давай потолкуем у меня на чате пошли мне только письмо о том чтобы потолкавать??!!

Отвечает: Boriss
Здравствуйте, newinfo2005!
И конечно, много найдете на www.wasm.ru, например. Вот например, посмотрите старничку
http://www.wasm.ru/publist.php?list=7
и
http://www.wasm.ru/publist.php?list=21
И вот на других стайтах:
http://www.kolasc.net.ru/cdo/programmes/os/31.htm
А это форум на тему "реально ли написать свою ОС?"
http://fpm.kubsu.ru/forum/st.php?c_id=307
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 29.03.2005, 17:43
Оценка за ответ: 5
Комментарий оценки:
Спасибо хотя бы за ссылки!!!


Вопрос № 18949
А можно ли на Ассемблере сделать свой язык программирования сделать(любого уровня)?
Отправлен: 29.03.2005, 16:22
Вопрос задал: newinfo2005 (статус: 1-ый класс)
Всего ответов отправлено: 5

Отвечает: Котиев Зураб
Здравствуйте, newinfo2005!
Вообще почти все компилеры кокда-то были написаны на ассме, а лишь потом перенесены на языки более высокого уровня. или на родной язык компилятора ,т.е. компилятор компилит сам себя (Virtual pascal,free pascal,GCC и т.д.)
Ответ отправил: Котиев Зураб (статус: 3-ий класс)
Отправлен: 29.03.2005, 16:39
Оценка за ответ: 4
Комментарий оценки:
А побольше инфо где набрать?

Отвечает: John Freeman
Здравствуйте, newinfo2005!
Как спросил так и отвечу - да, именно так и сделали
Ответ отправил: John Freeman (статус: Профессионал)
Отправлен: 29.03.2005, 17:15
Оценка за ответ: 5
Комментарий оценки:
А по подробнее (пример какой-нибудь)?

Отвечает: Boriss
Здравствуйте, newinfo2005!
Не спорю с ответившими, но добавлю что "кроме С", который был начат на Асме, а потом развит на С. И он лучше подходит для создания новых языков выского уровня. Вспомните, хотя бы TCL ...
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 29.03.2005, 17:27
Оценка за ответ: 5
Комментарий оценки:
Тоже пойдет!!!

Отвечает: Voituk Alexander
Здравствуйте, newinfo2005!
конечно можно, но очень грустно.
Ответ отправил: Voituk Alexander (статус: 6-ой класс)
Отправлен: 29.03.2005, 17:53
Оценка за ответ: 3
Комментарий оценки:
а я так не думаю.

Отвечает: Евгений Иванов
Здравствуйте, newinfo2005!
конечно, можно. делай что угодно и как тебе угодно.
Ассемблер - универсальный язык!
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 29.03.2005, 21:32
Оценка за ответ: 5
Комментарий оценки:
Хочется с тобой потолкавать об этом пришли письмо
с сообщением и поболтаем у меня на чате!!!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное