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

Ассемблер? Это просто! Учимся программировать


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 736
от 29.04.2007, 11:35

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


Вопрос № 83876: добрый день. в приложении программа которая сверяет введенную строчку с паролем(std_pwd). Как изменить программу что бы она выдавала "success" если пароль(строка) введена в обратном порядке? тоесть если пароль pass а пользователь ввел ...
Вопрос № 83908: Дорогие эксперты!Напишите прогу - матрица 4x4,подсчитать среднее арифм. обратной диагонали!для проца. лучше для Intel 8080.Безвыходная ситуация-утром сдавать!с уважением SpraIt....

Вопрос № 83.876
добрый день. в приложении программа которая сверяет введенную строчку с паролем(std_pwd). Как изменить программу что бы она выдавала "success"
если пароль(строка) введена в обратном порядке? тоесть если пароль pass а пользователь ввел ssap то программа пишит "success". подозреваю что нужно изменить флаг направления( командой std). но куда и как не понимаю. спасибо.

Приложение:

Отправлен: 23.04.2007, 17:39
Вопрос задал: Biggle (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Biggle!

1)Вам нужно заменить строковую команду на её программый анналог,
т.к. флаг D указывает направление одновременно для SI и DI.
или
2)После ввода строки перевернуть введенную строку.
Удачи!

---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 24.04.2007, 17:14

Отвечает: An42
Здравствуйте, Biggle!
cld сбрасывает флаг df а, std устанавливает флаг df
в первом случае цепочные операции идут в сторону увеличения адресов
во в тором случае в сторону уменьшения адресов (причем для регистров si и di увеличение или уменьшение адресов происходит одновременно)
по этой причине мы не сможем использовать цепочные операции в которых регистр si движется в сторону увеличения адресов, а регистр di в сторону уменьшения адресов

предлагаю модуль который проверяет написания строки в обратном порядке

my_data segment
user_buf db 17, ?, 17 dup(?)
std_pwd db 'pass'
std_len = $-std_pwd
ok_mes db 13, 10, 'success$'
my_data ends
my_commands segment

mov ah,0ah
lea dx,user_buf
int 21h

sub cx,cx
mov al,user_buf[1]
mov cl,std_len
cmp al,cl ;Проверка длины пароля и длины введенной строки
jne error
lea si,user_buf[2] ;Адрес введенной строки
lea di,std_pwd[std_len-1] ;Адрес пароля
stdloop: ;Проверка совпадений символов
mov al,[si]
mov ah,[di]
cmp ah,al
jne error
inc si ;увеличиваем адрес
dec di ;уменьшаем адрес идем в обратном направлении
loop stdloop

mov ah,09
lea dx,ok_mes
int 21h
jmp exit
error:
;-- Сообщение об ошибке
exit:
....

Удачи
Ответ отправил: An42 (статус: 2-ой класс)
Ответ отправлен: 25.04.2007, 03:48


Вопрос № 83.908
Дорогие эксперты!Напишите прогу - матрица 4x4,подсчитать среднее арифм. обратной диагонали!для проца. лучше для Intel 8080.Безвыходная ситуация-утром сдавать!с уважением SpraIt.
Отправлен: 23.04.2007, 20:51
Вопрос задал: SpraIt (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, SpraIt!

maxL equ 4
;код
xor si,si
xor ax,ax
mov cl,maxL
goC: add si,maxL-1
add al,[dataArray+si]
loop goC
;код
dataArray-Ваш однобайтный массив(матрица 4*4)
в итоге в AX получается полная сумма обратной диагонали,
если делить на четыре(без остатка) сдвигаете вправо дважды,
если нужно с остатком то используете команду DIV
AL-целая часть.
AH-остаток.
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 23.04.2007, 21:46
Оценка за ответ: 5
Комментарий оценки:
огромное спасибо!


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.51 (beta) от 27.04.2007
Яндекс Rambler's Top100

В избранное