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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2012, 17:20   #11
galaxyblazer
Пользователь
 
Регистрация: 16.03.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
Подскажыте что не так в етом коде: компилируеться в турбо шел 3.0 но чет при запуске ничего не происходит...
.model small
.stack 100h
.data

lit1 db 'from-sql-active$',0dh,0ah,0
lit2 db (?)

.code

start:
mov ax,@data
mov ds,ax


mov bx, offset lit1
mov al,[bx]
test al,00010000b
jz if_no
ror al,3



if_no:
mov dl,'_'
mov si,offset lit1
c:mov bl,'-'
xchg ds:[si],dl
inc si
cmp bl,'$'
jne c

end_if:
mov ah,06h
int 21h

mov ax,4c00h
int 21h
end start

Последний раз редактировалось galaxyblazer; 18.03.2012 в 17:26.
galaxyblazer вне форума Ответить с цитированием
Старый 18.03.2012, 17:36   #12
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

1.
Цитата:
lit2 db (?)
вы в этот байт планируете поместить целую строку?

2.
Цитата:
ror al,3
внимательно почитайте задание. битовая ротация и байтовая - разные вещи

3.
Цитата:
mov dl,'_'
mov si,offset lit1
c:mov bl,'-'
xchg ds:[si],dl
inc si
cmp bl,'$'
jne c
в данном блоке вы вообще делаете что-то невообразимое. попробуйте подумать пошагово, какое значение находится в каждом из регистров. тем более, что я не вижу выхода из данного цикла.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 18.03.2012, 17:41   #13
galaxyblazer
Пользователь
 
Регистрация: 16.03.2012
Сообщений: 16
По умолчанию

в задании ошыбка. там смещение не байтовое а битовое.
в lit2 db (?) я должен поместить результат и вывисти его на екран.

а сдесь:
Код:
mov dl,'_'
 mov si,offset lit1
 c:mov bl,'-'
 xchg ds:[si],dl
 inc si
 cmp bl,'$'
 jne c
я меняю в строке "-"на "_" и возможно я что-то напутал с регистрами.
в lit1 у меня строка from-sql-active
galaxyblazer вне форума Ответить с цитированием
Старый 18.03.2012, 17:46   #14
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
lit2 db (?) я должен поместить результат и вывисти его на екран.
посчитайте количество байтов в строке - каким образом вы планируете их уместить в одном байте?

Цитата:
я меняю в строке "-"на "_"
нет, в данном коде вы заменяете каждый чётный символ нечётным, а каждый нечётный на "_".

Цитата:
там смещение не байтовое а битовое.
битовое смещение всей строки или только одного символа?
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 18.03.2012 в 17:49.
DiemonStar вне форума Ответить с цитированием
Старый 18.03.2012, 17:53   #15
galaxyblazer
Пользователь
 
Регистрация: 16.03.2012
Сообщений: 16
По умолчанию

проблема в том что заданием ограничен размер единицы данних , а именно байтом.
а ету часть кода я нарыл сдесь:http://www.cyberforum.ru/post1488945.html
mov dl,'_'
mov si,offset lit1
c:mov bl,'-'
xchg ds:[si],dl
inc si
cmp bl,'$'
jne c

Проверить 1-й символ: если его 5-й розряд единица , то сделать цыкличное смещение на 3 байта и поместить результат в строку lit2

Последний раз редактировалось galaxyblazer; 18.03.2012 в 17:56.
galaxyblazer вне форума Ответить с цитированием
Старый 18.03.2012, 17:57   #16
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Плохо скопировали... У вас:
Цитата:
xchg ds:[si],dl
а в оригинале:
Код:
cmpxchg ds:[si],dl
не замечаете некоторых различий?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 18.03.2012, 18:01   #17
galaxyblazer
Пользователь
 
Регистрация: 16.03.2012
Сообщений: 16
По умолчанию

замечаю.... но если я пишу
Код:
cmpxchg ds:[si],dl
компилятор выдает ошыбку : illegal instruction for currently selected processor(s)
galaxyblazer вне форума Ответить с цитированием
Старый 18.03.2012, 18:10   #18
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

потому что данная инструкция характерна для 80486 процессоров и выше. чтобы компилятор сделал всё правильно нужно написать данную директиву:
Код:
.486
и вообще - почитайте описание данной команды (cmpxchg). очень сильно вам поможет.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 18.03.2012, 18:13   #19
galaxyblazer
Пользователь
 
Регистрация: 16.03.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
потому что данная инструкция характерна для 80486 процессоров и выше. чтобы компилятор сделал всё правильно нужно написать данную директиву:
Код:
.486
и вообще - почитайте описание данной команды (cmpxchg). очень сильно вам поможет.
оу.... о директивах асемблера я мало еще знаю нам еще только основы дают на лекцыях
galaxyblazer вне форума Ответить с цитированием
Старый 18.03.2012, 18:22   #20
galaxyblazer
Пользователь
 
Регистрация: 16.03.2012
Сообщений: 16
По умолчанию

а с выводом как? у меня с ним проблемы.... прежде я не работал с выводом так как в заданиях нам не нужно было выводить что либо на екран .....
galaxyblazer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка строки tinton Помощь студентам 6 09.11.2011 15:39
Проверка значений строки iami Microsoft Office Excel 2 06.07.2011 18:16
Проверка строки dosha Общие вопросы C/C++ 1 27.12.2010 23:46
проверка строки Артэс Общие вопросы C/C++ 13 21.01.2010 00:28
Проверка строки SL1CK Общие вопросы C/C++ 4 08.06.2009 18:41