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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2017, 13:32   #1
flu3xz
Пользователь
 
Регистрация: 19.05.2017
Сообщений: 26
По умолчанию Декодирование дампа

После проведения декодировки, получил такой код, расставил метки, но программа не работает, перебрал что понимал, а программа по прежнему не работает, в чем проблема?
Код:
data segment
STR DB "TEST: first word     second word    third     word 0    !  Nu'ber of words 0 . $"
code segment
mov ax, data
mov ds, ax
mov es, ax
mov cx, 0003Dh
mov di, 00000h
mov al, 020h
cld 
repe
scasb
jz l1
inc b.[0004fh]
repne 
scasb
jne l1
jmp l2
l1:or b.[0004fh], 030h
mov dx, 0003dh
mov ah, 09h
int 021h
l2:mov ax,04c00h
int 21h
end
Изображения
Тип файла: png 13131221321.png (33.2 Кб, 62 просмотров)
flu3xz вне форума Ответить с цитированием
Старый 26.05.2017, 23:30   #2
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Для начала неплохо бы знать – как она должна работать, что делать...
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 27.05.2017, 09:57   #3
flu3xz
Пользователь
 
Регистрация: 19.05.2017
Сообщений: 26
По умолчанию

это 2 часть задания, декодировать дамп, расставить метки, а потом понять что она делает.
flu3xz вне форума Ответить с цитированием
Старый 27.05.2017, 11:16   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

В что не знаете, что она делает?:D Какой компилятор у Вас и таки скажите уже, что она делает.
1-й же Warning поразил меня до глубины души: Reserved word using as symbol: STR.
Опишите, пожалуйста, примерно по строкам, что делает программа.

Последний раз редактировалось Cuprum5; 27.05.2017 в 11:55.
Cuprum5 вне форума Ответить с цитированием
Старый 27.05.2017, 11:55   #5
flu3xz
Пользователь
 
Регистрация: 19.05.2017
Сообщений: 26
По умолчанию

работу делал в эмуляторе i8086, через него заполнял дамп, и вся работа делается через эмулятор. А что касается работы этой программы, она производит !какую-то работу со строками!, а вот какую я не понимаю. Возможно метки переходов не так поставил, но при запуске программы она зависает на repe scasb и потом идет на прерывание, даже при перестановке меток все повторяется.
flu3xz вне форума Ответить с цитированием
Старый 27.05.2017, 11:56   #6
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цитата:
Сообщение от flu3xz Посмотреть сообщение
а вот какую я не понимаю.
- взяли программу у кого-то другого? Т.е. Вы не знаете как работает программа?
Товарищи, профессионалы, подскажите, пожалуйста, что означает вот это команда:
Код:
inc b.[0004fh]
Всем здорово, парни, помогите, пожалуйста. У меня что-то TASM косячнулся и не хочет нормально работать. Откомпилировал эту программу, там был Warning, о котором я говорил в своем сообщении №4 здесь и еще куча ошибок. Потом я создал новую порграмму, в которой должны быть какие-то свои ошибки или никаких, но там остались все эти же ошибки с прошлой программы, хотя я перезапускаю компилятор. А все понял, пацаны, имя файла покороче сделал и все заработало!
Имя файла должно быть <= 8 символов.

Программа вся кривая и косая у автора в первом сообщении. Надо программу с 0 писать.
А почему у меня команда rep не работает? Вроде все по описанию делаю. Она должна работая впаре с командой scasb(т.е. получается конструкция rep scasb) и просканировать все байты строки, но она сразу же вылетает, т.е. работает только 1 раз. По описанию она должна работать пока cx не равно 0, и я загружаю в cx 4F - число байт этой строке, но она работает только один раз и сразу же вылетает на следующую команду.

Последний раз редактировалось BDA; 27.05.2017 в 18:17.
Cuprum5 вне форума Ответить с цитированием
Старый 27.05.2017, 17:14   #7
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
inc b.[0004fh]
Это inc byte ptr [4Fh]
Судя по всему, программа должна считать кол-во слов в строке, но она делает это неправильно: прыжки не туда, адреса сбиты (либо дизассемблирование произведено неправильно).

Вот так должно быть (я бы улучшил пару моментов конкретно по коду, но уж оставлю оригинал):
Код:
.model small
.stack 256

.data
String db "TEST: first word     second word    third     word 0    !  "
lString = $-String
Result db "Number of words "
Number db "0 . $"

.code
start:
  mov ax, @data
  mov ds, ax
  mov es, ax
  mov cx, lString
  mov di, offset String
  mov al, 020h
  cld 
l0:
  repe scasb
  jz l1
  inc Number
  repne scasb
  jne l1
  jmp l0
l1:
  or Number, 030h
  mov dx, offset Result
  mov ah, 09h
  int 021h
  mov ax,04c00h
  int 21h

end start
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 27.05.2017, 19:26   #8
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Автор темы, какой должна быть кодировка и раскодировка строки?
To 7in: а, ну по ходу точно слова считает, а что-то вот я не понял с командой rep. Не могли Вы мне подсказать. Я только нашел в Интернете, что она работает с командой mov(ну или movs там было, не помню уже точно), а с командой scasb работают только repe и repne(и repz, repnz). Т.е. с командой scasb просто rep не работает что-ли, а зачем тогда было писать в документации что она работает по счетчитку cx, что мол типа задаете в этом счетчике длину строки и все чики-пуки: повторяет команду до 0. Я вот не понял это глюк или так надо?
Cuprum5 вне форума Ответить с цитированием
Старый 28.05.2017, 04:02   #9
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Cuprum5,
rep=repe=repz
repne=repnz
прочитай Электронный учебник-->"Глава 17. СТРОКОВЫЕ КОМАНДЫ"
Mikl___ вне форума Ответить с цитированием
Старый 28.05.2017, 10:10   #10
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цитата:
Сообщение от Mikl___ Посмотреть сообщение
rep=repe=repz
- насколько я понял вчера из чтения документации rep != repe, потому что rep работает только от cx(работает-повторяет пока cx > 0), а repe там еще что-то смотрит и сравнивает байт al и байт из прочитанной строки.
Cuprum5 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание дампа MySQL Dozent БД в Delphi 11 10.11.2013 03:06
Записать в память программы из файла дампа Night_Devil Общие вопросы Delphi 3 05.11.2012 15:03
Запись файла-дампа процесса в память InsteadOfMe Помощь студентам 8 05.04.2011 00:07
Прошу проанализировать 2 дампа Altera Свободное общение 1 01.09.2009 19:11
Сохранение дампа памяти Polg Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 06.03.2008 08:44