Aleksei
рекурсия это игрушка дьявола ежжи
JeisonWi
это вам в lambda calculus + scheme/lisp
Kirill
Нужно сравнить эллемент массива с числом. Как это сделать используя cmps (Цепочечные команды)
Kirill
?
Kirill
Хотя не. Как сравнить используя цепоччечные команды? Я вообще не понимаю
ovf
ужас, чему вас учат. зачем сравнить? ты хочешь найти значение в памяти?
Kirill
Ну не
Kirill
Мне нужно подсчитать эллменты масссива, которые > 0
ovf
scas
Kirill
это же не цепочечная команда
ovf
что такое "цепочечная команда"? я нагуглил http://archkomp.narod.ru/lab09.htm (в русскоязычных терминах не силён)
http://programm.ws/page.php?id=53
тут ни слова про цепочечные команды
Kirill
Так мне нужно сравнить с числом, которое больше нуля
http://looch-disasm.narod.ru/refe28.htm
вот хорошо написано
В русской терминологии стало обычным эти команды называть цепочечными, а не строчными, хотя по-английски они называются "string instructions".
Цепочка - это элементы данных, расположенные в памяти последовательно, без пропусков. Каждый элемент это либо байт (один байт), либо слово (два байта), либо двойное слово (четыре байта). Говоря другими словами, это просто массив, расположенный в оперативной памяти, массив из элементов в 1, или в 2, или в 4 байта. Но для цепочечных команд мы все же используем термин "цепочка" а не массив.
Основное достоинство цепочечной команды состоит в том, что ее можно превратить в цикл, чтобы обработать сразу всю цепочку элементов. Цикл, который запрограммирован внутри процессора. Так, например, выполняя всего одну команду SCAS, процессор может просмотреть всю длинную цепочку целиком в поисках нужного элемента данных. С помощью одной коротенькой машинной команды просканировать мегабайты данных в памяти компьютера.
я думаю речь о сравнении нескольких элементов массива за проход
ovf
эти исторические строковые инструкции уж точно не делают ничего по нескольку за один проход
Kirill
Мне просто найти суммы чиссел
Kirill
Которые больше нуля
Kirill
И все
есть мысли как писать?
ovf
ну найди
Kirill
нету)
бля совсем? чикл сделай
в статье которую я скинул всё расписано
только самого кода нет
ovf
когда совсем нет мыслей, можно взять компилятор си и спросить у него
Kirill
Я не понимаю как реализовать
Kirill
Я начну сравнение
не не
у тебя будет цикл
Kirill
Получится чм\исло больше нуля
Kirill
Ну
Kirill
Напиги основные строчки, если не сложно
число больше нуля добавляешь к условной переменной
потом возвращаешься на начало
и в случае если меньше нуля то сразу переход на начало
без сложения
щас попробую
ovf
ну серьёзно, вместо чата ведь можно использовать компилятор. он железный, ему легко. https://godbolt.org/g/KKVuwi
не тру
это не то
но разобраться не трудно
В русской терминологии стало обычным эти команды называть цепочечными, а не строчными, хотя по-английски они называются "string instructions".
Цепочка - это элементы данных, расположенные в памяти последовательно, без пропусков. Каждый элемент это либо байт (один байт), либо слово (два байта), либо двойное слово (четыре байта). Говоря другими словами, это просто массив, расположенный в оперативной памяти, массив из элементов в 1, или в 2, или в 4 байта. Но для цепочечных команд мы все же используем термин "цепочка" а не массив.
Основное достоинство цепочечной команды состоит в том, что ее можно превратить в цикл, чтобы обработать сразу всю цепочку элементов. Цикл, который запрограммирован внутри процессора. Так, например, выполняя всего одну команду SCAS, процессор может просмотреть всю длинную цепочку целиком в поисках нужного элемента данных. С помощью одной коротенькой машинной команды просканировать мегабайты данных в памяти компьютера.
это хуйня
chain instruction
правильное название
но сайт что надо
ovf
ну пожалуйста, используй cmps, если хочется программировать под 80386. это буквально cmp и add.
Anonymous
Здравствуйте!
Проясните вопрос с сегментами, пожалуйста
Anonymous
Например, есть адрес сегмента видеопамяти - 0xB800. Это адрес где? Не в ОЗУ ведь
Anonymous
Прошу прощения за глупости новичка
John
Я вообще с видеобуферами не работал, но могу предположить, что в видеопамяти. Насколько я знаю видюха раньше работала в двух режимах - графическом и текстовом, соответственно для этого у нее были разные буферы и даже своя плата, которая занимались знакогенерацией, сейчас вроде бы такого нет, поправьте если ошибаюсь
В инете нарыл вот такую штуку
http://www.shikadi.net/moddingwiki/B800_Text
Он же напрямую выводится на дисплей
в зависимости от режима там хранятся ASCII-байты или же данные о цвете пикселя
Поэтому адресуемой памяти в реальном режиме 640Кб
Anonymous
Да, но получается, что в оперативке хранится копия памяти видеоадаптера?
Если я не ошибаюсь в этой модели нет видеоадаптера как такового
Anonymous
Хм.. А как тогда получить доступ к памяти видеокарты?
опять же, советую глянуть emu8086 там всё это наглядно показано
Anonymous
Интересная штука, спасибо
Anonymous
Я вообще с видеобуферами не работал, но могу предположить, что в видеопамяти. Насколько я знаю видюха раньше работала в двух режимах - графическом и текстовом, соответственно для этого у нее были разные буферы и даже своя плата, которая занимались знакогенерацией, сейчас вроде бы такого нет, поправьте если ошибаюсь
В инете нарыл вот такую штуку
http://www.shikadi.net/moddingwiki/B800_Text
Anonymous
Anonymous
Программа отработала, память не поменялась
Anonymous
Это всё ещё к тому вопросу про сегменты
John
это вся программа?
Anonymous
Да
Ned
Асмщики
Ned
Где почитать о том, как работает выделение памяти?
Ned
Всяческое. Процессу, системе, в куче, вне кучи, итд
zh
Strace->func->man->src
Shmelev
У Таненбаума хорошо про это было
Shmelev
в операционных системах
🦥Alex Fails
#book #os
Vladimir
#book #os
А чего у Таненбаума ничего про Миникс?