В al после выполнения операций находится число. Как скопировать его значение в cx? Пробовал Код (Text): xor cx,cx mov cl,al Не то. Чувствую, что вопрос тупой, но найти не могу. Помогите, пожалуйста.
Не работает. Суть такова: Код (Text): mov dx, offset buf mov ah, 0Ah int 21h mov al, buf+1 or al,30h xor ah,ah push ax ;в al-длина введенной строки, нужно из ал скопировать в сх ;Выводим строку mov ah, 09h mov dx, offset buf add dx,2 int 21h pop ax pop bx xor cx,cx mov cl,al push cx ; Записываем в файл mov ah,40h mov dx,offset buf pop cx ; [b]Вот здесь я указываю, сколько байт записать в файл. Должно равняться длине введенной строки[/b] add dx,2 int 21h
n2 Ввиду Вашего бесспорного авторитета в данном вопросе не смею ставить под сомнение Ваше заверение, но смею робко намекнуть на различие числа 5 и ASCII-кода цифры 5 (5 != 0x35).
l_inc n2 Вариант c xor'ом не годен, мануалы рекомендуют юзать movzx. l_inc вам абсолютно верный вариант посоветовал. Не работает где? Если не транслируется -- то добавьте соответствующую директиву.
pashe4ka13 Еще следует пожалуй добавить, что кошернее делать не так: Код (Text): or al,30h xor cx,cx mov cl,al или так: Код (Text): xor cx,cx mov cl,al or cl,30h а так: Код (Text): movzx cx,al or cx,30 Сие же касается и 32 битных программ. Лучше юзать movzx и работать с целым регистром, а не с 16/8 битными рудиментами.
l_inc чёрт, не подумал о том, что это символ..Как тогда сделать? Ассемблер-ТАСМ, он в упор не понимает movzx.
n2 pashe4ka13 показал строку, которая мешает. Но по сути там все эти четыре строки желательно на одну movzx заменить. .386 в начале исходника должно быть, как указал MMIX. Но я бы настоятельно рекомендовал fasm.
n2 Не занимайтесь некрофилией, переходите на нормальные трансляторы. Или, ну если никак не уходится, то юзайте db и вбивайте опкоды хехе.
n2 А, тут вон дело в чем. Я подумал вы для себя изучаете, вот и посоветовал сразу пока не поздно сменить мертвый тасм на актуальный ассемблер. Если же дело в преподавателе, то тут все ясно; этих упертых ни чем не прошибешь. В наших технических вузах инженеров обучают васику и турбо паскалю до сих пор. И если паскаль я еще могу понять (как бы да, он дает нормальную базу, хотя в целом не нужен), то юзание васика, как говаривал дейкстра, неминуемо ведет к чугундеру. Впрочем я бы на вашем месте не упустил случая либо поговорить с преподом по душам, если он адекватен, чтобы он поменял н.голубь (или кто там у вас) на абеля; либо, если он старый маразматик, трясущийся в паркинсоне -- не упустил бы случая потроллить. А вообще под дос тасма 5-го хватит, так что пишите и не парьтесь.
pashe4ka13 Трансляторы делают под конкретную ОС, т.к. форматы файлов определяются именно разработчиками ОС а не процессоров.
pashe4ka13 Почему вы так думаете что не делают? Тогда как же они собственно тестят свои камни? Или например как вы думаете работает интел с++ компилер? Любой компилер по-любому преобразует листинг на языке в листинг на асме, а потом юзает уже транслятор асма. Именно поэтому я считаю, что, скажем, масм никогда не умрет, потому как он нужен для работы микрософтовских компиляторов. И именно поэтому я считаю, что борланд не прекратила разработку тасма, а попросту перестала распространять его. Чем-то же с++ билдер транслирует, так? Ezrah Вы путаете с линковщиками наверное. Трансляторы как раз делают под процессоры в первую очередь.