Добрый день. Я только в самом начале пути изучения assemblera, так что прошу сильно не ругать)) Начал изучение с книги Калашникова - Ассемблер - это просто! Скачал с его сайта masm611. Разобрался с компиляцией. Но , я дошел до циклов, и стал получать ошибку ( Error 2085 ). Она гласит, что регистр или команда не доступны в данном режиме CPU. Вот пример кода из учебника. Код (Text): CSEG segment org 100h Begin: mov cx, 3 Labal_1: mov ah, 9 mov dx, offset Str int 21h loop Label_1 Str db, 'Hello!$' CSEG ends end Begin Полностью осознаю, что данный код под MS-DOS. Вопрос в том, как заставить его работать на моей машине? Ведь примеры из первых 2 глав работали без проблем. Заранее спасибо!
STR - это команда защищённого режима, Store Task Register Для пользовательских имён использовать нельзя. И запятая после db лишняя. Замени на Код (Text): mov dx, offset Message ; .... Message db 'Hello!$'
Спасибо, 1 проблему решил, но сразу же появилась другая. Если нажать пропустить то начнет выводить кучу мусора , и довольно длительное время. Нагуглил вот это - http://support.microsoft.com/kb/245184 , но это полный бред по-моему (но всё равно не помогло , попробовал ) ) кто нибудь сталкивался? Знает как решить?
просто после цикла надо добавить еще выход из приложения добавь это после команды loop Label_1 Код (Text): mov ax, 4C00h int 21h
baldr +1 или int 20h, но универсальный способ mov ax, 4C00h/int 21h (не надо задумываться com или exe, сбалансирован ли стек или нет)