Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 202
от 31.07.2005, 22:30

Администратор:Калашников О.А.
В рассылке:Подписчиков: 251, Экспертов: 17
В номере:Вопросов: 2, Ответов: 7


Вопрос № 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!
Знак $ в конец строки можно добавить так:

CSEG segment
Assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG
org 100h
begin:
mov ah,0Ah ; читаем строку в буфер
LEA DX,MAX
int 21h

mov BL,LEN ; В BX грузим длину строки
mov BH,0
mov [BX+Stroka],'$' ;Добавляем значок.

lea dx,ent ; Переход на другую строку
mov ah,9h
int 21h

lea dx,Stroka ; "Наша" строка без "мусора"
int 21h

ret
MAX DB 255
LEN DB ?
STROKA DB 255 DUP (?)
ENT DB 13,10,'$'

CSEG ends
end begin
Ответ отправил: Gluck3D (статус: 1-ый класс)
Отправлен: 26.07.2005, 16:16

Отвечает: Евгений Иванов
Здравствуйте, LMZ!
mov si, offset buff1
mov dx, si
int 33
;......
mov [bptr si+1], '$'


---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 27.07.2005, 19:15


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться
Вспомнить пароль

В избранное