...
Консультация # 198857:
Уважаемые Игорь Витальевич, и эксперты,
здравствуйте,
MASM 6.11/13 для DOS, Windows 7, 64-bit, DOS Box Emulator.
написал простой Листинг для экспериментирования (см. присоединенный файл).
AfdPro показывает, что для второго набора команд в коде,
mov si,1 mov bx,mas1[si] add ax,bx
в регистр BX заносится 0700h, а не 0007h.
подскажите, пожалуйста, почему в данной ситуации возникает такой "артефакт" ?
Спасибо.
---------------------------------------
Cseg1 segment org 100h _start: xor ax,ax mov si,0 mov bx,mas1[si] add ax,bx mov si,1 mov bx,mas1[si] add ax,bx mov si,1d int 20h mas1 dw 4,7,1,9 dw 0,3,5,8 dw 6,2 Cseg1 ends end _start
Дата отправки: 06.06.2020, 21:42
Вопрос задал: Ильдар Рифович Альмиев (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »
Консультирует Зенченко Константин Николаевич (Старший модератор):
Здравствуйте, Ильдар Рифович Альмиев!
Команда mov bx,mas1[si] читает слово по адресу: mas1 + si
- во время компиляции процессор подставляет вместо mas1 реальный адрес в памяти, в данном случае 0х0119;
- слово читается так: в младший байт 16-ти битного регистра попадает значение, на которое указывает адрес, в старший - следующий байт;
- изменяя si - можно добраться к любому адресу относительно mas1. В коде si - принимает значение 0х0000 и 0х0001, поэтому будут читаться BL с адреса 0х0000 BH с адреса 0х0001, при si равном 0х0000 и BL с адреса 0х0001 BH с адреса 0х0002, при si равном 0х0001;
- массивы проще считывать строковыми командами LODS, при этом в АХ - будет очередной элемент массива, также автоматически изменится SI - на величину(размер в байтах) элемента массива.
Удачи!
Оценить выпуск | Задать вопрос экспертам
главная страница | стать участником | получить консультацию
техническая поддержка
Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста,
оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете
оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив
наш форум, почитав
журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете
зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!
Комментариев нет:
Отправить комментарий