|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.11.2009, 18:17 | #1 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
инвертирование(asm80836)
Код:
препод сказал, что она неправильно работает при нулевом размере массива. Сделал условие на проверку размера если 0 , то возвращает указатель на массив который в аргументе. Что здесь не так ? Последний раз редактировалось NiCola999; 20.11.2009 в 18:43. |
20.11.2009, 20:30 | #3 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
почемуто у препода неправильно она работает с нулевым размером. У него там какойто массив и он вызывает функцию от масива и размер 0 и ему выдаются какие-то числа странные... сам проверял , нормально возвращает указатель на 1 элемент при size=0
|
20.11.2009, 20:36 | #4 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
не 4 гораздо больше
Код:
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
20.11.2009, 21:00 | #5 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
че тут странного?
Код:
|
20.11.2009, 21:11 | #7 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
можно конечно всё в 8битные занести, в edx заносится 8битное число и оно спокойно умножается на al. Причем тут вообще это всё. Функция инвертирования массива прекрасно работает, я спрашиваю что она должна вернуть, если размер массива будет 0. Если убрать cmp ecx,0... (проверку на размер) то при ecx=0 программа выдает ошибку сегментации.
ошибка я думаю связана с тем, что loop даже если ecx=0 выполнится всегда 1 раз. И при выполнении в edx заносится не то что надо mov edx, [ebx+0-1] Последний раз редактировалось NiCola999; 20.11.2009 в 21:21. |
20.11.2009, 21:23 | #8 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
А зачем убирать эту проверку ?
Понятно, что у вас стоит [ebx+ecx-1] значит при ecx=0, программа будет обращаться к байту, который не входит в массив. Да и loop будет выполнятся далеко не 1 раз.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 20.11.2009 в 21:27. |
20.11.2009, 21:29 | #9 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
так что функция должна вернуть при ecx=0.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Одномерный массив, инвертирование | Branbal | Помощь студентам | 6 | 16.11.2010 09:16 |
инвертирование строки | julia23 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 12.11.2007 10:36 |