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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Выпуск N 100

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-09-20


Вопрос №949

Здравствуйте эксперты!
Кто нибудь знает структуру исполняемого файла в линухе. Вот например простая программа на си типа Hello, World занимает 17кб. Это при том, что это не с++, а просто си , у которого должен быть грамотный компилятор. Или это вроде PSP только огромное!!!

Ответ

Здравствуйте, DiGiT!
в Linuxе используется ELF формат, если хош могу скинуть описание (на английском). если тот же Hello World в Linuxе сделать на ассемблере, то получится гораздо меньше, примерно 500 байт.


Отправил эксперт: BELTSY
Эксперт отправил ответов (всего): 33

Экспертная группа: Оптимизация программ

Вопрос №951

Даже не знаю, вопрос ли это; скорее некое дополнение к вопросу #914. Был там такой фрагмент кода
mov ax,40h
push ax
pop ds
mov [0072h],1234h
а почему не mov [0072h],5678h или mov [0072h],0EFCCh. Любое изменение этих двух байт приводит к перезагрузке компа (тока в режиме эмуляции ДОСа!:).
В общем ребята из большой корпорации мутят что-то...

Ответ

Здравствуйте, Начинающий ламер!

Это не ребята из большой корпорации... это стандарт БИОС.

Если в этот регистр записать 0x1234 то произойдет холодная перезагрузка. если 0x4321 то горячая... насчет других значений не могу точно сказать, но вполне возможно что какая-то перезагрузка происходит в любом случае, а вот какая (горячая или холодная) - это уж ты сам выясняй. :)


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 129

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №949

Здравствуйте эксперты!
Кто нибудь знает структуру исполняемого файла в линухе. Вот например простая программа на си типа Hello, World занимает 17кб. Это при том, что это не с++, а просто си , у которого должен быть грамотный компилятор. Или это вроде PSP только огромное!!!

Ответ

Здравствуйте, DiGiT!

Странные у тебя цифры... ты наверное статически линковал.. :)
У меня получилось около 4к... вполне сопоставимо со всякими другими компиляторами.

Кстати хм... статически получилось - 48к... :) не знаю как ты линковал. :)

Формат ELF можешь посмотреть на нашем сайте (ссылка внизу)
В разделе "К размышлению"


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 130

Экспертная группа: Оптимизация программ

Вопрос №947

С некоторых пор Интернет експлорер стал открываться в закрытом окне и чтобы открыть его нухно нажать правую кнопку мыши и на вопрос " закрыть " нажать лувую кнопку мыщи,
Подскажите, как избавиться от этой напасти.
Валерий

Ответ

Здравствуйте, Валерий!
Переставь експлорер..


Отправил эксперт: змей
Эксперт отправил ответов (всего): 35

Экспертная группа: Пользовательская работа с Windows

Вопрос №948

Привет всем!
Беспокоит такая проблема: под виндой выскакивает белым по синему: "ошибка четности памяти", причем машина стоит колом. Виновата не винда, не винт, не память(SIMM), не камень. Что может быть? Помогите...

Ответ

Здравствуйте, DiGiT!
Может быть так:
Посмотри в биосе настройки памяти, и отключи Parity Check Error


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 143

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №951

Даже не знаю, вопрос ли это; скорее некое дополнение к вопросу #914. Был там такой фрагмент кода
mov ax,40h
push ax
pop ds
mov [0072h],1234h
а почему не mov [0072h],5678h или mov [0072h],0EFCCh. Любое изменение этих двух байт приводит к перезагрузке компа (тока в режиме эмуляции ДОСа!:).
В общем ребята из большой корпорации мутят что-то...

Ответ

Здравствуйте, Начинающий ламер!
Просто нельзя писать память-память, а только через регистр!
А почему 1234h - это в документации так написано, а остальные являются зарезервироваными для дальнейшего использования, там написано "внутренние коды системы"


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 144

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №952

При записи в файл Паскаль кричит об ошибке.
Помогите.

Ответ

Здравствуйте, Kiran!
Ошибка не там, а на строку выше-ты пытаешься переменной размером в BYTE присвоить переменную типа Longint
ЗЫ Поздравте меня!:) Это 500 вопрос, пришедший мне, из них на я 145 ответил <8-()


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 145

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №954

Здравствуйте эксперты!
Помогите мне выйти на верный путь!
у меня есть начальные знания в паскале, С, С++,
но это всё не то. Дело в том что я мечтаю написать свою ОС, хотя-бы ядро, понятно что нужны глубокие знания асемблера,
но как мне всё это дело начать, к чему прежде всего приступить, как организовать работу и т.п., где можно найти подходящую литературу и полезные ресурсы?

Ответ

Здравствуйте, J'eka!

Хм.. вот ведь.. :)
многое нужно знать... но всегда убеждаешься что знаешь недостаточно...
Вообще всего знать невозможно... больше читай всякой разной технической литературы.. больше пиши программ, чтобы знания закреплялись... я уже 14 лет программирую..
Приходи в наш проект...


Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html - Операционная система с нуля!)
Эксперт отправил ответов (всего): 131

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №954

Здравствуйте эксперты!
Помогите мне выйти на верный путь!
у меня есть начальные знания в паскале, С, С++,
но это всё не то. Дело в том что я мечтаю написать свою ОС, хотя-бы ядро, понятно что нужны глубокие знания асемблера,
но как мне всё это дело начать, к чему прежде всего приступить, как организовать работу и т.п., где можно найти подходящую литературу и полезные ресурсы?

Ответ

Здравствуйте, J'eka!
Готов помочь, по мере моих талантов :-) ссылками в Интернете и советами. Могу разные файлики с документациями подкинуть. Если захочешь- пиши galilov@astpage.ru
Для начала неплохо было бы почитать
Питер Абель "Язык ассемблера для IBM PC и программирования"
Такое вот странное название у весьма неплохой книжки...


Отправил эксперт: AL-GALI (http://www.astpage.ru/ - вроде как корпоративная страничка)
Эксперт отправил ответов (всего): 3

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №946

Здравствуйте уважаемые эксперты!

Недавно столкнулся с такой проблемой. Была Windows 2000, поставил Windows XP (Build 2600)English. У меня два раздела - C и D. На D инфа, на C система. После переустановки с форматированием(на C), файлы на D (с русскими именами) превратились в какие-то каракули. То же самое творится с нек-рыми программами, например Photoshop 6(Rus). Меню абсолютно нечитабельные! То же в Outlook, но только с небольшой разницей - если смотреть на список e-mailов в папке Inbox то русские тема и отправитель не видны. Содержание же читается. Но если открыть письмо то тема и отправитель отображаются нормально. Можно ли это как-то устанить?

И второе: в досе при переключении на русскую раскладку вместо русских букв одни ??????????????? Делал так:
1. В реестре прописывал:
HKLM\system\CurrentControlSet\Control\Keyboard Layot\DosKeybCodes значением 00000409 ставил RU
2. Последовательно выполнял:
kb16 ru
mode con cp select=866
chcp 866
Вроде бы русифицировалось, но после перезагрузки опять та же фигня. Засовывал это в Autoexec.nt но безрезультатно. В общем есть в XP подобие Autoexeca в Win 98?

Ответ

Здравствуйте, Andrey!
Ты долбанул русские шрифты - при этом хорошо бы иметь русский дистрибутив Win2000 (найти в архивах шрифты и скопировать windows\fonts) и всех остальных русских программ. А если сохранились старые, их достаточно просто скопировать в новое место.


Отправил эксперт: DM
Эксперт отправил ответов (всего): 56

Экспертная группа: Пользовательская работа с Windows

Вопрос №951

Даже не знаю, вопрос ли это; скорее некое дополнение к вопросу #914. Был там такой фрагмент кода
mov ax,40h
push ax
pop ds
mov [0072h],1234h
а почему не mov [0072h],5678h или mov [0072h],0EFCCh. Любое изменение этих двух байт приводит к перезагрузке компа (тока в режиме эмуляции ДОСа!:).
В общем ребята из большой корпорации мутят что-то...

Ответ

Здравствуйте, Начинающий ламер!
Насколько я знаю, при 1234h проходит теплая перезагрузка (т.е. быстро, без post и ещё много чего), при любом другом - холодная, т.е. с прыжком в POST. Это долго, но зато гарантирует полную перезагрузку.
Так что либо мутю (мучу, мутяю, мутываю, мужу..) я, либо - ты.


Отправил эксперт: DM
Эксперт отправил ответов (всего): 57

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №955

Здравствуте, эксперты.
Мой вопрос слегка не по вашей теме, но я не знаю куда обратиться.
Недавно поставил крутой комп и выяснил что модуль CRT Pascalя 7 для ДОС не пашет на крутых камнях (ошибка при инициализации процедуры Delay)
В I-nete нашол кучу материала по этой теме, но всё сводилось или к патчам для уже скомпилированых программ (что меня не устраевает), или к советам исправить сам crt а затем перекомпилировать библиотеку. Исправить-то я исправил, а вот перекомпилить не могу: проограмма запрашивает main.obj, коего у меня нету (то ли я - тормоз, то ли Pascal).
Пожалуйста, подскажите, что делать и где взять уже запатченые crt.tpu, либо turbo.tpl.
C уавжением, Олег.

Ответ

Здравствуйте, Олег!
Я там напрямую отправил кое-что :))
Кстати, crt там уже исправлен!
Желаю приятно повеселится :))


Отправил эксперт: Gn
Эксперт отправил ответов (всего): 14

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №954

Здравствуйте эксперты!
Помогите мне выйти на верный путь!
у меня есть начальные знания в паскале, С, С++,
но это всё не то. Дело в том что я мечтаю написать свою ОС, хотя-бы ядро, понятно что нужны глубокие знания асемблера,
но как мне всё это дело начать, к чему прежде всего приступить, как организовать работу и т.п., где можно найти подходящую литературу и полезные ресурсы?

Ответ

Здравствуйте, J'eka!
Уважаемый эксперт Dron со своим http://spawnhole.narod.ru/asmos/asmos.html тебе в этом уж точно поможет


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 158

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №952

При записи в файл Паскаль кричит об ошибке.
Помогите.

Ответ

Здравствуйте, Kiran!
Нельзя писать program write;
используй другое имя для программы!! Это же предопределенная процедура!


Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 121

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №957

Приветствую Вас Эксперты!
Не могли бы вы прокоментировать эту программу?

С уважением Влад.

Ответ

Здравствуйте, Влад!
А че тут собснно комментировать? прога складывает два десятичных числа и выводит результат в десятичной форме на экран. Недостатки следующие: нету выхода из программы ;), сумма чисел должна быть не больше 99, ато счетчик "обнуляется".
Вообще резюме такое: ГЛУПО СКЛАДЫВАТЬ В СТОЛБИК, КОГДА ЕСТЬ ЧУДЕСНАЯ КОМАНДА DAA...
Если это не ты писал и просто хочешь разобраться что к чему, то в приложении см. комментарии. Если это ты лично сообразил такую прогу, то чего ты собснно хочешь??? Оптимизировать??? Я могу написать тебе с ходу прогу, выполн. точно такие же действия, как и твоя, но в 3 раза меньше по размеру. Нада - мыль.

Приложение:


Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 159

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №957

оПХБЕРЯРБСЧ бЮЯ щЙЯОЕПРШ!
мЕ ЛНЦКХ АШ БШ ОПНЙНЛЕМРХПНБЮРЭ ЩРС ОПНЦПЮЛЛС?

я СБЮФЕМХЕЛ бКЮД.

Ответ

гДПЮБЯРБСИРЕ, бКЮД!
нАЪГЮРЕКЭМН ОНЯРЮПЮЧЯЭ БКЕГРЭ Б ЬЙСПС ГКНАМННЦН ОПЕОНДЮ хЙ'Ю
бШ МЮБЕПМНЕ МЕЛМНЦН МЕДНОНМЪКХ ЯЛШЯК ОПНХЯУНДЪЫЕЦН. еЯКХ БШ ГЮДЮЕРЕ ДЮММШЕ Б рейярнбнл БХДЕ, РН ДКЪ ОПЮБХКЭМНИ ПЮАНРШ ОПНЦПЮЛЛШ ХУ МЮДН ОПХБЕЯРХ Й дбнхвмн-деяърхвмнлс ОСРЕЛ ОПНЯРНЦН БШВХРЮМХЪ ВХЯКЮ 3030h.
мН ЙЮФЕРЯЪ Б БЮЬЕЛ ОПХЛЕПЕ ОПНЫЕ ХЯОПЮБХРЭ МЮВЮКЭМШЕ ДЮММШЕ.
уНРЪ ЩРН Х МЕНАЪГЮРЕКЭМН, ТСМЙЖХЪ AAA БЯЕ ЯЮЛЮ ОНДВХЯРХР. х МЕ ГЮАШБЮИРЕ ЙНППЕЙРМН ГЮБЕПЬЮРЭ ОПНЦПЮЛЛС.
кХАН, КХАН
mov ah, 4Ch int 20h
int 21h
ю РЕОЕПЭ ЯНАЯРБЕММН ЙНЛЛЕМРЮПХИ.

code segment ; мЮВХМЮЕЛ ЯЕЦЛЕМР ОПНЦПЮЛЛШ
org 100h ; пЕГЕПБХПСЕЛ 256 АЮИР ДКЪ PSP(ДКЪ .com-ОПНЦПЮЛЛШ)
assume cs:code ; оПНЯХЛ ЙНЛОХКЪРНП ОНДЯРЮБХРЭ МЮ ЛЕЯРН cs ДЕИЯРБХРЕКЭМНЕ ГМЮВЕМХЕ ЯЕЦЛЕМРЮ
begin: ; лЕРЙЮ МЮВЮКЮ ОПНЦПЮЛЛШ
mov al,cs:p1+1 ; гЮЦПСФЮЕЛ ЛКЮДЬХИ ПЮГПЪД ОЕПБНЦН ЯКЮЦЮЕЛНЦН
add al,cs:p2+1 ; оПХАЮБКЪЕЛ Й МЕЛС ЛКЮДЬХИ ПЮГПЪД 2-ЦН
aaa ; оПНХГБНДХЛ ДБНХВМН-ДЕЯЪРХВМСЧ ЙНППЕЙЖХЧ
mov cs:sum+1,al; гЮОХЯШБЮЕЛ ПЕГСКЭРЮР

mov al,cs:p1 ; гЮЦПСФЮЕЛ ЯРЮПЬХИ ПЮГПЪД ОЕПБНЦН ЯКЮЦЮЕЛНЦН
adc al,cs:p2 ; оПХАЮБКЪЕЛ Й МЕЛС ЯРЮПЬХИ ФЕ 2-ЦН Я СВЕРНЛ ОЕПЕМНЯЮ
aaa ; нОЪРЭ ЙНППЕЙЖХЪ
mov cs:sum,al ; х НОЪРЭ ЯНУПЮМЪЕЛЯЪ

add byte ptr cs:sum,48 ; оПХАЮБКЪЕЛ Й ДЕЯЪРХВМШЛ ЖХТПЮЛ ЙНД '0',
add byte ptr cs:sum+1,48 ; ВРНАШ ОНКСВХРЭ РЕЙЯРНБНЕ ОПЕДЯРЮБКЕМХЕ
mov dx,offset cs:sum ; оХЬЕЛ ЮДПЕЯ ЯРПНЙХ ДКЪ НРНАПЮФЕМХЪ Б DX
mov ah,9 ; бШБНД ПЕГСКЭРЮРЮ МЮ ЩЙПЮМ
int 21h ; ЯРЮМДЮПРМНИ ТСМЙЖХЕИ DOS
; мЕОКНУН АШ БШИРХ ХГ ОПНЦПЮЛЛШ: int 20h ХКХ ТСМЙЖХЪ 4ch ОПЕПШБЮМХЪ int 21h
p1 db '39' ; еЯКХ ВЕЯРМН, РН ДНКФМН АШРЭ p1 db 3,9
p2 db '12' ; p2 db 1,2
sum db ' ',13,10,'$' ;
code ends ;гЮБЕПЬЮЕЛ ЯЕЦЛЕМР ОПНЦПЮЛЛШ
end begin ;гЮБЕПЬЮЕЛ ОПНЦПЮЛЛС Х ЦНБНПХЛ, ВРН Её БШОНКМЕМХЕ ДНКФМН МЮВХМЮРЭЯЪ Я ЛЕРЙХ begin


Отправил эксперт: юКЕЙЯЮМДП
Эксперт отправил ответов (всего): 1

Экспертная группа: нАЫХЕ БНОПНЯШ ОН ОПНЦПЮЛЛХПНБЮМХЧ МЮ юЯЯЕЛАКЕПЕ ОНД DOS

Вопрос №959

Здравствуйте!
У меня вопрос.Хочу научиться программировать на Ассемблере.С чего начать,как,какие программы нужны.Нечего не знаю помогите.Зарание спасибо.

Ответ

Здравствуйте, Max!
Для этого нужны программы: Masm или Tasm (я предпочитаю Tasm), TD (обычно входит в состав Tasm) и SoftIce...
Masm и Tasm - компиляторы т.е. переводят твой асм в машинный код
Td и SoftIce - "дебагеры" с помощию их ты можешь отлаживать программы

з.ы.: Зайти на этот сайт http://src.fitkursk.ru (Здесь много интересных книг)


Отправил эксперт: Digger (www.digger-mib.chat.ru/freeware.htm - Мой софт :))
Эксперт отправил ответов (всего): 5

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №956

Привет всем !
Вопрос в следующем.
push 0
push offset pos_num
push cnt_of_bytes
push offset erdata
push fhandle
call WriteFile
push offset tempfilename (файл,чей хендл)
call DeleteFileA
Файл удаляется, но запись не успевает произвестись. Это я
узнаю после восстановления файла. Если вторую ф-цию закоментировать,
все пишется. Так вот, как сделать чтобы удаление дожидалось
окончания записи ?
Буду рад любому ответу.
Макс (maxe@mail.kz)

Ответ

Здравствуйте, Макс!
Попробуй вставить проверку т.е. использывать API GetFileSize и если файл изменился до "нужного" размера, то его можно удалить!!


Отправил эксперт: Digger (www.digger-mib.chat.ru/freeware.htm - Мой софт :))
Эксперт отправил ответов (всего): 6

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №955

Здравствуте, эксперты.
Мой вопрос слегка не по вашей теме, но я не знаю куда обратиться.
Недавно поставил крутой комп и выяснил что модуль CRT Pascalя 7 для ДОС не пашет на крутых камнях (ошибка при инициализации процедуры Delay)
В I-nete нашол кучу материала по этой теме, но всё сводилось или к патчам для уже скомпилированых программ (что меня не устраевает), или к советам исправить сам crt а затем перекомпилировать библиотеку. Исправить-то я исправил, а вот перекомпилить не могу: проограмма запрашивает main.obj, коего у меня нету (то ли я - тормоз, то ли Pascal).
Пожалуйста, подскажите, что делать и где взять уже запатченые crt.tpu, либо turbo.tpl.
C уавжением, Олег.

Ответ

Здравствуйте, Олег!

У меня:
zpsoftware@pisem.net


Отправил эксперт: Nik
Эксперт отправил ответов (всего): 116

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №959

Здравствуйте!
У меня вопрос.Хочу научиться программировать на Ассемблере.С чего начать,как,какие программы нужны.Нечего не знаю помогите.Зарание спасибо.

Ответ

Здравствуйте, Max!

1) На SUBSCRIBE.RU есть рассылка comp.soft.prog.faq
2) Купи хорошую книгу, например, Зубкова, или скачай книгу (не помню
автора :( ) с сайта www.kalashnikoff.ru
3) Там же (см. пункт 2) есть MASM, TASM, отладчики и примеры программ.


Отправил эксперт: Nik
Эксперт отправил ответов (всего): 117

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

В избранное