Важная информация

User Tag List

Страница 1 из 6 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 55

Тема: Ассемблер под Windows глазами Спектрумиста

  1. #1
    Junior
    Регистрация
    31.03.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    20
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Ассемблер под Windows глазами Спектрумиста

    Здравствуйте.

    Выставляю демонстрационный фрагмент книжки моей мечты. Это примерно треть от задуманного. остальное пока в разработке.
    Цель - создать короткие универсальные программы под Windows на ассемблере и машинных кодах в стиле старых книжек по ZX-Spectrum. Естественно, вся книга пронизана тематикой Спектрума, ну и разного рода стебом (без этого пока не получается).
    Программы специально адаптированы для тех, кто хоть немного умеет программировать на Ассемблере Z80. Поэтому вникнуть в тему сможете за считанные часы. Главное запомнить, что:

    JP = JMP
    JP Z = JZ
    JP NZ = JNZ и т д.
    LD A, x = MOV EAX, xxxx
    (IX+xx) (IY+xx) = [EDI+xxxx][ESI+xxxx]
    RRCA, RLCA = SHR,SHL
    ........
    Ну и может парочка еще, которые имеют аналоги.
    Все остальные, как PUSH, CALL, RET и др. абсолютно идентичны

    Все программы в книге простейшие, эксклюзивные и визуальные. Каждая программа, позволяет увидеть результат на экране. Все подробно разжевано и проиллюстрировано, как и в прошлых своих работах.
    Только одно но: За неимением мощного компьютера, все программы тестировались под WINDOWS XP SP2! поэтому внимательно смотрите, пойдут ли они на других системах. Но вроде должны.
    Остальное вы прочтете внутри.

    Ссылка на книгу: Win-ZX Assembler-2017
    Ссылка на примеры: https://drive.google.com/file/d/0B8k...lfaUJTSUk/view
    ПАРОЛЬ: Assembler2017

    Внимание: ввиду специфичности программ, большинство браузеров и антивирусов считают примеры вредоносными, так как написаны они по принципу ZX-SPECTRUM с прямым доступом к исполняемому коду, в адресное пространство и модификацией заголовков. Чтобы избежать блокировок на скачивание и прочих недоразумений, пришлось ставить пароль. Все примеры копировались из созданного pdf перед публикацией и проверялись на работоспособность.
    Ну и прошу прощения за орфографию и опечатки. Пишу как умею.

    С уважением,
    Юрий

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Помню когда после Z80 решил ознакомиться со старшим братом x86, то с удивлением обнаружил что у Интела нет таких команд как "CALL Z, addr", "RET Z" и подобных. Мне это показалось очень странным ))

  4. #3
    Master
    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    957
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    с удивлением обнаружил что у Интела нет таких команд как "CALL Z, addr", "RET Z" и подобных. Мне это показалось очень странным ))
    А зачем они в этой архитектуре, когда есть для текущего сегмента JCC/JCxZ/JECxZ и управления цикла LOOPE/LOOPX/LOOPNE/LOOPNZ как примитивная DJNZ ))

  5. #4
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    - - - Добавлено - - -

    Цитата Сообщение от vlad Посмотреть сообщение
    А зачем они в этой архитектуре, когда есть для текущего сегмента JCC/JCxZ/JECxZ и управления цикла LOOPE/LOOPX/LOOPNE/LOOPNZ как примитивная DJNZ ))
    например удобно печатать нультерминированные строки:
    Код:
    print_string:
      ld a,(hl)
      or a
      ret z
      call print_char
      inc hl
      jr print_string

  6. #5
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Неуместное сравнение Спектрума с виндой: события, ресурсы,окна и многое другое к Спектруму неприменимы.

  7. #6
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,158
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ещё как всё это к Спектруму применимо. События: прерывание IM 2 наступило. Ресурсы: спрайты, иконки, курсоры. Окна: где их нет? Ещё на Laser Basic их делали.

    Пользуясь случаем, хочу поблагодарить топикстартера. Весьма интересно получается!

  8. #7
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    События: прерывание IM 2 наступило
    да ну? окну могут придти сообщения: юзер кликнул мышкой, окно свернуто в панель задач, сработал таймер и т.д. Если в качестве gui используются диалоговое окно, то от его форм тоже приходят сообщения.
    Ресурсы могут быть и другими.


    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Пользуясь случаем, хочу поблагодарить топикстартера. Весьма интересно получается!
    все это поверхностно. вызов функции с помощью передачи параметров на стеке используются в Borland Tasm 5.0, в Masm32 удобнее вызывать invoke.

    За пример GetOpenFileName надо убивать на месте, без суда и следствия. Некоторые API-функции требуют в качестве параметра ссылку на структуры. Поэтому заполнить данные, как приведено в книге - ламерство чистейшей воды.

    Код:
    ;у меня структура объявлена в исходнике, т.к. не было windows.inc под рукой
    
    OPENFILENAME struct
    
    lStructSize		dd	?;size of this shit in bytes = 20*4
    hwndOwner		dd	?;owner of OPEN_dialog
    hInstance		dd	?;
    lpstrFilter		dd	?;"All Files",0,"*.*",0
    lpstrCustomFilter	dd	?;NULL
    nMaxCustFilter		dd	?;NULL
    nFilterIndex		dd	?;NULL
    lpstrFile		dd	?;filename buffer,must be start with 0
    nMaxFile		dd	?;must be at least 256 bytes long
    lpstrFileTitle		dd	?;NULL
    nMaxFileTitle		dd	?;NULL
    lpstrInitialDir		dd	?;NULL - current dir
    lpstrTitle		dd	?;Dlg_title, m.b. NULL
    Flags			dd	?;poka NULL
    nFileOffset		dw	?;NULL - shows offset of file name in path
    nFileExtension		dw	?;NULL - " - file ext in path
    lpstrDefExt		dd	?;NULL
    lCustData		dd	?;message for Hook Procedure
    lpfnHook		dd	?;NULL
    lpTemplateName		dd	?;NULL
    
    OPENFILENAME ends
    
    .data
    file_open	OPENFILENAME <19*4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>
    
    .code
    
    ;где-то в процедуре программы:
    
    	mov	eax,dlg_hwnd
    	mov	dword ptr file_open.hwndOwner,eax
    	mov	eax,hinst
    	mov	file_open.hInstance,eax
    	mov	file_open.lpstrFilter,offset flt_open_name
    	mov	file_open.lpstrFile,offset tmpbuf1
    	mov	file_open.nMaxFile,03FFh
    	mov	file_open.lpstrDefExt,0
    	mov	file_open.Flags,OFN_HIDEREADONLY+OFN_ALLOWMULTISELECT+OFN_EXPLORER
    	mov	byte ptr tmpbuf1,0
    	mov	file_open.lpstrCustomFilter,0
    	mov	file_open.nMaxCustFilter,1023-12
    	mov	file_open.lpstrDefExt,0
    	
    	call	GetOpenFileNameA,offset file_open
    	test	eax,eax
    	je	prog_end

    Далее, секции программы могут быть разными:
    .data? - неинициализированные данные
    .data - данные, заданные заранее - сообщения и тд
    .code - сам код

    Все излюбленные трюки кодеров на Z80 идут лесом - нельзя записывать данные в секцию .code, и вообще много чего нельзя.


    В общем, я начинал с книги Зубкова, потом, когда был доступ в интернетам, с Iczelion'a(есть переводы на русском). Да и сейчас, я знаю, что не изучил все нюансы.

    И еще: Masm32 позволяет массу вкусностей: объявление локальных переменных (local/assume), и условные конструкции IF

  9. #8
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    656
    Поблагодарили
    511 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Шынни Посмотреть сообщение
    Все излюбленные трюки кодеров на Z80 идут лесом - нельзя записывать данные в секцию .code, и вообще много чего нельзя.
    ФТопку тогда этот ПЦ!!!!!!

    - - - Добавлено - - -

    Цитата Сообщение от Шынни Посмотреть сообщение
    надо убивать на месте
    может нужна тема
    о *****кодинге на ПЦ под шминдофс
    и как в него вступить

  10. #9
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    241
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хорошая книга, для старта - в самый раз.

  11. #10
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ФТопку тогда этот ПЦ!!!!!!
    вот оно - z80 ГМ. Если подумать, то это как раз и неплохо.


    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ожет нужна тема
    о *****кодинге на ПЦ под шминдофс
    и как в него вступить
    только не вляпайся

Страница 1 из 6 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 23
    Последнее: 15.02.2017, 20:55
  2. Эмулятор под Windows-7
    от XOUT в разделе Эмуляторы
    Ответов: 20
    Последнее: 04.09.2010, 02:42
  3. Mined Out. Аналоги под Windows?
    от Vitalik в разделе Игры
    Ответов: 10
    Последнее: 30.06.2005, 00:23

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •