Что такое десятичный формат? FBSTP?
» Assembler
ну как бы да
сделал. только вот не понятно почему на такую команду пишет
fist несоответсвие размеров
fistp а на такую не пишет. хотя вроде по описанию это означает только выталкивание результата из сопроцессора
разобрался операции с 80 битовыми только опции с p могут делать
fist несоответсвие размеров
fistp а на такую не пишет. хотя вроде по описанию это означает только выталкивание результата из сопроцессора
разобрался операции с 80 битовыми только опции с p могут делать
а вот интересно на всех компьютерах сопроцессор есть?
Уже да. Все FPU сынтегрированы с CPU, начиная с i486. Исключения были только для 486SX и K°, эдакие целероны. Начиная с Pentium (который P5) исключений больше нет.
Добавлено:
Вот если ты имел ввиду не только x86, то там сложнее. Не у всех, но из процессоров десктопного направления таковые редкость.
Добавлено:
Вот если ты имел ввиду не только x86, то там сложнее. Не у всех, но из процессоров десктопного направления таковые редкость.
просто насколько корректно использовать в программе сопрцоессор
Добавлено:
скажем если у человека винда хп, или даже 2000 - у него сопроцессор есть? хотя обычно программы соместимость пишут и на 98 винду.
чета не смог с ходу придумать как 64 битное 16 ричное число в десятичное перевести без сопроцессора
Добавлено:
15 значное десятичное асци число в шестнадцатиричное придумал как перевести, а как 64 битное 16 ричное в десячтиное никак не придумывается, разве что в столбик
Добавлено:
скажем если у человека винда хп, или даже 2000 - у него сопроцессор есть? хотя обычно программы соместимость пишут и на 98 винду.
чета не смог с ходу придумать как 64 битное 16 ричное число в десятичное перевести без сопроцессора
Добавлено:
15 значное десятичное асци число в шестнадцатиричное придумал как перевести, а как 64 битное 16 ричное в десячтиное никак не придумывается, разве что в столбик
Цитата:
а вот интересно на всех компьютерах сопроцессор есть?Начиная с Pentium инегрированы, а в ранних моделях нужно смотреть на материнскую плату.
Цитата:
486SX и K°, эдакие целероныCeleron скорее обозначает кастрированный L2 Cache, а не отсутствие сопроцессора.
Цитата:
просто насколько корректно использовать в программе сопрцоессорКорректно !
Даже при его отсутствии ОС Windows сэмулируют выполнение его комманд.
никто не подскажет - задаю палитру видеоадаптеру из 256 цветной бмп картинки.
в бмп же все задом наперед, поэтому пытаюсь цвета поллитры задавать от FF к 0. и вот фигу, не задается. а от 0 к FF задается. нельзя что ли задом наперед?
в бмп же все задом наперед, поэтому пытаюсь цвета поллитры задавать от FF к 0. и вот фигу, не задается. а от 0 к FF задается. нельзя что ли задом наперед?
bomzzz, "задом наперед" имеется в виду не от FF к 0, а Blue Green Red вместо Red Green Blue в компонентах цвета.
Если BMP 32-х битный, то соответственно Blue Green Red Alpha.
А сама палитра именно что от 00 к FF индексирована.
Если к видеоадаптеру обращаетесь напрямую (или через прерывание int 10 в DOS) и он VGA, то у него значения составляющих в палитре хранятся в регистрах по 6 бит, то есть значения составляющих в палитре нужно еще и сдвигать на два разрядов вправо, чтобы поместились в сетку регистров контроллера, иначе на экране будет фигня вместо изображения.
Если BMP 32-х битный, то соответственно Blue Green Red Alpha.
А сама палитра именно что от 00 к FF индексирована.
Если к видеоадаптеру обращаетесь напрямую (или через прерывание int 10 в DOS) и он VGA, то у него значения составляющих в палитре хранятся в регистрах по 6 бит, то есть значения составляющих в палитре нужно еще и сдвигать на два разрядов вправо, чтобы поместились в сетку регистров контроллера, иначе на экране будет фигня вместо изображения.
нет имееться ввиду задавать палитру не от 0 до FF а от FF к 0.
если бы фигня получилась это было бы еще ничего, а не получается вообще ничего при таком задании поллитры
Добавлено:
поллитра то идет правильно в бмп, только порядок цветов не в том порядке, но цикл loop в ассемблере идет в сторону уменьшения от заданного числа циклов до 0, поэтому для оптимизации кода я заменил организованные цикл через проверку на loop, и задавал поллитру адаптеру задом наперед - от ff до 0. но в этом случае ничего не получилось картинка получилась черным квадратом, то есть как будто не задались цвета. вот я и спрашиваю можно ли задавать поллитру так - потому как не нашел никаких замечаний на этот счет
если бы фигня получилась это было бы еще ничего, а не получается вообще ничего при таком задании поллитры
Добавлено:
поллитра то идет правильно в бмп, только порядок цветов не в том порядке, но цикл loop в ассемблере идет в сторону уменьшения от заданного числа циклов до 0, поэтому для оптимизации кода я заменил организованные цикл через проверку на loop, и задавал поллитру адаптеру задом наперед - от ff до 0. но в этом случае ничего не получилось картинка получилась черным квадратом, то есть как будто не задались цвета. вот я и спрашиваю можно ли задавать поллитру так - потому как не нашел никаких замечаний на этот счет
нет можно задом наперед задавать. видимо какую то ошибку ляпнулю заново переписал все работает
на 7 байт короче стало
на 7 байт короче стало
как досовская программа может получить свое имя? ну или открыть сама себя??
если на нулевую строку сослаться она вообще ниче не открывает.
исли из псп выудить имя cmdline= , то под виндой такое не работает
если на нулевую строку сослаться она вообще ниче не открывает.
исли из псп выудить имя cmdline= , то под виндой такое не работает
DOS программы могли получить своё имя через PSP
например, вот здесь
ОПЕРАЦИОННАЯ СИСТЕМА DOS Прикладные программы в среде DOS Префикс программного сегмента
цитирую:
Цитата:
под Windows это всё работает (т.к. эмулируется работа DOS).
например, вот здесь
ОПЕРАЦИОННАЯ СИСТЕМА DOS Прикладные программы в среде DOS Префикс программного сегмента
цитирую:
Цитата:
Слово префикса с относительным адресом 002СН хранит сегментный адрес блока окружения, в котором находится несколько АSCIIZ-строк (последовательности символов в коде АSCII, заканчивающиеся нулевым байтом). Блок окружения наследуется от программы, которая вызывала функцию ЕХЕС для загрузки выполняющейся в данный момент программы. В блоке находится такая информация, как текущий путь, используемый программами файла СОММАND.СОМ для поиска выполнимых программ, расположение на диске самого файла СОММАND.СОМ, формат запроса пользователя, который выдается СОММАND.СОМ. Хвост команды - это остаток командной строки (после имени программы), запустившей транзитную программу; хвост команды копируется в префикс, начиная с относительного адреса 0081Н. Длина хвоста команды, без учета символа возврата в конце строки, помещается в байт с относительным адресом 0080Н.
под Windows это всё работает (т.к. эмулируется работа DOS).
если бы было так просто я бы не спрашивал, и естсественно сам проверил и попробовал сначала
разница как видищь существенная и главное об имени ни слова
Добавлено:
разве через Е2 выполнить комманду echo %0 это работает с третьего доса. и получить имя из входного потока консоли.
разница как видищь существенная и главное об имени ни слова
Добавлено:
разве через Е2 выполнить комманду echo %0 это работает с третьего доса. и получить имя из входного потока консоли.
bomzzz, ну ты б прочитал бы какой-нибудь материал по блоку окружения, а. За концом блока окружения (два подряд нуля) лежит его расширение. Сначала WORD - циферка, сколько строк в расширении, затем сами строки. Первая строка, и чаще всего единсвтенная - полный путь с маршрутом.
если бы знать заранее что читать может и почитал бы
psp кончается двойным нулем, потом идет 01 00, и за ним путь с именем заканчивающееся нулем.
psp кончается двойным нулем, потом идет 01 00, и за ним путь с именем заканчивающееся нулем.
а как некоторые программы умудряются так открывать файлы для записи, что эти файлы остаются доступны и для чтения и для записи другим программам, которые так тоже умеют (записи) и не умеют тоже (только чтения).
они какую то специальную функцию используют или пишут прямо на диск, или перехватывают чужие хендлы и открывают файл только на момент записи и тут же закрывают... типа такого
они какую то специальную функцию используют или пишут прямо на диск, или перехватывают чужие хендлы и открывают файл только на момент записи и тут же закрывают... типа такого
bomzzz
Читай описание функции CreateFile, флаги FILE_SHARE_******.
Читай описание функции CreateFile, флаги FILE_SHARE_******.
http://www.vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_createfile.htm
а тогда у файла будет свой указаетль для каждого открывшего его процесса или надо самому считать указатель через овердапед структуру. тут чета ниче не написано пра ето.
а тогда у файла будет свой указаетль для каждого открывшего его процесса или надо самому считать указатель через овердапед структуру. тут чета ниче не написано пра ето.
bomzzz
У каждого хэндла, возвращаемого CreateFile, свой указатель.
У каждого хэндла, возвращаемого CreateFile, свой указатель.
спс
Кто-нибудь сталкивался с эффективной программой перемножения матриц?
Vostrikovskiy
википедию посмотри
википедию посмотри
bomzzz
Цитата:
Ну например так:
mov ax, 1203h
int 2Fh
lds dx, ds:[bp-1Ah]
В результате dx будет указывать на имя программы. Заработает это под windows или нет - х.з.
Цитата:
как досовская программа может получить свое имя?
Ну например так:
mov ax, 1203h
int 2Fh
lds dx, ds:[bp-1Ah]
В результате dx будет указывать на имя программы. Заработает это под windows или нет - х.з.
как в TASM скомпилировать BIN файл?
Люди, хочу начать учить ассемблер. Подскажите, плиз, с чего начать? Какую литературу почитать?
любую. по ассемблеру нет хороших книжек - хороших в смсысле просто и доходчиво написанных, в расчете на знания школьника. одной не обойдешься. будешь из разных выкалупывать. по крайней мере мне не попадалось. для любой уже нужна некая база знаний, опираясь на которую ты сам и выбирай что тебе лучше
Добрый день,
Мне нужно ввести с клавиатуры восьмеричное число и перевести его в десятичное. Сама процедура мне понятна. Но как дать асму знать что это именно восьмеричное число? Пробовал добавлять "o" например 173o. Но мне это не очень подходит. Поделитесь пож кто что знает.
Спс заранее
Мне нужно ввести с клавиатуры восьмеричное число и перевести его в десятичное. Сама процедура мне понятна. Но как дать асму знать что это именно восьмеричное число? Пробовал добавлять "o" например 173o. Но мне это не очень подходит. Поделитесь пож кто что знает.
Спс заранее
iMPRE7
Цитата:
А зачем ?
В восьмеричном числе могут быть только цифры от 0 до 7, т.е. символы с кодами от 30h до 37h. Если введенная строка удовлетворяет этому условию, значит считать, что введено восьмеричное число, если в строке нашелся любой другой символ - выводить ошибку. Ну и код что-то вроде:
lea si, input_str ; введенная строка
mov cx, input_str_length ;длина введенной строки
test cx, cx
jz error ; строка нулевой длины нам не нужна
check_input:
lodsb
cmp al, 30h
jb error
cmp al, 37h
ja error
loop check_input ; проверяем поочередно все символы
jmp convert_input ; переходим на код конвертации в десятичное число
....
error:
тут_ругаемся_на_ошибку
Цитата:
Пробовал добавлять "o" например 173o
А зачем ?
В восьмеричном числе могут быть только цифры от 0 до 7, т.е. символы с кодами от 30h до 37h. Если введенная строка удовлетворяет этому условию, значит считать, что введено восьмеричное число, если в строке нашелся любой другой символ - выводить ошибку. Ну и код что-то вроде:
lea si, input_str ; введенная строка
mov cx, input_str_length ;длина введенной строки
test cx, cx
jz error ; строка нулевой длины нам не нужна
check_input:
lodsb
cmp al, 30h
jb error
cmp al, 37h
ja error
loop check_input ; проверяем поочередно все символы
jmp convert_input ; переходим на код конвертации в десятичное число
....
error:
тут_ругаемся_на_ошибку
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
Предыдущая тема: .NET GUI компоненты
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.