Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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

Ответ
 
Опции темы
Старый 08.05.2018, 16:24   #1
Егоров
Новичок
 
Регистрация: 08.05.2018
Сообщений: 6
Репутация: 10
По умолчанию Нужно организовать ввод данных и сделать вывод задания в консоле (выражения)

Вот код
Код:

format PE console 4.0
entry start
 
include 'win32ax.inc'
 
section '.text' code readable executable
 
  start:
 
        ; получение описателей ввода и вывода консоли
        invoke  GetStdHandle,   STD_INPUT_HANDLE
        mov     [hConsoleInput],        eax
 
        invoke  GetStdHandle,   STD_OUTPUT_HANDLE
        mov     [hConsoleOutput],       eax
 
        mov     eax,    [L]     ;(L-A)^2
        sub     eax,    [A]
        imul    eax
 
        idiv    dword [C]       ;(L-A)^2 / C
 
        add     eax,    [K]     ;(L-A)^2 / C + K
        sub     eax,    [L]     ;(L-A)^2 / C + K - L
 
        mov     ebx,    eax
 
        mov     eax,    [C]     ; C/2
        cdq
        mov     ecx,    2
        idiv    ecx
 
        add     eax,    ebx     ;(L-A)^2 / C + K - L + C/2
 
        mov     [Result],       eax
        cinvoke printf, aszFmt, [Result]
        ;ожидание нажатия ENTER
        cinvoke printf, aszPressEnter
        invoke  ReadConsole, [hConsoleInput], Buffer,\
                100, BufLen, NULL
        invoke  ExitProcess, 0
 
section '.data' data readable writeable
        aszFmt  db      'Result=%d', 0Dh, 0Ah, 0
        aszPressEnter   db      0Dh, 0Ah, 0Dh, 0Ah, "Press ENTER to exit", 0
 
        A               dd      2
        L               dd      10
        C               dd      4
        K               dd      12
 
section '.bss' readable writeable
        Buffer          db      1024 dup(?)
        BufLen          dd      ?
        hConsoleOutput  dd      ?
        hConsoleInput   dd      ?
 
        Result          dd      ?
 
section '.idata' import data readable writeable
 
        library kernel32,'KERNEL32.DLL',\
                user32,'USER32.DLL',\
                msvcrt, 'msvcrt.dll'
 
        include 'api\kernel32.inc'
        include 'api\user32.inc'
        import  msvcrt,\
                printf, 'printf'


Ос: window 7 32 bit, код был написан в FASM
Выражение: (L-A)^2 / C + K - L + C/2

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 08.05.2018 в 16:54.
Егоров вне форума   Ответить с цитированием
Старый 08.05.2018, 16:28   #2
Егоров
Новичок
 
Регистрация: 08.05.2018
Сообщений: 6
Репутация: 10
По умолчанию Нужно организовать ввод данных через консоль

Ос: window 7 32 bit, код был написан в FASM
Вот код
Вложения
Тип файла: txt Новый текстовый документ (9).txt (1.9 Кб, 1 просмотров)
Егоров вне форума   Ответить с цитированием
Старый 08.05.2018, 17:01   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,489
Репутация: 5308
По умолчанию

Код:

        cinvoke printf, var_A_Fmt, [A]
        cinvoke printf, var_L_Fmt, [L]
        cinvoke printf, var_C_Fmt, [C]
        cinvoke printf, var_K_Fmt, [K]

        mov     [Result],       eax
        cinvoke printf, aszFmt, [Result]
....

section '.data' data readable writeable
        aszFmt  db      'Result=%d', 0Dh, 0Ah, 0
        var_A_Fmt  db      'A=%d', 0Dh, 0Ah, 0
        var_L_Fmt  db      'L=%d', 0Dh, 0Ah, 0
        var_C_Fmt  db      'C=%d', 0Dh, 0Ah, 0
        var_K_Fmt  db      'K=%d', 0Dh, 0Ah, 0
....

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 08.05.2018, 17:31   #4
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Адрес: Самара
Сообщений: 289
Репутация: 147
По умолчанию

Ввод:
Код:

cinvoke scanf, scanfmt, x

Код:

scanfmt db '%d',0
x rd 1

в конце:
Код:

        import  msvcrt,\
                printf, 'printf',\
                scanf, 'scanf'

__________________
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума   Ответить с цитированием
Старый 08.05.2018, 20:07   #5
R71MT
Профессионал
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,199
Репутация: 1048
По умолчанию

Цитата:
Сообщение от Егоров Посмотреть сообщение
Нужно организовать ввод данных
Код:

format  PE console
include 'win32ax.inc'
include 'api\kernel32.inc'
entry   start

section '.data' code readable writable
m0    db   'Input A: ',0
m1    db   '------------------',13,10
      db   '(B-A)^2/C+D-B+C/2',13,10
      db   'Result : ',0
A     dd   0
B     dd   0
C     dd   0
D     dd   0

section '.code' code readable executable
start:
; Ввод данных
       mov      ecx,4          ; кол-во запросов
       mov      ebx,m0         ;
       mov      esi,A          ;
@01:   push     ecx            ;
       cinvoke  printf,<'%s'>, ebx
       cinvoke  scanf, <'%d'>, esi
       inc      byte[ebx+6]    ; меняем букву по-алфавиту
       add      esi,4          ; сл.буфер..
       pop      ecx            ;
       loop     @01            ; ввод юзера в переменных ABCD

; Считаем выражение: (B-A)^2/C+D-B+C/2
; (оставил твой вариант)
       mov      eax,[B]
       sub      eax,[A]
       imul     eax
       xor      edx,edx
       idiv     dword[C]
       add      eax,[D]
       sub      eax,[B]
       shr      dword[C],1
       add      eax,[C]
       push     eax

; Вывод результата
       cinvoke  printf,<'%s'>, m1
       pop      eax
       cinvoke  printf,<'%d'>, eax

       jmp  $
       invoke   ExitProcess, 0
;-------------------------------------
section '.idata' import data readable
library kernel32,'kernel32.dll',\
        msvcrt,  'msvcrt.dll'

import  msvcrt,\
        printf,  'printf',\
        scanf,   'scanf'

__________________
Нашедшего выход - затаптывают первым..
R71MT вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файловый ввод/вывод в языке С: Организовать текстовый файл f, состоящий из N строк. Организовать замену слов в файле. Анастасия_А Помощь студентам 3 28.03.2016 15:32
нужно организовать динамическое выделение памяти через ** и файловый ввод - вывод anybkarnak Помощь студентам 4 11.06.2010 21:33
Degree d^n, как организовать ввод\вывод? sig_GB Assembler 15 21.04.2010 20:29
Организовать ввод данных с файла созданного в первом задании и вывод их терминал. Saniok Помощь студентам 2 25.10.2007 22:25


08:37.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru