Вопрос по FPU

Assembler programming questions
  • А как точно "неправильно работает"?? Вроде как всё верно написано...
  • У меня получается что
    +10.5 > +150.5

    А я правильно переменные в стек затолкал может наоборот или условие в jmp поменять надо?
  • .387
    .model small
    .stack 100h
    .code
    start:
    mov ax,DGROUP
    mov ds,ax
    fild __100
    fild __1000
    fcompp
    fstsw __ax
    mov ax,__ax
    sahf
    ja bol
    mov dx,offset men6e
    mov ah,9
    int 21h
    jmp exit
    bol:
    mov dx,offset bol6e
    mov ah,9
    int 21h
    exit:
    mov ax,4C00h
    int 21h
    .data
    __ax dw 0
    __100 dw 100
    __1000 dw 1000
    bol6e db 'Bol6e',0Dh,0Ah,'$'
    men6e db 'Men6e',0Dh,0Ah,'$'
    end start

    Вот такая херь мне тока что выдала пральный результат
  • Ты юзаешь команды для чисел без знака типа ja,jb
    А мне нужно со знаком типа jg,jl
    Короче попробую сам разобраться.
  • Кстати я так и не понял почему fstsw сразу в ax не записал :? Точнее чё масм ругается?
  • Гм... действительно както странно
  • Не забывайте про FINIT (FNINIT)
  • Sid походу ты прав.
    Мне кажется нужно полюбому использовать только ja,jb вместо jg,jl т.к. SF неустанавливается а он влияет на jg и gl
    завтра точно проверю.
  • Как то это странно. В C/C++ еси написать if (a < b) {...}else {...}, где a и b например -100.0f и 100.0f то всё скомпилится нормально и мы попадём в 1ую скобку. То есть и с отрицательными числами проблем нет
  • Проверил, при сравнении с FPU полюбому используются только команды ja,jna,jb,nb,je,jne
    при этом знак все равно учитывается, короче исправленный код выглядит так:

    fld dword ;st1
    fld dword [a] ;st0
    fcompp
    fstsw ax
    sahf
    jnb metka
    действия
    metka:
  • Надо бы вам знать, что все вычисления в FPU происходят над 80-разрядными знаковыми числами.
    А вообще, читай вы документацию Интела, таких проблем и вопросов не возникало бы.
  • mike.dld wrote:Надо бы вам знать, что все вычисления в FPU происходят над 80-разрядными знаковыми числами.
    А вообще, читай вы документацию Интела, таких проблем и вопросов не возникало бы.
    Сижу целыми днями читаю :twisted: Из-за ткой фиххни я в документацию не лезу. Просто я хотел быстро получить точный ответ от тех кто с этим сталкивался, в итоге все равно пришлось почти одному все проверять. Бывает... :wink:
  • Who is online

    Users browsing this forum: No registered users and 10 guests