Windows Assembly Site |Новости| |О проекте| |Неофиту| |Эѳир| |Ссылки| |Ѳорум|

Комментарии к статье «Программирование на Ассемблере под DOS»

· Статьи
· Исходники
· Инструменты
· Документация

Статьи:
· Низкоуровневое программирование для дZенствующих
· Уроки Iczelion'а
· COM и OOP
· DirectX/OpenGL
· Секреты Win32
· Оптимизация
· Компиляторы
· Защита от отладки
· Вирусология
· Безопасность
· Сеть
· Программерский дZен
· Форматы файлов
· Процессоры
· Диски, приводы и электроника
· BIOS/CMOS
· DOS навсегда!
· Исследование программ
· Защищенный режим
· Алгоритмы
· Консоли и КПК
· Байт-код
· Linux/Unix
· Assembler.Ru
· Разное

Wetlan /2003-01-28 11:15:20/
Простенько и понятненько. Здорово, жаль, что в Мин. образования не понимают таких простых вещей!
Иван /2003-03-14 11:10:25/
Замечательный труд!
Единственно пришлось подзенствовать над org 100 в тексте проги :))
пассажир /2003-07-29 16:13:17/
блин :(

E:\oleg\Studing\ASM\tutorials\sergio>tasm proga_1.asm
Turbo Assembler Version 4.0 Copyright (c) 1988, 1993 Borland International

Assembling file: proga_1.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 454k


E:\oleg\Studing\ASM\tutorials\sergio>tlink /t PROGA_1.OBJ
Turbo Link Version 4.01 Copyright (c) 1991 Borland International
Fatal: Cannot generate COM file : invalid initial entry point address
пассажир /2003-07-29 16:24:15/
опечатка оказывается
в первом листинге написано
"org 100"
а нужно
"org 100h"

а вообще спасибо... редкое сочетание приятного и полезного :)
Gor /2003-07-30 14:53:19/
А где достать прогу TLINK?
Кругом искал не нашел, ни у вас, ни в сети.
Без нее, как я понял, как-то не получится ничего сделать.
webbol /2004-08-31 00:55:53/
to Gor

хотя volodya всячески пытается отговарить нас
"Если новичок - лучше берите MASM32 или FASM" от использования кривого и кoсого и ...

...но мы все же, как упоминает FatMoon "Русские сначала придумывают себе препятствия, а потом их преодолевают.
(известный факт)".
Поэтому качай http://www.wasm.ru/tools/7/tasm5plus.zip
и становися ивалидо... тфу, ветераном
volodya /2004-08-31 05:21:01/
Ну что ж :) Именно для таких инвалидо..., тьфу, ветеранов :), у нас TASM и положен :)
Rryk /2007-01-12 22:23:30/
Ведь в статье описано использование комплилятора TASM 4.1. Пробовал компилить и под FASM и под MASM - не работает. Только под TASM 4.1 и пошло. Поэтому многие пытаются использовать TASM...

FASM 1.67 - ошибка
==================
flat assembler version 1.67.18 (1082926 kilobytes memory)
asm/proga1.asm [2]:
CODESG segment
error: illegal instruction.

MASM 8.2 - ошибка
=================
Assembling: D:\alive\fasm\asm\proga1.asm
D:\alive\fasm\asm\proga1.asm(36) : warning A4023: with /coff switch, leading underscore required for start address : MAIN

TASM 4.1 - нормально
====================
Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International

Assembling file: proga1.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 453k

Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Rryk /2007-01-12 22:31:53/
Чуть не забыл сказать - огромное спасибо за эти вводные статьи. Написано понятно, без лишних деталей и с юмором. Побольше бы таких людей.

Если кто ищет TASM 4.1 (я не сразу его нашел) - пишите на cooper[AT]asu[DOT]ntu-kpi[DOT]kiev[DOT]ua.
Sergio_O /2007-04-19 17:53:10/
Всем привет. У меня вопрос автору статьи или тому, кто сможет мне помочь в моём вопросе. Но для начала хочу выразить огромное восхищение тем, как доступно она написана (особенно момент с описанием работы команды SHR=)). Так же, тем кто искал, вот Tasm 4.1: http://infostore.org/info/3077616 - выложен на моём акке инфостора. Итак, народ.
Касательно процедуры WRITE_HEX. Со всем разобрался, всё протестил, но есть один момент. После смещения байтов (для вывода старшего разряда DL) мы сразу вызываем процедуру WRITE_HEX_DIGIT. НО. Исходя из того, как она (WRITE_HEX_DIGIT) написана, требуется, чтобы старший разряд был равен нулю. А мы в данном случае старший разряд НЕ обнуляем (посредством AND) перед вызовом. С другой стороны, я тестил с разными значениями DL, и всё работает. Обьясните пожалуйста что к чему, я начинающий дZен, но мне очень хочется со всем детально разобрацца =). Вот мой пример, после которого у меня возник этот вопрос.

Пусть DL = 21h = 0010 0001b.
После сдвига DL = 0001 0010b.
И тут мы СРАЗУ (не обнуляя 0001 "AND DL,0Fh") вызываем процедуру WRITE_HEX_DIGIT. И тем не менее всё работает, в итоге выводит 21. Почему, чёрт возьми, если WRITE_HEX_DIGIT работает только если старший разряд не равен 0000b? =))
REx07 /2007-06-27 00:46:05/
Уж не знаю сколько времени прошло после вопроса, но вдруг комуто пригодится. Так вот, весь дZен со смещением заключается вот в этих строчках:

1: mov cl,4
2: shr dl,cl
3: call WRITE_HEX_DIGIT

Дело в том, что смещение происходит не 1 раз, а 4! Т.е. в 1-ой строчке мы присваиваем значение 4 cl`у, а затем указываем "shr dl,cl" т.е. сместить число в dl, cl-раз вправо, а в cl у нас - 4. Вот и получается, допустим было:
10110011 потом 4 раза вправо, и стало:
00001011

AdoNNeN /2007-09-28 13:22:59/
Не понимаю один момент, мне кажется, или это неточность?

Написано ко второй программе "BL - атрибут (для режимов AL=0, AL=1);" для функции INT 10h. между тем мы используем режим AL = 3 в программе, т.е. к каждому символу строки мы отдельно пишем атрибут, так зачем же заносить что-то в BL, если оно не используется?
я убрал строку mov BL,07h из программы, и ничего не изменилось, не было даже предупреждения от компилятора.. это же лишние 2 байта, как-никак :)

а, и еще, почему в начале второй программы assume и объявление сегмента стоят не в той последовательности, как в первой программе? это никакой роли не играет?
и почему мы на одно имя повесили сразу 2 сегмента? и дополнительный, и сегмент кода..
с ув,
AdoNNeN
Ivan_assm /2007-11-19 23:11:28/
статья действительно превосходная...
только пришло сильно дзенствовать линкуя масмом а не тасмом..
тасм меня игнорировал))))
наилучшие пожелания автору статьи...
Ivan_assm /2007-11-19 23:24:19/
но потом тасм полюбил меня и все пошло как по маслу))))
robix /2008-04-18 10:44:17/
ЦИТАТА
Для тех, кто не понял - наша строчка "Hello, World-2$" как раз и является "последовательностью/строкой/цепочкой" из элементов размером в байт.
КОНЕЦ ЦИТАТЫ

Да, все правильно. Но. Наша строчка "Hello, World-2$" прежде всего является последовательностью символов.
Каждому из символов соответствует свое значение по табличке ASCII. Значения пишутся шестнадцатеричными данными в дамп.
Под возможные вариации этот значения выделен один байт памяти.
И когда мы командуем
Lea Bp, ABC
ABC "Hello, World-2$" , то в дамп попадают как раз наши значения, а начальный адрес сохраняется в регистре Bp.
P.S. Как раз для тех, кто не понял. :))
P.S Так и не просветлился до конца по поводу деления HEX чисел на A и остатков в виде десятичных чисел
robix /2008-04-18 10:48:44/
ЦИТАТА
Для тех, кто не понял - наша строчка "Hello, World-2$" как раз и является "последовательностью/строкой/цепочкой" из элементов размером в байт.
КОНЕЦ ЦИТАТЫ

Да, все правильно. Но. Наша строчка "Hello, World-2$" прежде всего является последовательностью символов.
Каждому из символов соответствует свое значение по табличке ASCII. Значения пишутся шестнадцатеричными данными в дамп.
Под возможные вариации этот значения выделен один байт памяти.
И когда мы командуем
Lea Bp, ABC
ABC "Hello, World-2$" , то в дамп попадают как раз наши значения, а начальный адрес сохраняется в регистре Bp.
P.S. Как раз для тех, кто не понял. :))
P.S Так и не просветлился до конца по поводу деления HEX чисел на A и остатков в виде десятичных чисел
Padre /2008-06-06 18:42:13/
Доброго дня.<br /> В пункте 2 obj файл линкуется только в tasm v4 или в v5 тоже можно линковать в com файл?<br /> В 5-ой пробовал, выдается ошибка, что 16 битные сегменты не поддерживаются в файле ....\\testprog.asm
olmel /2008-08-23 02:05:21/
Serrgio у меня есть все начала его замечательного стиля обчения.
Лет 6 назад ( а может и больше) на сайте hi-tech прочел его \"бредисловие\" для dZebaga -все последуюшие опусв скачал и храню.И даже частенько заглядываю. Зелененькие буковки на черном фоне -для
более внедрительной медитации.
Я уважаю чувака seRRgio- и выражаю ему спасибо от себя и своих нескольких знакомых идиотов.
Noga /2008-10-14 19:36:45/
Почему mov DL,A7h - undefined symbol ?
Aerarh /2008-10-22 08:43:59/
mov DL,0A7h

это тоже байт, но если без нуля в начале то копмилятор рассматривает это как переменную A7
IIEIIEJI /2008-12-01 02:32:58/
Подскажите новичку, как бороться с этой заразой:
Fatal: Cannot generate COM file : invalid initial entry point address
pred /2009-03-22 14:29:13/
третий и четвертый комменты читай
pred /2009-03-22 14:33:16/
никак не могу понять почему во Write_hex_digit DH должен быть равен 0? добавил в программе перед вызовом функции MOV DH,0Ah всеравно работает. В чем смысл?
pred /2009-03-22 14:58:09/
Ещё, вроде, в процедуре WRITE_HEX_WORD можно убрать в начале push dx и
pop dx, т.к. он сохраняется в процедуре WRITE_HEX. Я прав?
siew /2009-04-03 14:24:32/
ДРСТЕ .... аффигенно агромное спасибо за переживанный материал по асму, очень легко воспринимается. Но вот столкнулся с проблеммой прям в первом примере: компилятор не хочет пережововать код а именно пишет Unexpected end of file encountered. С похожей проблеммой умею боротся только в c/c++, а тут без понятия как это сделать. Подскажите пожалуйста.
версия компилятора TASM 4.1
siew /2009-04-03 17:35:19/
Отбой. Код набирал в UltraEdit, у него стоит по умолчанию сохранят файл в кодировке UTF-16. После того как я поменял кодировку сохранения на ASCII всё пошло. :)
well1 /2009-11-03 16:24:24/
Спасибо Автору за превосходно поданый материал.
dsl2204750 /2009-12-08 02:31:42/
Ну аффтар,ну красавчеггг !!! Я с помощью книг в домашних условиях долго оч.пытался понять че почем а zDzесь сходу можно сказать понял все ..... ПО-БАЙТИКАМ :) Thank\'s Serrgio и всем кто трудился над WASM\'om !!! Продолжайте в том же духе ,УУУДАААЧИИИ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



P.S. Бля чуть не забыл ! Шутка козырная мне понравилась :::::::::::::::::::::

Для тех, кто в танке: последующие процедуры вставляйте между процедурами TESTING и EXIT_COM - не ошибетесь :-p

Логин:

Пароль:

Введите логин и пароль, под которыми вы зарегистрированы на θоруме WASM.RU.
Enter your login and password which you are using on WASM Θorum.





© 2002-2009 wasm.ru - all rights reserved and reversed