Вопрос № 24048: Здраствуйте.
Почему вылетает ошибка:
dwlist dd 127 dup(0)
..........
mov ecx,0
loop1:
inc ecx
mov edx,pe32.th32ProcessID
mov dwlist[ecx],edx - error(во время выполнения проги)
........Вопрос № 24053: программа читает 1 байт в dx,
как после этого байта добавит знак $ ну что-бы не выводился мусор :)...
Вопрос № 24.048
Здраствуйте.
Почему вылетает ошибка:
dwlist dd 127 dup(0)
..........
mov ecx,0
loop1:
inc ecx
mov edx,pe32.th32ProcessID
mov dwlist[ecx],edx - error(во время выполнения проги)
.....
Отправлен: 26.07.2005, 11:09
Вопрос задал: korsar (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Котиев Зураб
Здравствуйте, korsar!
ты пытаешься писать в секцию кода а она имеет по умолчанию доступ только на чтение .Измени в каком нить PeEditore аттрибуты секции.Добавь writable.
Ответ отправил: Котиев Зураб (статус: 5-ый класс)
Отправлен: 26.07.2005, 11:40
Отвечает: DSota
Здравствуйте, korsar!
Здравствуйте, korsar!
Если метка loop1 используется в цикле - то думаю, из-за неконтролируемого роста ECX возникает переполнение - затираются все переменные за dwlist и код, если он там есть и происходит исключение превышения границы сегмента...
И еще ошибка на первый взгляд - если ECX больше нигде не используется, а только при сборе идентификаторов - то нужно увеличивать адрес не на один, а на 4 и начать записывать с первого места массива:
...
loop1:
mov edx,pe32.th32ProcessID
mov dwlist[ecx],edx
add ecx,4
...
Ответ отправил: DSota (статус: Практикант)
Отправлен: 26.07.2005, 11:49
Отвечает: Евгений Иванов
Здравствуйте, korsar!
возможно, происходит превышение значения ECX значения 127*4.
ps.
используй также add ecx,4
удачи!
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 27.07.2005, 16:48
Вопрос № 24.053
программа читает 1 байт в dx,
как после этого байта добавит знак $ ну что-бы не выводился мусор :)
Приложение:
Отправлен: 26.07.2005, 13:59
Вопрос задал: LMZ (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: DSota
Здравствуйте, LMZ!
Если читать и выодить будешь по заранее известному числу байт, то лучше использовать следующее:
1 вариант - универсальней:
...
int 21h
mov byte ptr buff[1],'$';В квадратных скобках - количество символов, которые ты хочешь вывети на экран
mov ah,9
...
2 вариант - легче:
...
file1 db 'file.txt',0
buff1 db ' $';В этой строке перед знакомдоллара столько же пробелов, сколько ты символов собираешься читать из файла
CSEG ends
...
Ответ отправил: DSota (статус: Практикант)
Отправлен: 26.07.2005, 14:24
Отвечает: Ayl
Здравствуйте, LMZ!
Определи buff1 так:
buff1 db ?, '$'
и будет как ты хочешь
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 26.07.2005, 14:25
Отвечает: Gluck3D
Здравствуйте, LMZ!
Знак $ в конец строки можно добавить так: