║XLR8║
|
||||||
1 | ||||||
Зацикливается, причем весьма интересным способом.30.03.2011, 23:55. Показов 2164. Ответов 12
Метки нет (Все метки)
Задание:
"Записати у нову стрічку кожен 3-й символ із стрічки довжиною «M» з позиції «P»" "Записать в новую строку каждый 3-й символ со строки длиной «M» начиная с позиции «P»" P = 12, M = 112 У меня прога зацикливается, дебагер говорит, что цикл "CopyFunctionLoop" может быть запущен несколько раз, здесь я что-то не понимаю, почему это происходит? И почему не выполняется процедура следующая за CopyFunction. Еще есть вопрос: правильно ли я описал строки на 120 символов: strFrom и strTo
0
|
30.03.2011, 23:55 | |
Ответы с готовыми решениями:
12
Не могу войти в биос никаким известным мне способом способом! Игры с интересным сюжетом Создать спойлер с интересным условием Продажа купонов Google AdWords по интересным ценам |
Ушел с форума
16332 / 7653 / 1072
Регистрация: 11.11.2010
Сообщений: 13,676
|
||||||||||||||||
31.03.2011, 12:30 | 2 | |||||||||||||||
outoftime, когда срабатывает команда CALL в стек отправляется адрес команды находящейся за командой CALL чтобы на нее было передано управление после выхода из процедуры, это делает команда RET. У тебя
1
|
║XLR8║
|
|||||||||||
31.03.2011, 19:23 [ТС] | 3 | ||||||||||
Mikl___, я знал что можно использовать регистры, ну а вдруг мне надо будет потом их спользовать, ладно загнул, просто у меня привычка, если начал что-то рыть то рою даже если это безсмысленно, так просто веселей изучать новый метериал.
Вопрос: вместо bp можно использовать bx? Насколько я понял при входе в процедуру мне нужно поставить ссылку на верх стека в bp (bx) а потом доставать значения, так как вверху у меня будет точка возврата функции, то доставать в том же порядке начиная со второго элемента, верно? (ладно, надо будет теорию почитать, а то забыл какой регистр отвечает за адрес стека, на сколько я понял это sp, на почве этого еще вопрос-догадка: что-бы попасть к элементу под верхним элементом стека, нужно прибавлять здвиг, верно?) Если это все верно, тогда можно не использовать bp (bx) вовсе
1. если есть сегментный регистр, который указывает адрес стека - ss, тогда зачем еще 1 регистр - sp 2. допустим они есть, значит между ними есть разница, вопрос какая, а именно: как это сказывается на доступе к данным стека, уточняю, если брать адрес относительно ss тогда какой сдвиг нужен для доступа к 3-му байту стека? Добавлено через 2 часа 9 минут Со стеком так до конца не разобрался, но функцию все-таки нормально дописал.
0
|
Ушел с форума
16332 / 7653 / 1072
Регистрация: 11.11.2010
Сообщений: 13,676
|
|
01.04.2011, 05:31 | 5 |
Сообщение от outoftime
mov ax,ss:[bx+10] а в случае с использованием ВР только mov ax,[bp+10]
1
|
Ушел с форума
16332 / 7653 / 1072
Регистрация: 11.11.2010
Сообщений: 13,676
|
|
04.04.2011, 03:54 | 7 |
outoftime, по дефаулту будет
mov ax,[bx+10] = mov ax,ds:[bx+10] и mov ax,[bp+10] = mov ax, ss:[bp+10]
1
|
Ушел с форума
16332 / 7653 / 1072
Регистрация: 11.11.2010
Сообщений: 13,676
|
||||||
04.04.2011, 10:10 | 9 | |||||
outoftime, там нет сдвига, просто команда с явным определением сегмента ss: оказывается на 1 байт длиннее чем без такого определения
1
|
Ушел с форума
16332 / 7653 / 1072
Регистрация: 11.11.2010
Сообщений: 13,676
|
|
04.04.2011, 10:21 | 11 |
А выполнять команды типа mov ax,ss:[bx+10h] тебе никто не может запретить, тем и хорош ассемблер -- никаких ограничений ! Но предупредить тебя все-таки мы должны
здесь ты прав - адрес смещенный на bp+10 относительно ss полный адрес = SS*16 + BP + 10 -- наверное, это трудности перевода с украинского на русский
1
|
outoftime
|
04.04.2011, 10:26
[ТС]
#12
|
Не по теме: Mikl___, аж обидно, сам украинец, живу в Украине, а русский и английский знаю, порой, лучше родного... ппц
0
|
Ушел с форума
16332 / 7653 / 1072
Регистрация: 11.11.2010
Сообщений: 13,676
|
|
04.04.2011, 10:29 | 13 |
не по теме
outoftime, не расстраивайся, я могу на украинский только с Гуглом переводить
0
|
04.04.2011, 10:29 | |
04.04.2011, 10:29 | |
Помогаю со студенческими работами здесь
13
Ищу идеи (C#, Technology), чем-бы *интересным* заняться? Дополнить игру лабиринт чем-нибудь интересным Весьма серьезный Winlocker Поделитесь интересным опытом по игре в Rome Total War Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |