![]() |
eXeL@B —› Программирование —› ASM to FASM (DOS) |
Посл.ответ | Сообщение |
|
Создано: 05 мая 2007 01:05 · Поправил: vitalya2903 · Личное сообщение · #1 Вобщем написал я прогу на Асме под DOS. Писал в HIEW'e. А теперь интересно как такую же под DOS написать в FASM'e. Конкретно интересуют строки по адресам: 0000000E, 00000012, 00000025, 0000002C, 0000003D - FASM'y они почему-то не нравятся. И джампы, как их писать? тоже jmp адрес, или нужно использовать что-то типа - Start: и прыгать на него. 00000000: mov ah,010 00000002: int 016 00000004: mov ah,000 00000006: mov al,00D 00000008: int 010 0000000A: mov ah,010 0000000C: int 016 0000000E: mov cx,[0150] 00000012: mov dx,[0152] 00000016: inc cx 00000017: mov [0150],cx 0000001B: mov ah,00C 0000001D: mov al,004 0000001F: mov cx,cx 00000021: mov dx,dx 00000023: int 010 00000025: cmp b,[0150],020 0000002A: jne 00000000E 0000002C: cmp b,[0152],020 00000031: je 000000036 00000033: jmp 00000003C 00000036: mov ah,010 00000038: int 016 0000003A: int 020 0000003C: inc dx 0000003D: mov [0152],dx 00000041: mov cx,00000 00000044: jmp 00000000E 00000047: add [bx][si],al 00000049: add [bx][si],al 0000004B: add [bx][si],al 0000004D: add [bx][si],al 0000004F: add [bx][si],al 00000051: add [bx][si],al 00000053: add [bx][si],al 00000055: add [bx][si],al З.Ы. Прога сама-дрянь, просто интересен сам принцип. ![]() |
|
Создано: 05 мая 2007 08:22 · Поправил: tnt17 · Личное сообщение · #2 0000000E: mov cx,[0150] на mov cx,word [0150] ;предполагается что по адресу 0150 в программе находится некоторое слово 00000012: mov dx,[0152] -> mov dx,word [152] 00000025: cmp b,[0150],020 -> cmp byte [0150],020 ... 0000003D: mov [0152],dx -> mov word [0152],dx Насчет джампов, если переход идет на адрес +- 127б от текущего, то используются короткие переходы(относительные), если более, то длинные, непосредственно на сам адресс последующей команды. прога вроде .com формата, все просто, вот пример такой программы: ; fasm example of writing 16-bit COM program org 100h ; code starts at offset 100h use16 ; use 16-bit code display_text = 9 xor ax,ax mov al,byte [hello] ; в аl - первый байт строки cmp al, 'H' ;либо проще: cmp byte[hello],'H' \ jnz .exit jnz .exit mov ah,display_text mov dx,hello int 21h .exit: ; если метка обьявляется с точкой,то она является локальной int 20h hello db 'Hello world!',24h ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 05 мая 2007 13:53 · Поправил: MACKLIA · Личное сообщение · #3 vitalya2903 пишет: Писал в HIEW'e Ну этож мазохизм чистый ![]() vitalya2903 мне кажется ,что если изучать Асм под DOS то бери MASM. Посмотри уроки Калашникова http://www.kalashnikoff.ru/Assembler/ http://www.kalashnikoff.ru/Assembler/ там есть MASM 6.12(или 6.11) http://www.kalashnikoff.ru/Assembler/prog/ http://www.kalashnikoff.ru/Assembler/prog/ . ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 05 мая 2007 14:04 · Личное сообщение · #4 MACKLIA пишет: Ну этож мазохизм чистый Не согласен, для ознакомления с асмом и системным программированием в самый раз. vitalya2903 Никого не слушай, продолжай делать то, что начал ) Эта статья тебе в помощь: wasm.ru/article.php?article=1022001 На форуме board.flatassembler.net/ найдешь практически все, что неоходимо для успешного знакомства с ассемблером и fasm в часности. ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 05 мая 2007 14:12 · Личное сообщение · #5 |
|
Создано: 05 мая 2007 14:41 · Личное сообщение · #6 tnt17 пишет: .exit: ; если метка обьявляется с точкой,то она является локальной Поправьте если ошибаюсь, но, кажется, метка будет локальной, только если над ней есть глобальная метка. vitalya2903, вообще, конечно, на Асме можно использовать непосредственные адреса вместо имён, но исходники так писать крайне неудобно. Если уж переносить из формата дизассемблера Hiew'a, то сразу используй именованные переменные (вместо 150,152) и метки для всех переходов (см. пример tnt17). А будет ли это MASM или FASM, на данной стадии не так важно. ----- Всем привет, я вернулся ![]() |
|
Создано: 05 мая 2007 15:49 · Личное сообщение · #7 Из доки по фасму: Метка, имя которой начинается с точки, обрабатывается как локальная, и её имя прикрепляется к имени последней глобальной метки (с названием, начинающемся с чего угодно, кроме точки) для создания полного имени этой метки. Так, вы можете использовать короткое имя (начинающееся с точки) где угодно перед следующей глобальной меткой, а в других местах вам придется пользоваться полным именем. Метки, начинающиеся с двух точек - исключения. Они имеют свойства глобальных, но не создают новый префикс для локальных меток. Bitfry пишет: Поправьте если ошибаюсь, но, кажется, метка будет локальной, только если над ней есть глобальная метка Подразумевается что она локальная для некой "абстрактной" глобальной метки. Почему я назвал ее абстрактоной - да просто потому что это возможно переменная среды компиляции,и имени ее незнаю.Возможно что у нее и нет имени,т.е. она остается абстракцией ) ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 05 мая 2007 16:18 · Личное сообщение · #8 Хух... Проанализировав всё что вы мне посоветовали вот что у меня получилось: org 100h mov ah,10h int 16h mov ah,00h mov al,0Dh int 10h mov ah,010h int 16h .beg: mov cx,word[ccx] mov dx,word[cdx] inc cx mov word[ccx],cx mov ah,0Ch mov al,04 mov cx,cx mov dx,dx int 10h cmp word[ccx],020 jne .beg cmp word[cdx],020 je .ext jmp .chdx .ext: mov ah,010h int 16h int 20h .chdx: inc dx mov word[cdx],dx mov cx,00 mov word[ccx],00 jmp .beg ccx dw 00 cdx dw 00 Всё вроде как работает. Или может я где-то накосячил? tnt17 Спасибо за помощь, инфа на сайтах интересная. Bitfry пишет: А будет ли это MASM или FASM, на данной стадии не так важно. Да я в скором времени собираюсь переходить на программирование под WIN32 и буду использовать FASM так как его очень многие советуют, поэтому и осваиваюсь в нужной среде. З.Ы. Может кто-нибудь посоветует какую-то книгу об Асме под DOS и WIN32, что бы её можно было по почте заказать. А то в монитор смотреть уже глаза болят ![]() ![]() |
|
Создано: 05 мая 2007 16:23 · Личное сообщение · #9 tnt17 пишет: Не согласен, для ознакомления с асмом и системным программированием в самый раз Ну если в течении первых 2-3х дней,а если ты пишешь программы в HIEW'e то это твои проблемы. tnt17 пишет: Эта статья тебе в помощь: wasm.ru/article.php?article=1022001 Для каждого человека естественно желание получать необходимую информацию на своем родном языке ,так что давай ссылки на рускоязычные сайты. Ke Kwan пишет: вот именно, что кажется. лучше фасма для таких вещей ничего не придума Ну это уж каму как,небудем разводить спор какой лучше, т.к. никчему кроме флуда это не приведёт.Пусть vitalya2903 попробует оба ,а там уж сам определится. ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 05 мая 2007 16:57 · Личное сообщение · #10 ...есть невероятно потрясающе охуенно заебатая книга Виктора Юрова: "ASSEMBLER Специальный справочник" ...это именно справочник по языку... ...а остальные все "Бесстыжеры" смело факай... там много воды... ...а писать надо учиться по туторам и екзамплам реальных и работающих прог... ...и все то, что лежит на полках по 792 рубля за бэст - это будет деньги на ветер, лучше ты их пропей или проеби... ...а сайтов хороших есть много, там все найдешь... ![]() |
|
Создано: 05 мая 2007 17:06 · Поправил: tnt17 · Личное сообщение · #11 vitalya2903 Если будут вопросы, или планируешь в будующем программировать, в том числе на fasm, то милости просим: irc://phoenix.street-creed.com/ #fasm Ирц клиент http://www.kvirc.ru/ http://www.kvirc.ru/ или каким пользуешься) Насчет книги советую Финогенов "Основы языка ассемблер", как для начала сойдет,да и как справочник для начинающего в самый раз. Либо Пирогов, вот только названия не помню,что-то типа "программирование на языке ассемблер". // точное название Assembler учебный курс. MACKLIA Не всегда на русском можно найти нужную литературу, пора уже привыкнуть и выучить хотябы на уровне "чтение со словарем" английский. ) ----- – Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями... ![]() |
|
Создано: 05 мая 2007 18:25 · Личное сообщение · #12 ... да не покупай ты книги "Для новичков" вообще ни по какой теме... ..там пиздеж и бздеж один... таких статеек дохуища-аъ, стяни, распечатай и вперед, а нахуя деньги барыгам отдавать, они все пидоры и живут только наебками... ...покупай только то, что НЕОБХОДИМО, остальное - нахуй, ....кстати, я многие книжки прямо в магазине штудирую, оттуда и знаю, что по большинству там больше для объема насрано /время ща такое, ПРОДАВАТЬ НАДА, НАХ/, я сам таких высрать могу хуеву сраную гору нахер, но будет ли толк от такого чтива, да и вообще не сильно ведись на советы, книга-книгой, а мозгой двигай.... ...а Пирогов хоть очень умный, но книг его лучше не покупай... ![]() |
|
Создано: 05 мая 2007 19:03 · Поправил: MACKLIA · Личное сообщение · #13 tnt17 пишет: MACKLIA Не всегда на русском можно найти нужную литературу Невсегда ,но на начальном уровне нужна желательно именно на русском,чтобы разбираться только с программипрованием,без прибавления к этому изучения языка(кстати я неговорил что его незнаю ). ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 05 мая 2007 19:22 · Личное сообщение · #14 |
![]() |
eXeL@B —› Программирование —› ASM to FASM (DOS) |