Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2011, 19:41   #1
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Сообщений: 164
По умолчанию Отладка программы на MASM. Сложение элементов массива.

Начала учиться работать с массивами на MASM. И при отладке уже не первый раз, в дизассемблер половина кода обрезается. Вот как на скриншоте показано:


Вот код самой программы:
Код:
.386
.model flat, stdcall
option casemap : none
include\masm32\include\kernel32.inc
includelib\masm32\lib\kernel32.lib
.data
mas dd 10 dup(?)
i dd 0
.data?
s dd ?
.code
start:
mov ecx, 10
mov esi, 0
mass:
    mov eax, i
    mov mas[esi], eax
    inc i
    inc esi
    loop mass
mov ecx, 10
mov esi, 0
sloj:
    mov eax, mas[esi]
    add eax, mas[esi+1]
    inc esi
    loop sloj

invoke ExitProcess, 0
end start
На правильность программу не проверял, потому что не могу из-за того, что дизассемблер обрезается и какой то мусор пишет:

CPU Disasm
Address Hex dump Command Comments
0040102D 00 DB 00
0040102E 03 DB 03
0040102F 86 DB 86
00401030 01 DB 01
00401031 30 DB 30 ; CHAR '0'
00401032 40 DB 40 ; CHAR '@'
00401033 00 DB 00
00401034 46 DB 46 ; CHAR 'F'
00401035 E2 DB E2
00401036 F1 DB F1
00401037 6A DB 6A ; CHAR 'j'

Это же и на скриншоте.

Скажите пожалуйста как сделать так, чтобы все было нормально.
Ibanez Wizard вне форума Ответить с цитированием
Старый 22.02.2011, 21:51   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Ibanez Wizard, скомпилировал Вашу программу, в OllyDbg никаких проблем не возникло. Но код нужно поправить. ESI, поскольку у Вас массив двойных слов, надо увеличивать на 4. И процедуру сложения написать как-то так:

Код:
mov ecx,9
mov esi,0
mov eax,mas[esi]
sloj:
add esi,4
add eax,mas[esi]
loop sloj
vadimych вне форума Ответить с цитированием
Старый 22.02.2011, 22:06   #3
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Сообщений: 164
По умолчанию

За поправку спасибо). Исправил - теперь все получилось. Просто я привык как в высокоуровневых языках - на один увеличивать при данной задаче). А на счет мусора в олли - я скачал другую версию этой программы и все было нормально).
Ibanez Wizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
отладка программы tanek Помощь студентам 3 01.04.2010 21:52
Отладка программы в с++ immor Общие вопросы C/C++ 2 31.05.2009 21:56
отладка программы honest Помощь студентам 1 18.03.2009 06:58
Отладка программы lenuxoid Общие вопросы Delphi 1 22.12.2008 19:29