Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: MERCURY127
Дата сообщения: 07.08.2011 20:53
A1exSun, не обязательно же все точка в точку копировать, и уж совсем ни к чему в твоем случае модель ОСИ важна сама идея передачи маркера. Там внизу ссылка на ПДФ есть, где все красиво нарисовано...
Автор: A1exSun
Дата сообщения: 07.08.2011 23:04
MERCURY127
Да я и не собираюсь ничего передирать, мне интересно только что за маркер в 3 байта и как он идет.
В тех трех байтах какой-то id получателя, размер данных и рядом сами данные? Один такой маркер бегает по кругу, или множество, для каждого сообщения свой?
Типа получила машина данные, проверила ей ли они направлены, если да, забираем, иначе шлем дальше. Так?
Как выглядит сама сеть таким способом я представляю.
Автор: ItsJustMe
Дата сообщения: 07.08.2011 23:30
A1exSun
Я, вот, молча слежу за всем этим спектаклем. Молча, потому что слов не хватает. Не будешь же в постах ХА-ХА писать. Но наблюдать, с каким упорством ты бьешься головой о железобетонную стенку... Учитывая, что стенка заведомо крепче твоей головы. Вообщем, масса приятных впечатлений.
Все штука в том, что пытаешься выполнить нечто, выполнение чего совершенно бессмысленно. Ты знаешь, что ведя машину, можно остановиться где-то на обочине дороги, выйти и отлить. Потом сесть и поехать дальше. Так вот, вооруженный этим знанием, ты пытаешься то же самое воплотить, управляя самолетом на высоте 10 км. И почему-то не выходит...

Цитата:
Потому что лабораторная есть такая и лень писать в Turbo C в виртуалке.

И вот открылся он - смысл... А то я понять не мог, зачем ты хочешь убедиться, что твоя машина AT. Сомнения что ли в этом были?..
Вообщем, если позарез нужон real mode DOS, то без проца, работающего в real mode, и без этого самого DOS (учти, даже Win9x тебе не подойдет, ибо protected mode), тебе никак не обойтись. Либо грузи DOSину (твой i7-2600K умеет real mode, как ни странно), либо юзай виртуалку. Воть как-то какЪ.

PS: Windows (ну или Linux на худой конец) и TCP/IPv4 - не наш путь. Наш - DOS & Token Ring!
Автор: A1exSun
Дата сообщения: 07.08.2011 23:48
ItsJustMe
Мне нечего сказать.

Цитата:
PS: Windows (ну или Linux на худой конец) и TCP/IPv4 - не наш путь. Наш - DOS & Token Ring!

Не я выбираю.
Автор: KChernov
Дата сообщения: 08.08.2011 09:55
A1exSun

Цитата:
Не я выбираю.
Да ладно?
Цитата:
лень писать в Turbo C в виртуалке.

В виртуалке всё было бы гораздо проще.
Да и знания по виртуалке не пропадут точно.
Автор: A1exSun
Дата сообщения: 08.08.2011 19:20
KChernov
не я выбираю - Windows & TCP/IPv4 или DOS & Token Ring
Автор: akaGM
Дата сообщения: 22.09.2011 18:13
фигня какая-то...

встроенный ассемблер в С (из-под VS2008) не понимает размер real8...
так и пришлось всё перебивать на qword

я что-то не понимаю или что-то не так делаю?
Автор: rrromano
Дата сообщения: 23.09.2011 09:35
akaGM

_http://msdn.microsoft.com/en-us/library/6sfyyxt5(v=VS.90).aspx

Судя по ссылке, должен понимать.
Автор: akaGM
Дата сообщения: 23.09.2011 10:16
это ml понимает (и твоя ссыла на него), тут никаких вопросов,
а вот

_asm fld real8 ptr [esp+4];

в cl версии 15.x.x
отсос...
Автор: MERCURY127
Дата сообщения: 23.09.2011 10:24
А макрос определить #define real8 qword не прокатывает?
Автор: akaGM
Дата сообщения: 23.09.2011 10:59
MERCURY127
да всё прокатывает, тем более что я уже "просёрчил энд реплейсил", жёстко перебил всё на фиг, короче...

просто непонятки остались: что, выходит асм-вставки компилятся в cl отдельным блоком и этот блок -- кастрированный masm? зачем?

и главный вопрос: не я придумал эту проблему, ведь под какой-то Си это писалось...



ага

far в директории ../bin нашёл real8 только в ml.exe
Автор: G36
Дата сообщения: 24.09.2011 21:10
Как заставить FPU корректно выводить результат сложения двух чисел?
Скажем, есть два 80-битных числа: 0.1 и 2.0. Если каждое выводить по отдельности, то все работает хорошо, а если их сложить и вывести результат, получится что-то вроде 2.099999999999999999913263826201... . Я понимаю, что представить 0.1 конечным числом в двоичной системе нельзя, но почему тогда FPU нормально выводит его в первом случае?
Автор: akaGM
Дата сообщения: 24.09.2011 23:23
в первом случае ты выводишь само число, а во втором -- _результат операции_
нормальная точность для 80-битной плавающей точки, 19 цифр, ничего не поделаешь...

Цитата:
Как заставить FPU корректно выводить результат сложения двух чисел?
обрезай при выводе до 7-9 значащих цифр...
Автор: G36
Дата сообщения: 25.09.2011 12:49

Цитата:
обрезай при выводе до 7-9 значащих цифр...

А каким образом? Если мне нужно округлить число до десятых, я могу умножить его на 10^1, затем получившееся число округлить до целого, затем выводить как целое, но с учетом положения точки. Но часто такой способ дает неправильные результаты. Неужели придется писать округление самому?
Автор: MERCURY127
Дата сообщения: 25.09.2011 13:12
G36
x=2.099999999999999999913263826201F
printf( "%.18L", x)
2.1000000000000000000

Добавлено:
или тебе все-все-все надо руками делать??? так это дело проблемное библиотеки правильного вывода плавающей запятой занимают тысячи строк на асме...
Автор: akaGM
Дата сообщения: 25.09.2011 14:44
G36
а что тебя смущает? ну выводится так и что?
тем более весь "красивый" вывод (гуй) обычно отдают на верхний уровень, глупо это делать на асме...
Автор: G36
Дата сообщения: 25.09.2011 17:54

Цитата:
x=2.099999999999999999913263826201F
printf( "%.18L", x)
2.1000000000000000000


С помощью 16-битного TASM это можно сделать? Как через него подключить библиотеки?
Автор: akaGM
Дата сообщения: 26.09.2011 12:30
G36

Цитата:
Если каждое выводить по отдельности, то все работает хорошо, а если их сложить и вывести результат, получится что-то вроде 2.099999999999999999913263826201

а как (каким способом) ты это до сих пор выводил, с помощью ТАСМа?
Автор: G36
Дата сообщения: 26.09.2011 18:29

Цитата:
а как (каким способом) ты это до сих пор выводил, с помощью ТАСМа?

0. Отделяю дробную часть от целой с помощью fprem.
1. Получаю цифры, заталкиваю в стек, затем вывожу. Это целая часть и ней проблем нет.
2. Вывожу точку. Проблем нет.
3. Меняю в слове управления дефолтное округление на округление к нулю и использую следующий цикл для вывода дробной части:

Код: fract:
    fimul radix
    fld st(0)
    frndint
    fsub st(1), st(0) <-- проблема
    fistp digit
    mov ax, digit
    mov ah, 2
    or al, 30h
    mov dl, al
    int 21h
    ftst
    fstsw ax
    sahf
    loopne fract
Автор: MERCURY127
Дата сообщения: 26.09.2011 19:19
G36, не надо изобретать велосипед http://forum.sources.ru/index.php?showtopic=275156
ну и для общего образования... http://ru.wikipedia.org/wiki/Числа_с_плавающей_запятой
Автор: G36
Дата сообщения: 26.09.2011 23:55
MERCURY127
Все способы выводят так же плохо. Числа с плавающей точкой знаю.
Автор: akaGM
Дата сообщения: 27.09.2011 00:21
G36
ну оформи свой асм как функу и зови её в Сях для printf()
не подойдёт?
Автор: G36
Дата сообщения: 27.09.2011 00:50
akaGM
Не-а, не подойдет
В общем-то я уже решил для явно заданной точности. Пока что этого достаточно, спасибо всем.
Автор: akaGM
Дата сообщения: 27.09.2011 01:28
G36
ну и славно...

кстати, ты только цифры выводишь?
or al, 30h
Автор: MERCURY127
Дата сообщения: 27.09.2011 09:17
Не знаю, как в ТАСМе, а в МАСМе я один раз линковал Си РТЛ, как раз для этой цели... Но... Разбирать порядок заталкивания данных в стек пришлось опытным путем, а само заталкивание и очистку надо ручками делать...

Добавлено:
И весит эта ртл 12 кб
Автор: akaGM
Дата сообщения: 27.09.2011 09:51
тут на самом деле неважно какой АСМ, важен язык и библиотеки высокого уровня...
например, к дельфям ты заимучишься линковаться...
Автор: MERCURY127
Дата сообщения: 27.09.2011 09:57
Да да но то был дос, и естественно, к масму я линковал мс си ртл - у мс, слава богу, перекрестный линкаж между разными своими языками отлажен неплохо
Автор: akaGM
Дата сообщения: 27.09.2011 10:07

Цитата:
Разбирать порядок заталкивания данных в стек пришлось опытным путем, а само заталкивание и очистку надо ручками делать...

к масму я линковал мс си ртл


а у меня был M$ "Language Reference and Mixed-Language Programmer's Guide"

:D
Автор: Volk870707
Дата сообщения: 29.09.2011 18:37
DMA - контроллер, как микросхема. Его назначение. Производительность ПК.




Добавлено:
В ассемблере ничего не понимаю может кто нибудь поможет разобраться


Добавлено:
DMA - контроллер, как микросхема. Его назначение. Производительность ПК .    Алгоритм решения задачи;
.    Расчетная часть в виде одного или нескольких примеров решения задачи; как правило, это написание программы для персонального компьютера на языке Ассемблер. В некоторых случаях допускается пользоваться связкой языка высокого уровня с языком Ассемблер, например: Си – Ассемблер или Паскаль – Ассемблер. Также допустимо выполнение в этой части графического приложения в виде схемотехнического и конструкторско-технологического материала. Программа должна сопровождаться протоколом результатов своей работы.
Автор: akaGM
Дата сообщения: 29.09.2011 18:55
Volk870707
думаю, с такими вопросами тебе сразу сюда:

http://forum.ru-board.com/topic.cgi?forum=33&topic=2395#1

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.