|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.06.2009, 14:09 | #1 |
Пользователь
Регистрация: 16.06.2009
Сообщений: 21
|
Помогите новичку с адресацией разобраться
Вообщем ао заданию нужно вот что:
8. Переставить числа в обратном порядке. Массив байтов. я же вроде все сделал, только при отладке, оказывается, что мои значения bx и [bx] оказываются заполнены мусором, а не тем, к чему я, по логике, обращался... помогите плиз... не могу понять, в чем ошибка... логика программы, теоретически верна, что-то не так с адресацией. пробовал заносить, как видите и через оффсет и через леа, и так и так мусор заранее благодарен ПРОграммистам сего форума Код:
Последний раз редактировалось rpy3uH; 16.06.2009 в 17:41. |
16.06.2009, 15:49 | #2 |
Форумчанин
Регистрация: 15.07.2008
Сообщений: 615
|
Код:
xor eax, eax
xchg [eax], eax |
16.06.2009, 16:16 | #3 |
Пользователь
Регистрация: 16.06.2009
Сообщений: 21
|
эх...
Спасибо конечно Большое, конечно, но хотелось бы разобраться в том, что было не так. Ибо по своей логике, я все правильно делал... И еще, объявление стэка как-то связано с si? и можно ли обойтись без использования стэка? только регистрами, тобишь. Заранее благодарен. |
16.06.2009, 16:30 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
А я бы вот так эту задачу решил: Код:
I'm learning to live...
|
|
16.06.2009, 16:39 | #5 |
Пользователь
Регистрация: 16.06.2009
Сообщений: 21
|
Блин, и никто не хочет объяснить, почему
Ладно, спасибо вам в любом случае, добрый форум, и реакция тоже быстрая, мне у вас уже нравится а на счет второго варианта... Я вижу, он меньше... видимо более оптимизирован... но здесь для мне много чего неизвестного... я только начал, делаю на ТАСМЕ все... ну строчку .model flat,stdcall еще можно понять, а вот: option casemap:none - уже туговато... а также: rep movsw... да, и тут объявлено два массива, как я вижу... с точки зрния оптимизации, это верно? или просто, так проще? и еще вопрос, обязательно ли extended юзать? все это esi, ecx... и так далее.. спасибо заранее. надеюсь вопросами не завалил. |
16.06.2009, 17:01 | #6 | ||||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Цитата:
в ECX указывается количество элементов в ESI адрес на ячейку памятьи откуда будет переноситься массив в EDI адрес куда. Я взял два массива дабы легче (а не оптимальнее) было работать. Свормировал вспомагательный массив и работай уже с ним. Цитата:
Впрочем пользование как ты выразился "extended" считается хорошим тоном ибо процессоры нынешние очень уж любят с ним работать.
I'm learning to live...
|
||||
16.06.2009, 17:18 | #7 |
Пользователь
Регистрация: 16.06.2009
Сообщений: 21
|
Спасибо.
Правда использовать я сейчас эти расширенные регистры я не буду, ибо это лишь лаборатоные работы, там то уж точно ничего этого не нужно, подобных задач, жирновато будет В любом случае, спасибо, буду знать, что писать так - хороший тон Да, и на счет первого варианта от MalCer'a он почему-то не работает... ошибка тае, что и у меня, тобишь в переменных вместо нужных значений мусор какой-то, не уверен, случайный он или всеже поддается логике, но работать явно не хочет. Не мог бы подсказать, тот код верный? если да, то возможно мой tasm просто с вистой не ладит.. хотя и объяснить почему, я не могу. Очень хочется понять, чья здесь ошибка, моя или всеже системы. Заранее благодарен. Последний раз редактировалось Zeneth; 16.06.2009 в 17:21. |
16.06.2009, 18:59 | #8 | |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Насчет кода, который привел MalCer, то у меня он норм работает,только вместо add si, 10 наверно лучше 9 написать. В твоей программе я особо разбираться не стал, но вот что заметил. Во-первых ты используешь тип процессора .386. Для дос программ этого лучше не делать или приписывать USE16. Далее обрати внимание на строчки
Код:
Цитата:
|
|
16.06.2009, 19:18 | #9 |
Пользователь
Регистрация: 16.06.2009
Сообщений: 21
|
проблема с "мусором" решена, благодаря, сегментному регистру, это, на сегодня, пожалуй, самое полезное.
Спасибо большое, пошел разбираться с логикой.. |
16.06.2009, 19:33 | #10 | |||||||
Форумчанин
Регистрация: 15.07.2008
Сообщений: 615
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
xor eax, eax
xchg [eax], eax Последний раз редактировалось MalCer; 16.06.2009 в 20:51. |
|||||||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с многоуровневой адресацией | grook | Общие вопросы C/C++ | 3 | 18.12.2010 17:15 |
помогите разобраться новичку!!! | kena | Помощь студентам | 5 | 16.05.2009 22:00 |
Помогите новичку ! | T-ReX_m | Общие вопросы по Java, Java SE, Kotlin | 7 | 13.02.2009 22:24 |
Помогите новичку | Alvis | Общие вопросы Delphi | 3 | 25.12.2006 08:03 |
Помогите новичку! | Yury | Общие вопросы Delphi | 1 | 21.12.2006 15:16 |