Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2023, 01:30   #11
katenka2023
Новичок
Джуниор
 
Регистрация: 24.04.2023
Сообщений: 7
По умолчанию

macomics, Извините, что никак не могу понять и опять ваш пишу, я скопировала код который вы написали, но никак не могу вывести результат, подскажите каким образом нужно это делать...
katenka2023 вне форума Ответить с цитированием
Старый 25.04.2023, 01:39   #12
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Дело в том, что он использует вещественные числа. Если воспользуетесь функцией printf из библиотеки msvcrt.dll и шаблоном вида "Result = %3.5lf", тогда сможете вывести результат в консоль. lf - это для dq. Если изменить тип у Result на dd, тогда достаточно использовать просто f ("Result = %3.5f")

Код:
; fasm1 ver. 1.73.30
; Windows EXE 32-bit
; INCLUDE=FASM\INCLUDE

format PE CONSOLE 5.0 at 0x00010000
include "win32a.inc"
section '.idata' import data readable writeable
library kernel32.dll,   "kernel32.dll",\
        msvcrt.dll,     "msvcrt.dll"
import  kernel32.dll,\
        ExitProcess,    "ExitProcess",\
        GetConsoleMode, "GetConsoleMode",\
        GetStdHandle,   "GetStdHandle",\
        ReadConsoleA,   "ReadConsoleA",\
        SetConsoleMode, "SetConsoleMode",\
        WriteConsoleA,  "WriteConsoleA"
import  msvcrt.dll,\
        printf,         "printf"
section '.data' data readable writeable
x1        dd 2f
y1        dd 5.0f
x2        dd 11.2
y2        dd -5.1
ResultQ   dq ?
ResultD   dd ?
formatStr db "Result = %5.7lf", 13, 10, 0
section '.text' code readable executable
entry $
      fld     [x2] ; st0 = x2
      fsub    [x1] ; st0 = x2 - x1
      fmul    st0, st0 ; st0 = (x2 - x1)^2
      fld     [y2] ; st0 = y2; st1 = (x2 - x1)^2
      fsub    [y1] ; st0 = y2 - y1; st1 = (x2 - x1)^2
      fmul    st0, st0 ; st0 = (y2 - y1)^2; st1 = (x2 - x1)^2
      faddp   st1, st0 ; st0 = (x2 - x1)^2 + (y2 - y1)^2
      fsqrt ; st0 = квадратный корень((x2 - x1)^2 + (y2 - y1)^2)
      fstp    [ResultQ]
      cinvoke printf, formatStr, dword [ResultQ + 0], dword [ResultQ + 4]
      mov     eax, 123
      mov     ecx, 100
      cdq
      idiv    ecx
      add     al, '0'
      push    eax
      mov    word [esp + 1], 0x0A0D
      invoke  GetStdHandle, STD_OUTPUT_HANDLE
      lea     ecx, [esp - 4]
      mov     edx, esp
      invoke  WriteConsoleA, eax, edx, 3, ecx, NULL, NULL
      pop     edx
      pop     ecx
      call    WaitAnyKey
      invoke  ExitProcess, 0

; Вот пропрограмма ожидания нажатия любой клавиши. Добавил вывод соответствующего сообщения, чтобы была понятна причина остановки.
define ENABLE_ECHO_INPUT 4
define ENABLE_LINE_INPUT 2
WaitAnyKey:
      push    ebx
      push    NULL
      push    NULL
      push    NULL
      invoke  GetStdHandle, STD_OUTPUT_HANDLE
      lea     edx, [.message]
      lea     ecx, [esp + 4]
      invoke  WriteConsoleA, eax, edx, .message.Length, ecx, NULL
      invoke  GetStdHandle, STD_INPUT_HANDLE
      mov     ebx, eax
      invoke  GetConsoleMode, ebx, esp
      mov     eax, [esp]
      and     eax, not (ENABLE_ECHO_INPUT or ENABLE_LINE_INPUT)
      invoke  SetConsoleMode, ebx, eax
      lea     edx, [esp + 8]
      lea     ecx, [esp + 4]
      invoke  ReadConsoleA, ebx, edx, 1, ecx, NULL
      invoke  SetConsoleMode, ebx
      add     esp, 8
      pop     ebx
      retn
  .message db 13, 10, 'Press any key. . .', 13, 10, 13, 10
  .message.Length = $ - .message

Последний раз редактировалось macomics; 25.04.2023 в 02:23.
macomics вне форума Ответить с цитированием
Старый 26.04.2023, 01:58   #13
katenka2023
Новичок
Джуниор
 
Регистрация: 24.04.2023
Сообщений: 7
По умолчанию

macomics, Снова Здравствуйте, а можно переменные без буквы F вводить, или это обязательная часть?
katenka2023 вне форума Ответить с цитированием
Старый 26.04.2023, 09:49   #14
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Там же 4 разных варианта. Задавайте в каком хотите виде. Только например 2f надо будет задавать как 2.0 иначе без буквы f это будет целое число.
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти первую цифру в десятичной записи четырехзначного натурального числа Marcus75 Помощь студентам 2 24.04.2016 20:19
Присвоить целой переменной d первую цифру из дробной части положительного вещественного числа x(так, если х=32.597, то d=5). michaeldurden Общие вопросы C/C++ 1 17.12.2015 14:33
Первую цифру числа удалить прибавить к тому что осталось Наташа17 Visual C++ 2 28.02.2015 18:42
Программка Delphi - надо вывести в строку все простые натуральные числа, которые меньше задаваемого трехзначного N Наталья30111992 Помощь студентам 1 30.10.2013 07:16
Как вывести числа от 0 до 9 при помощи FASM? Lamo Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 29.12.2010 16:24