Сейчас на форуме: hgdagon, asfa (+5 невидимых)

 eXeL@B —› Программирование —› ASM to FASM (DOS)
Посл.ответ Сообщение

Ранг: 15.4 (новичок)
Активность: 0.020
Статус: Участник

Создано: 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


З.Ы. Прога сама-дрянь, просто интересен сам принцип.




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 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

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 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/ .

-----
Что один человек сделал , другой всегда сломать может...





Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 05 мая 2007 14:04
· Личное сообщение · #4

MACKLIA пишет:
Ну этож мазохизм чистый

Не согласен, для ознакомления с асмом и системным программированием в самый раз.
vitalya2903
Никого не слушай, продолжай делать то, что начал )
Эта статья тебе в помощь:
wasm.ru/article.php?article=1022001

На форуме board.flatassembler.net/ найдешь практически все, что неоходимо для успешного знакомства с ассемблером и fasm в часности.

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 7.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 мая 2007 14:12
· Личное сообщение · #5

MACKLIA пишет:
мне кажется ,что если изучать Асм под DOS то бери MASM.

вот именно, что кажется. лучше фасма для таких вещей ничего не придумали



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 05 мая 2007 14:41
· Личное сообщение · #6

tnt17 пишет:
.exit: ; если метка обьявляется с точкой,то она является локальной

Поправьте если ошибаюсь, но, кажется, метка будет локальной, только если над ней есть глобальная метка.

vitalya2903, вообще, конечно, на Асме можно использовать непосредственные адреса вместо имён, но исходники так писать крайне неудобно.
Если уж переносить из формата дизассемблера Hiew'a, то сразу используй именованные переменные (вместо 150,152) и метки для всех переходов (см. пример tnt17).

А будет ли это MASM или FASM, на данной стадии не так важно.

-----
Всем привет, я вернулся





Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 05 мая 2007 15:49
· Личное сообщение · #7

Из доки по фасму:
Метка, имя которой начинается с точки, обрабатывается как локальная, и её имя прикрепляется к имени последней глобальной метки (с названием, начинающемся с чего угодно, кроме точки) для создания полного имени этой метки. Так, вы можете использовать короткое имя (начинающееся с точки) где угодно перед следующей глобальной меткой, а в других местах вам придется пользоваться полным именем. Метки, начинающиеся с двух точек - исключения. Они имеют свойства глобальных, но не создают новый префикс для локальных меток.

Bitfry пишет:
Поправьте если ошибаюсь, но, кажется, метка будет локальной, только если над ней есть глобальная
метка


Подразумевается что она локальная для некой "абстрактной" глобальной метки. Почему я назвал ее абстрактоной - да просто потому что это возможно переменная среды компиляции,и имени ее незнаю.Возможно что у нее и нет имени,т.е. она остается абстракцией )

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 15.4 (новичок)
Активность: 0.020
Статус: Участник

Создано: 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, что бы её можно было по почте заказать. А то в монитор смотреть уже глаза болят В инете нашел кучу книг и пишут что все прямо бестселлеры, но на самом деле кто его знает...




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 05 мая 2007 16:23
· Личное сообщение · #9

tnt17 пишет:
Не согласен, для ознакомления с асмом и системным программированием в самый раз

Ну если в течении первых 2-3х дней,а если ты пишешь программы в HIEW'e то это твои проблемы.

tnt17 пишет:
Эта статья тебе в помощь:
wasm.ru/article.php?article=1022001

Для каждого человека естественно желание получать необходимую информацию на своем родном языке ,так что давай ссылки на рускоязычные сайты.

Ke Kwan пишет:
вот именно, что кажется. лучше фасма для таких вещей ничего не придума

Ну это уж каму как,небудем разводить спор какой лучше, т.к. никчему кроме флуда это не приведёт.Пусть vitalya2903 попробует оба ,а там уж сам определится.

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 29.2 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 05 мая 2007 16:57
· Личное сообщение · #10

...есть невероятно потрясающе охуенно заебатая книга Виктора Юрова:
"ASSEMBLER
Специальный
справочник"
...это именно справочник по языку...
...а остальные все "Бесстыжеры" смело факай...
там много воды...
...а писать надо учиться по туторам и екзамплам реальных и работающих прог...
...и все то, что лежит на полках по 792 рубля за бэст - это будет деньги на ветер,
лучше ты их пропей или проеби...
...а сайтов хороших есть много, там все найдешь...




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 05 мая 2007 17:06 · Поправил: tnt17
· Личное сообщение · #11

vitalya2903
Если будут вопросы, или планируешь в будующем программировать, в том числе на fasm, то милости просим: irc://phoenix.street-creed.com/ #fasm Ирц клиент http://www.kvirc.ru/ http://www.kvirc.ru/ или каким пользуешься)
Насчет книги советую Финогенов "Основы языка ассемблер", как для начала сойдет,да и как справочник для начинающего в самый раз. Либо Пирогов, вот только названия не помню,что-то типа "программирование на языке ассемблер". // точное название Assembler учебный курс.
MACKLIA
Не всегда на русском можно найти нужную литературу, пора уже привыкнуть и выучить хотябы на уровне "чтение со словарем" английский. )

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...




Ранг: 29.2 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 05 мая 2007 18:25
· Личное сообщение · #12

... да не покупай ты книги "Для новичков" вообще ни по какой теме...
..там пиздеж и бздеж один...
таких статеек дохуища-аъ, стяни, распечатай и вперед, а нахуя деньги барыгам
отдавать, они все пидоры и живут только наебками...
...покупай только то, что НЕОБХОДИМО, остальное - нахуй,
....кстати, я многие книжки прямо в магазине штудирую, оттуда и знаю, что по большинству
там больше для объема насрано /время ща такое, ПРОДАВАТЬ НАДА, НАХ/,
я сам таких высрать могу хуеву сраную гору нахер, но будет ли толк от такого чтива,
да и вообще не сильно ведись на советы, книга-книгой, а мозгой двигай....
...а Пирогов хоть очень умный, но книг его лучше не покупай...




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 05 мая 2007 19:03 · Поправил: MACKLIA
· Личное сообщение · #13

tnt17 пишет:
MACKLIA
Не всегда на русском можно найти нужную литературу

Невсегда ,но на начальном уровне нужна желательно именно на русском,чтобы разбираться только с программипрованием,без прибавления к этому изучения языка(кстати я неговорил что его незнаю ).

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 15.4 (новичок)
Активность: 0.020
Статус: Участник

Создано: 05 мая 2007 19:22
· Личное сообщение · #14

drunk_master пишет:
пиздеж и бздеж один, дохуища-аъ, нахуя деньги барыгам, все пидоры живут наебками, остальное - нахуй, насрано, высрать могу хуеву сраную гору нахер

Ну ты даёшь


 eXeL@B —› Программирование —› ASM to FASM (DOS)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати