С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065

Есть ли информация по работе на сопроцессоре с упакованными числами

09.12.2012, 22:14. Показов 1140. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть инфа по работе на сопроцессоре с упакованными числами? типа загрузка, их в сопроцессор, выгрузка, вывод, и самое главное ввод. буду благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2012, 22:14
Ответы с готовыми решениями:

Windows 7 с упакованными драйверами SATA
Помогите найти где можно скачать семерку или висту с упакованными драйверами для жесткого диска

Информация по работе с файлами в Qt
Доброго времени суток! Первый раз в жизни пишу на форум, поскольку всегда справлялся сам. Но обстоятельства сложились так, что нужно срочно...

Информация по работе с Com-портом.
Всем привет! Народ, дайте ссылку(ки) на инфу по работе с СОМ портом.(интерфейсы, методы...) а то я немного запутался, лазяя по...

15
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
09.12.2012, 22:49
Тут есть, но на инглише
1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,758
10.12.2012, 03:39
Fatal Error, проще паренной репки!
  • FBLD SRC – загрузка в ST(0) десятичного упакованного числа из 80-битной области памяти SRC
  • FBSTP DST – извлекает десятичное упакованное число из вершины стека и записывает его в 80-битную область памяти DST, вершина стека FPU очищается
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
10.12.2012, 08:11  [ТС]
А как ввести упакованное вещественное число?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,758
10.12.2012, 08:58
Fatal Error, а это не упакованное, а обычное BCD-число (это когда 1468h на самом деле 5BCh), для работы с упакованными вещественными числами используют ХММ-арифметику

Добавлено через 14 минут
чтобы было понятнее
Assembler
1
2
3
4
5
6
7
8
9
.code
    finit
    fbld a
    fst res1;st=1.23456789e+08
    fistp res2;st=123456789
.data
a dt 123456789h; 89 67 45 32 01 00 00 00 00 00
res1 dd ?      ; A3 79 EB 4C 00 00 00 00
res2 dd ?      ; 07 5B CD 15 00 00 00 00
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
10.12.2012, 09:11  [ТС]
Вобщем мне надо ввести два числа, преобразовать их в bcd, и потом грузить в сокамень? И еще: вот ты загрузил в ФПУ 123456789h, а что надо сделать, чтобы получить 123.456789? Делить в цикле на 10?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,758
10.12.2012, 10:40
  1. В общем мне надо ввести два числа, преобразовать их в bcd, и потом грузить в сокамень?
    вводишь с клавиатуры через 0A функцию 21h прерывания строку 31h, 32h, 33h, 34h затем пропускаешь каждый символ через and string[bx],0Fh и сдвигаешь на 4 разряда то влево, то в право и получаешь а=1234h затем загружаешь в ФПУ командой fbld a и возвращаешь командой fistp x, x=4D2
  2. вот ты загрузил в ФПУ 123456789h, а что надо сделать, чтобы получить 123.456789?
    нужно в ФПУ один раз разделить на 100 и выгрузить результат командой fstp
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
10.12.2012, 14:11  [ТС]
Можешь дать пример ввода таковым образом? Ато не совсем понятно.

Добавлено через 1 час 31 минуту
Mikl___, ругается на сдвиг
.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
model small
.data 
        
        buf db 13, ?, 14 dup (?)
        a dt ?
.stack 256
.code
start:
       mov ax,@data                 ;настраиваем сегментные регистры на сегмент данных
       mov ds,ax
       
       mov ah, 10
       mov dx, offset buf
       int 21h
    mov si, 2
    mov di, 0
    mov cl, buf[1]
@@1:
    mov al, buf[si]
    and al, 0Fh
    mov byte ptr a[di], al
    shr a, 4
    inc si
    inc di
    loop @@1
    
       
    finit
    fbld a
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,758
10.12.2012, 14:21
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
; masm dos exe #
.286
.model small
.code
start:  mov ax,@data
    mov ds,ax
    mov es,ax
    mov ah,9
    mov dx,offset string
    int 21h
    mov ah,0Ah
    mov dx,offset buffer
    int 21h
    mov si,offset buffer+2
    mov di,offset res
    mov cx,2
@@: lodsb
    mov ah,al
    shl ah,4
    lodsb
    and al,0Fh
    or al,ah
    stosb
    loop @b
    mov ah,4Ch
    int 21h
.data
string db "введи четыре цифры и нажми на Enter",0Dh,0Ah,"$"
res dw ?
buffer db 5,?,5 dup (0)
end start
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
10.12.2012, 14:42  [ТС]
Mikl___, а как его теперь загрузить в сопроцессор? надо только dt, на dw ругается о несоответствии размера

Добавлено через 11 минут
а вообще в задание так сказано: Количество байтов в целых и дробных частях числа: 6.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,758
10.12.2012, 14:57
Fatal Error, переделай мою программу чтобы было
string1 db "введи целую часть числа и нажми на Enter",0Dh,0Ah,"$"
string2 db "введи дробную часть числа и нажми на Enter",0Dh,0Ah,"$"
и res1 и res2 не два байта, а столько сколько указано в задании
при вводе дробной части разделишь ее на https://www.cyberforum.ru/cgi-bin/latex.cgi?{10}^{n}, где https://www.cyberforum.ru/cgi-bin/latex.cgi?n количество введенных цифр и сложишь в сопроцессоре целую и дробную части
и вообще, девушку клеишь ты, а задачи решаю я, получается, что мозги ты сношаешь нам обоим
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
10.12.2012, 16:05  [ТС]

Не по теме:

Цитата Сообщение от Mikl___ Посмотреть сообщение
девушку клеишь ты
уже не девушка, уже мужик какой-то:rofl: да и вообще, не клею я никого:D


вобщем тебя я не слушаю, можешь даже поругать, заделал я вобщем такую вот штукенцию:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
.model small
.data
string  db  20, ?, 20 dup (0)  ;максимальное число состоит из 20 цифр (22 - с учетом 0d0ah)
ten dd  10.0    ;вещественное 10
u_n dw  0
rez dt ?
 
.stack 256
.code
start:
    mov ax,@data    ;адрес сегмента данных в регистр ax
    mov ds,ax   ;ax в ds
;---------вводим вещественное число с клавиатуры---------------------------------------------
    mov ah, 10
    mov dx, offset string
    int 21h
cont_1: ;правильное вещественное число (в формате xxx.xxxx) введено в строку string
;начинаем с преобразования дробной части и ее последней цифры:
    mov cl, string[1]
    xor ch, ch
    finit
    fld ten ;10 ->st(0)
    fldz    ;0->st(0), 10 ->st(1)
    lea si,string   ;формируем указатель на строку string (ds:si) для lodsb
    add si,cx
    add si, 2
    dec si  ;указатель на последний символ строки string
    std ;обработка строки string с конца
    xor ax,ax
m1:
    lodsb
    cmp al,"."
    je  m2  ;переход, если встретился символ "."
    and al,0fh  ;преобразуем ASCII->BCD
    mov u_n,ax
    fiadd   u_n ;складываем очередную цифру и значение в стеке сопроцессора
    fdiv    st(0),st(1) ;делим значение в вершине стека на 10
    dec cx
    jmp m1
m2:
;преобразуем целую часть
    dec cx
    mov si, offset string
    add si, 2
    fldz
m3:
    mov al, [si]
    and al, 0Fh
    fmul st(0), st(2)
    mov u_n, ax
    fiadd u_n
    inc si
    loop m3
    fadd 
    fbstp rez
    mov ax, 4c00h
    int 21h
end start
вроде вводит нормально, осталось только в proc'у это все заделать. и еще один вопрос: почемуfbstp rez сохраняет только целую часть?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,758
10.12.2012, 16:12
Fatal Error, потому что BCD-числа могут быть только целыми
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
10.12.2012, 16:47  [ТС]
а как ввести отрицательное число?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,758
10.12.2012, 17:50
Fatal Error, для ввода отрицательного числа внимательно перечитай любимую тему "ввод и вывод" -- если число предваряет "минус", то по окончанию ввода нужно будет отнять число от нуля. Но если я ошибаюсь, то поэксперементируй с числом в отладчике -- практика это лучший критерий истинности, например вот так
Assembler
1
2
3
4
5
6
7
.data
x dd -12345678
y dt ?
.code
    finit
    fild x
    fbstp y
и увидешь какое BCD-число соответствует -123455678
1
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
11.12.2012, 09:40
Старший бит pbcd-числа - это знак.

Добавлено через 2 минуты
https://www.cyberforum.ru/atta... 7-i486.rar

Смотри раздел "15.2.2.2 Десятичные целые"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2012, 09:40
Помогаю со студенческими работами здесь

Информация по работе с многопоточностью
Будьте любезны, "ткните меня носом" в понятный туториал с многопоточностью, или дайте рабочий не сложный исходник, желательно с...

Нужна информация о работе в Лазарус
Мне нужно в лазарусе решить следующие задачи: 1. Создайте программу, которая создает и выводит на экран файл ZARPL.DAT, компоненты...

Подробная информация по работе с классами
Посоветуйте книгу, где работа с классами была бы изложена так же хорошо как в Философии java Эккеля.

Информация по работе с Telnet Windows и VB
Уважаемые программисты. Буду признателен за любую информацию по работе с Telnet из под программы, сделанной на VB. Я не большой...

Информация по работе с бинарными файлами
У меня возникла проблема при работе с бинарными файлами, вернее нет инфо чтоб почитать, да и хелп скуден, вышлите по мылу или скиньте сюда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru