Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2008, 15:03   #1
gtn_freewlkr
 
Регистрация: 28.09.2008
Сообщений: 8
По умолчанию ассемблер и АМД

Здравствуйте! На многих форумах, во многих статьях читал и видел, что по большому счёту нет разницы, для какого процессора пишется программа на ассемблере - для Интела или для АМД.. АМД, пишется там, т.н. Интел-совместимый и кроме специфических функций различий нет..
Я только начал изучение ассемблера. Основная книжка - учебник Зубкова(2000), компилятор - ТАСМ. Со всем разобрался сам, нашёл и настроил. Написал первую программу - работает..
..но не так..
вместо однократного "Hello World!" пишет "Жеllo o=!World" несколько раз подряд в перемешку с какой-то ещё ересью.. Досадно. У меня АМД 3000+. действительно ли это из-за процессора, или могут быть иные причины некорректной работы программы? Пожалуйста, помогите разобраться.. Спасибо
gtn_freewlkr вне форума Ответить с цитированием
Старый 28.09.2008, 15:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я лично уверен на 99.99 %, что это НЕ из-за процессора.
Лучше приведите листинг программы...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.09.2008, 16:00   #3
gtn_freewlkr
 
Регистрация: 28.09.2008
Сообщений: 8
По умолчанию

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

.model tiny
.code
org 100h
start: mov ah, 9
mov dx, offset message
int 21h
ret
message db "Hello World!", 0Dh, 0Ah, '$'
end start

мне уже самому кажется, что программка очень простая, однако сопоставить результат с кодом у меня ну никак не получается..
gtn_freewlkr вне форума Ответить с цитированием
Старый 28.09.2008, 19:04   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Всё должно работать.

Tasm file.asm
Tlink /t file.obj
пыщь
JTG вне форума Ответить с цитированием
Старый 28.09.2008, 19:57   #5
gtn_freewlkr
 
Регистрация: 28.09.2008
Сообщений: 8
По умолчанию

JTG,
линковал я не так.. может, по неопытности, но зачем /t после tlink?
честно говоря, я компилирую посредством bat - файла, в нём пишу:

..\bin\tasm file.asm
..\bin\tlink file.obj

запускаю его, получается exe-шник. работает. но выдаёт то, что я и писал: строчек шесть искажённого "Hello World!" плюс несколько непонятных символов вразброс. Может, что-то с системой? или суть именно в /t ? Хочется разобраться всё-таки.. Может, нужно проследить, как программа работает по шагам, но до этого я тоже пока не дошёл. Есть такая вещь, как TD - turbo debugger, как я понял, но как ей пользоваться - ещё не уяснил. Подскажите, кто чем, как говорится Спасибо
gtn_freewlkr вне форума Ответить с цитированием
Старый 28.09.2008, 20:09   #6
gtn_freewlkr
 
Регистрация: 28.09.2008
Сообщений: 8
По умолчанию

ага, господа.. добавил в тот же bat - ничек ту самую /t.. сделался ещё один файлик, обозначающийся не просто, как приложение(как до того), а как приложение MS-DOS.. запустил - окошечко открылось и закрылось.. немного анализа и самокопания - убрал из текста программы строчку

ret

.. вуаля! окошечко открывается, пишется красивое и правильное "Hello World!" .. но после несколько слов:

Ошибка при выделении памяти
Не удаётся загрузить COMMAND.COM, система остановлена.. Окошечко не исчезает, всё видно, но, опять-таки, видимо, что-то не так.. Прокомментируйте, пожалуйста, ситуацию юному натуралисту
-что значит /t ?
-как сделать так, чтобы окошечко не закрывалось(чтобы можно было видеть результат выполнения), но и не было ошибки
-ну и в общих словах: что вообще происходит?
ценю ваше участие
gtn_freewlkr вне форума Ответить с цитированием
Старый 28.09.2008, 20:41   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) вы в исходнике используете модель памяти программы типа COM (читайте в вашей книжке отличия программ *.COM от программ *.EXE)!
2) ключик /T как раз и создаёт файлы формата *.COM
3) работать надо строго в командной строке
Пуск- Программы - Стандартные - Командная строка
(ну, или, хотя бы их файлового менеджера (типа FAR)
4) то, что вы убрали RET - вы же выход из программ и возрат в MS DOS убрали. вот и выходит ошибка!!!

у всех нормальных программ командной строки есть парамете /?
т.е. запускаете TLINK /?
и читаете, что означают ключи и параметры!

Последний раз редактировалось rpy3uH; 29.09.2008 в 10:56.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.09.2008, 20:59   #8
gtn_freewlkr
 
Регистрация: 28.09.2008
Сообщений: 8
По умолчанию

понятно-понятно..
просто, я использую bat, поскольку мне так удобнее: получившиеся файлы располагаются в той же директории, что и bat-ник.. можно прописать путь для выходных файлов, на сколько я понимаю, но мне этого сделать не удалось(не нашёл, где..) получилось только прописать путь, который позволяет писать в командной строке просто tasm и tlink без указания путей к ним. скажите, почему вы так категоричны в использовании командной строки? и оставшийся вопрос: да, я понял, что убрав ret, я убрал существенную часть кода, но на данном этапе это был единственный выход.. как же сделать так, чтобы программа не закрывалась сразу, чтобы можно было увидеть результат её работы?
про ключик /t нигде ничего не видел, так что информация очень полезная, спасибо.

кстати сказать, когда запускаю помощь, TLINK /? окошко открывается тоже только на мгновение и сразу закрывается.. видимо, я уже не понимаю какой-то принципиальной вещи, не могли бы вы и это пояснить?

Последний раз редактировалось rpy3uH; 29.09.2008 в 10:57.
gtn_freewlkr вне форума Ответить с цитированием
Старый 28.09.2008, 21:30   #9
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

TLINK - консольное WIN32 приложение, поэтому вам и советуют запускать его из консольного файлового менеджера (типа FAR), чтобы TLINK /? при своём выполнении унаследовал консоль файлового менеджера и вывел результат именно туда и вы бы смогли его увидеть.
Ну или можно так написать в командной строке C:\TASM\BIN\TLINK /? > C:\TASM\BIN\help.txt и смотрите файл help.txt, справка будет там.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 28.09.2008, 22:02   #10
gtn_freewlkr
 
Регистрация: 28.09.2008
Сообщений: 8
По умолчанию

отлично, я всё понял, всё прочитал, буду двигаться дальше. Спасибо всем, кто отписывался, вы мне очень помогли. Надеюсь, всё, что здесь написано, будет полезно не только мне. Удачи
gtn_freewlkr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ассемблер farxad Помощь студентам 6 11.09.2016 14:19
Ассемблер для ARM Pavlik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 11.04.2008 15:30
Ассемблер InTest Фриланс 1 12.12.2007 02:05
USB 2.0. ассемблер wiskas Помощь студентам 1 22.02.2007 01:30