Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 272
от 27.10.2005, 13:45

Администратор:Калашников О.А.
В рассылке:Подписчиков: 263, Экспертов: 24
В номере:Вопросов: 1, Ответов: 4


Вопрос № 28065: Скажите пожалуйста, експерты ... - почему не работает в debug.exe ?...

Вопрос № 28.065
Скажите пожалуйста, експерты ... - почему не работает в debug.exe ?

Приложение:

Отправлен: 21.10.2005, 15:37
Вопрос задал: S1lveR (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, S1lveR!
Хоть регистры и универсальные, все же в некоторых случаях есть жесткие правила их использования.
В данном случае ты неправильно используешь в адресации регистр CX.
Вместо него можно или BX или BP. CX же используй для цикла.
P.S. В 32-битных регистрах (EAX, EBX, ...) это ограничение сняли. Их можно комбинировать как угодно.
P.S.S. Читай литературу! Там все это расписано.

Приложение:

---------
Удачи!

Ответ отправил: Лысков Игорь Витальевич (статус: 6-ой класс)
Отправлен: 21.10.2005, 16:03

Отвечает: Ayl
Здравствуйте, S1lveR!

Что именно не работает?
Вообще-то, адресации с помощью регистра CX в процессорах x86 нет. Надо использовать регистр BX либо 32-хразрядные регистры:

mov al, [si+cx] - так нельзя
mov al, [si+bx] - так можно
mov al, [esi+ecx] - так тоже можно
---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 21.10.2005, 16:29

Отвечает: Котиев Зураб
Здравствуйте, S1lveR!
в 16-битном режиме базовыми регистрами могут быть только bx и bp а индексными si и di т.е. возможны следующие вариации
[bx+si]
[bx+di]
[bp+si]
[bp+di]
[bx+число]
[bp+число]
Ответ отправил: Котиев Зураб (статус: 6-ой класс)
Отправлен: 23.10.2005, 00:00

Отвечает: Юра Устинов
Здравствуйте, S1lveR!
Если не работает строчка mov al,[si+cx] то всё просто вы не можете использовать для адресации по базе с индексированием регистр cx. Попробуйте mov al,[si+bx] и у вас получится.
Краткая справка по адресации по базе с индексированием:

В этом методе адресации смещение операнда в памяти вычисляется как сумма чисел, содержащихся в двух регистрах, и смещения, если оно указано. Все следующие команды — это разные формы записи одного и того же действия:

mov ax,[bx+si+2]
mov ax,[bx][si]+2
mov ax,[bx+2][si]
mov ax,[bx][si+2]
mov ax,2[bx][si]

В регистр AX помещается слово из ячейки памяти со смещением, равным сумме чисел, содержащихся в BX и SI, и числа 2. Из шестнадцатибитных регистров так можно складывать только BX + SI, BX + DI, BP + SI и BP + DI, а из 32-битных — все восемь регистров общего назначения. Так же как и для прямой адресации, вместо непосредственного указания числа можно использовать имя переменной, заданной одной из директив определения данных. Так можно прочитать, например, число из двумерного массива: если задана таблица 10x10 байт, 2 — смещение ее начала от начала сегмента данных (на практике будет использоваться имя этой таблицы), BX = 20, а SI = 7, приведенные команды прочитают слово, состоящее из седьмого и восьмого байт третьей строки. Если таблица состоит не из одиночных байт, а из слов или двойных слов, удобнее использовать следующую, наиболее полную форму адресации.

---------
Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 2-ой класс)
Отправлен: 23.10.2005, 15:55


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное