Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив, нечто вроде консоли... 
:(
    Опции темы
Torrero
Дата 4.12.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



В общем есть массив:
Код

tmp        db        3 dup ('*')

Далее мы копируем в него 3 буквы введенные с клавы...Но далее мне нужно сравнивать то что было введено с клавы с другой строкой...Сравниваем конечно же при помощи 
Код

repe cmpsb
 
в регистр SI заносим адрес строки с которой сравниваем, а в DI адрес массива  заполненным с клавиатуры.Т.к. все это в формате .сом и грузится с дискеты(пишу свою ос) offset не работает, поэтому указываем адрес в оперативке, и для массива это "846bh"...
Но конечно же нифига сработало,и как не крутись желаемого результата  не было (вводишь команду, сравнивает, и выдает то что что должен),но потом пошел по другому пути:
Код

        cmp        tmp[0], 'a'
        je        b
a1:   cmp        tmp[0], 'A'
        jne        er
b:     cmp        tmp[1], 'b'
        je        cc
b1:   cmp        tmp[1], 'B'
        jne        er
cc:    cmp        tmp[2], 't'
        je        About
c1:    cmp        tmp[2], 'T'
        je        About
Прошу прощения за предыдущую ересь ,видимо слишком пересидел за компом, радиация на моск повлияла:)  

и всё заработало!вводишь команду и она чёто делает, и даже то что должна делать!!!
Тогда решил для эксперимента вывести на экран разными способами содержимое массива:
1.
Код

gotoxy  macro    xx, yy
        mov        AH, 02h
        mov        BH, 0
        mov        DH, xx
        mov        DL, yy
        int        10h
        endm
symb    macro    sym, col, num
        mov        AH, 09h
        mov        AL, sym    
        mov        BH, 00h
        mov        BL, col
        mov        CX, num                
        int        10h
        endm
----------------------------
        gotoxy  20, 30
        symb    tmp[0], 1Ah, 1
        gotoxy  20, 31
        symb    tmp[1], 1Ah, 1
        gotoxy  20, 32
        symb    tmp[2], 1Ah, 1


2.
Код

        mov    AX, 1301h        
        mov     BP, 846bh
        mov    CX, 3            
        mov    DH,    16            
        mov        DL, 37        
        mov    BH, 00h            
        mov    BL, 1Ah
        int    10h


В первом случае все нормально то что ввел с клавы то и выводиться на экран, но во втором случае появляются эти чертовы звездочки!!!поэтому у него и получалось все время что строки не равны!

А теперь наконец-то вопросы: 
1. если по адресу где хранится массив находятся звездочки то где же в памяти храниться то что я ввел с клавы?  
2. как лучше всего сравнить то что ты ввел с  клавиатуры с другим словом???

Это сообщение отредактировал(а) Torrero - 8.12.2008, 16:33
PM MAIL   Вверх
Mikl_
Дата 5.12.2008, 04:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Torrero, Ох уж эти мне осе-писатели. Не слишком, ли вы себе сложную задачу выбрали для первого раз?
Глядя на код   
Код
cmp tmp[0], 'a'
jne        a1
jmp        b
a1: 
  хочется плакать, потому что должно быть
Код
cmp tmp[0], 'a'
 je        b
a1: 
  если сравниваете большие и маленькие латинские буквы посмотрите вначале на их ASCII-код  'A'=41h 'a'=61h 'B'=42h 'b'=62h ... 'Z'=5Ah 'z'=7Ah т.е. установи 5-ый бит в 0 или 1 и сравнений станет в два раза меньше. Прежде чем браться за сложные задачи -- необходимо научиться пользоваться отладчиком, тогда и вопросы: "если по адресу где хранится массив находятся звездочки то где же в памяти храниться то что я ввел с клавы?"
 Torrero, не стесняйся задавать вопросы, но в начале прочитай хотябы ту литературу по ассемблеру, что размещена в 
ASM --> Asm для начинающих --> Сборник книг по Ассемблеру многое, очень многое там разжовано, не стесняйтесь читать и эксперементировать

Это сообщение отредактировал(а) Mikl_ - 5.12.2008, 04:50
PM MAIL   Вверх
Torrero
Дата 5.12.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Цитата

Ох уж эти мне осе-писатели. Не слишком, ли вы себе сложную задачу выбрали для первого раз?

Вы думайте я от нефиг делать начал писать эту "ос"? у нас предмет есть такой,и на лабах нужно написать свою ос.
Код

cmp tmp[0], 'a'
jne        a1
jmp        b
a1: 

А вот эту фигню(кстати спасибо что указали, а то я и не заметилsmile, я написал несколько недель назад, когда только начинал изучать асм, а сейчас я это где-то откопал и не глядя скопировал...

Насчет дебаггера признаюсь, нас в универе не учили им пользоваться, вроде бы чего-то говорили про ему8086..В общем какой вы посоветуйте?   

З.Ы. И все же, посоветуйте плиз как узнать адрес в оперативке, учитывая то что сама прога загружается по адресу 8400Н... я думаю дебаггер тут вряд ли поможет ведь она работает с дискеты, а если запускать из виндоус, то это уже совсем "другое" будет...  

Это сообщение отредактировал(а) Torrero - 5.12.2008, 11:12
PM MAIL   Вверх
Mikl_
Дата 5.12.2008, 12:29 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Torrero, для работы с программами под DOS ищи afd.exe для работы с программами под Windows для начинающего лучше всего OllyDbg -- изверг у вас преподаватель, у вас основ, то программирования не заложено, а ему уже оси подавай, он наверное не в курсе, что это работа не одного года для коллектива из нескольких опытных программистов -- примерно, то же самое если ты только начал осваивать арифметику, а вам пытаются преподавать интегральное и дифференциальное исчисление. Поубывав бы таких преподов. Программа не может загружаться по фиксированному адресу -- она ляжет туда, куда ее ОС запихнет, а какой там уж будет адрес это еще бабушка надвое сказала. Прежде чем ты будешь запускать свою программу с дискеты тебе много раз придется запускать ее с жесткого диска под управлением Windows и исправлять ошибки. Не обижайся
PM MAIL   Вверх
Torrero
Дата 5.12.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Цитата(Mikl_ @ 5.12.2008,  12:29)
Torrero, для работы с программами под DOS ищи afd.exe для работы с программами под Windows для начинающего лучше всего OllyDbg -- изверг у вас преподаватель, у вас основ, то программирования не заложено, а ему уже оси подавай, он наверное не в курсе, что это работа не одного года для коллектива из нескольких опытных программистов -- примерно, то же самое если ты только начал осваивать арифметику, а вам пытаются преподавать интегральное и дифференциальное исчисление. Поубывав бы таких преподов. Программа не может загружаться по фиксированному адресу -- она ляжет туда, куда ее ОС запихнет, а какой там уж будет адрес это еще бабушка надвое сказала. Прежде чем ты будешь запускать свою программу с дискеты тебе много раз придется запускать ее с жесткого диска под управлением Windows и исправлять ошибки. Не обижайся

Послушайте я и не пытаюсь претендовать на мега-прогера, да и про уровень высшего образования в молдове я спорить не буду, хотя много чего мог бы сказать...Я просто хочу что бы мне подсказали в данном конкретном случае:как сделать то что было описано мною в первом посте! Я и сам прекрасно понимаю что нифига не знаю про ассемблер, просто сейчас мне надо сделать лабы, а времени для детального изучения у меня не особо есть, тем более я очень сомневаюсь что даже если прочту некоторые книги про асм, это хоть чем-то поможет в написании лабораторных, ведь во многих книжках упор  в основном идет но программирование под вундоус . 
Цитата

Программа не может загружаться по фиксированному адресу -- она ляжет туда, куда ее ОС запихнет,

Не совсем понял, если я например написал загрузчик который загружает со 2-го сектора дискеты в память по адресу 7e00h, ведь эта прога будет находиться именно поэтому адресу, и "контроль" ты передаешь подобным образом:
Код

mov    BX, 7е00h   
 jmp    BX

Что значит 
Цитата

она ляжет туда, куда ее ОС запихнет
???
Какая ос??? ведь мы грузимся с дискеты на которой у нас есть загрузчик на 1-ом секторе и другая белиберда на других секторах?!
PM MAIL   Вверх
Mikl_
Дата 8.12.2008, 04:15 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Torrero, пока ты учишься -- никому в голову не придет обвинять тебя в том, что ты пытаешься "претендовать на мега-прогера". Настораживает вот эта фраза "Я и сам прекрасно понимаю что нифига не знаю про ассемблер, просто сейчас мне надо сделать лабы, а времени для детального изучения у меня не особо есть, тем более я очень сомневаюсь что даже если прочту некоторые книги про асм, это хоть чем-то поможет в написании лабораторных" -- в переводе с молдавского  с нативного языка автора -- хотя мне и подсказали где взять книги, но читать их я не буду, ибо влом, а лучше, чем ерунду советовать, делайте за меня.  smile Нет, дружок, не выйдет, вот тебе удочки, а рыбу сам лови, мне твой диплом ни к чему  user posted image

Это сообщение отредактировал(а) Mikl_ - 9.12.2008, 14:47
PM MAIL   Вверх
Torrero
Дата 8.12.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Цитата(Mikl_ @ 8.12.2008,  04:15)
Torrero, пока ты учишься -- никому в голову не придет обвинять тебя в том, что ты пытаешься "претендовать на мега-прогера". Настораживает вот эта фраза "Я и сам прекрасно понимаю что нифига не знаю про ассемблер, просто сейчас мне надо сделать лабы, а времени для детального изучения у меня не особо есть, тем более я очень сомневаюсь что даже если прочту некоторые книги про асм, это хоть чем-то поможет в написании лабораторных" -- в переводе с молдавского -- хотя мне и подсказали где взять книги, но читать их я не буду, ибо влом, а лучше, чем ерунду советовать, делайте за меня.  smile Нет, дружок, не выйдет, вот тебе удочки, а рыбу сам лови, мне твой диплом не к чему  smile

Ты слишком слабо акцентировал внимание на том что я молдаванинsmile, надо было ченить пошутить про гастарбайтеров!!! Плюс еще обычно любят акцентировать на том кто тут взрослый дядька а кто сопляк с невысохшим  молоком на губах, так что, как то ты слабо...
Мне вот одно непонятно: где ты прочитал что я прошу сделать что-то за меня? у меня все лабы итак почти готовы, если бы я хотел чтобы все сделали за меня я написал бы в центр помощи(хоть я и молдаванин но разделы различать умеюsmile), и здесь я лишь спросил как лучше все организовать чтобы не получилось куча ненужных сравнений.Не надо читать между строк и выдумывать чего-то лишнего...
Хотя не спорю может я не правильно, по дурацки, изложил в чем мой вопрос... Попытаюсь еще раз:
   Я считываю в массив с клавиатуры, 3 буквы, (изначально массив заполнен звездочками) но когда я вывожу содержимое массива  на экран (вывожу путём указания адреса в памяти этого массива), то получаются все равно звездочки, но если я укажу номер элемента ( mas[0] например) то все прекрасно работает. А теперь внимание!вопрос: где же тогда содержится в памяти то что я ввел с клавы? как можно вывести на экран весь массив сразу, а не по одной букве( сначала mas[0] выводишь, затем mas[1], и так далее)?
   Сначала ты написал про то что нужно пользоваться отладчиком для того чтобы выяснить адрес, я попытался объяснить что все загружается с дискеты!Эта программа сама дальше подгружает еще кое-какие файлы в память, поэтому очень как то проблематично использовать отладчик в виндоусе... Но затем ты написал какой-ко бред про то что прога ложится в память туда куда его ос закинет и посоветовал сначала позапускать её под виндой, но опять же, повторюсь, это проблематично поскольку загружая с дискеты (функция 02Н, 13 прерывания) я указываю в регистре ВХ адрес куда вся это лабуда загружается, а затем, в зависимости от указанного адреса, совершаю другие насильственные акты над ассемблером путём указания адреса smile ( ну там вывод на экран нескольких строк, операции с массивом и т.д. и т.п.)
  Кстати заметь в моем посте, до этого, я тебя спросил нормально, что ты имел ввиду когда сказал "она ляжет туда, куда ее ОС запихнет". Но ты это проигнорировал... видимо тебе интересней пофлудить и повыяснять отношения...

З.Ы. 1 Хоть я считаю что все люди братья(ну или сестрыsmile разницы практически нет) и стараюсь ко всем относится дружелюбно, всё же, тебе я скажу:тамбовский волк тебе "дружок"...
З.Ы. 2 Видимо придется делать кучу сравнений(((...

Это сообщение отредактировал(а) Torrero - 8.12.2008, 15:06
PM MAIL   Вверх
Mikl_
Дата 9.12.2008, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Torrero, ясли б я хотел акцентировать внимание, то пошутил бы и про румын, и про мамалыгу, и про гастербайтеров, но заметь я этого не делал. Во вложении отладчик Advanced Fullscreen Debug v2.0 

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  afd.zip 46,12 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.