Форум программистов, компьютерный форум, киберфорум
Assembler: Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 12.01.2019
Сообщений: 11

Вызов функции fgets() из Ассемблера

04.04.2019, 20:12. Показов 5380. Ответов 3

Студворк — интернет-сервис помощи студентам
Есть необходимость вызвать функцию fgets() из кода на ассемблере, не понятно, как передать параметр, который обозначает поток. Пробовал передавать число 0 и строку "stdin", но это не сработало. Как верно передать аргумент?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2019, 20:12
Ответы с готовыми решениями:

Вызов функции C из ассемблера
global main extern printf extern puts section .text main:

Вызов С++ функции из ассемблера
Здравствуйте, есть массив в ASM(уже инициализированный), вызывается функция С++ которая сортирует и возвращает уже отсортированный массив....

Вызов .NET функции clrcall из ассемблера
Добрый вечер. делаю .NET хук, появилась проблема вызова из unmanaged code'a unmanaged функции Marshal.GetFunctionPointerForDelegate...

3
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8659 / 4494 / 1669
Регистрация: 01.02.2015
Сообщений: 13,905
Записей в блоге: 12
04.04.2019, 21:08
Почитал https://stackoverflow.com/ques... 6-assembly
Да и сам вижу, что третий параметр у fgets это указатель, а не значение (хэндл).
Т.е. присоединяюсь к советам stackoverflow - вместо функции из libc использовать write.

Хотя, возможно, в недрах libc есть инициализированная структура FILE * STDIN, указатель на которую и следует отправлять третьим параметром.

Добавлено через 43 секунды
Подождите, может кто более грамотный поможет вам дельным советом.

Добавлено через 14 минут
* Ошибся, конечно же read, а не write.
0
33 / 26 / 7
Регистрация: 06.03.2019
Сообщений: 76
04.04.2019, 23:43
у меня семерка шестидесятичетырехбитка, я вот так вызываю
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
%TITLE "appFgets.asm"
 
;tasm32 /ml appFgets
;tlink32 /Tpe /aa /c appFgets.obj,appFgets,, D:\tools\tasm\lib\import32, appFgets.def
;Изменить путь библиотек, файл DEF ниже
 
.386
locals  @@
.model  flat
 
MaxCount    equ 14h
 
    .data
svTitle     db 'Info',0
svMode      dd 'r',0
svFilename  db 'dummy.txt',0
 
    .data?
svBuffer        db 14h dup(?)
hFile       dd ?
 
    .code
extrn fgets:near
extrn fopen:near
extrn fclose:near
extrn ExitProcess:near
extrn MessageBoxA:near
 
_appFgets proc
    File = dword ptr  8
    push    ebp
    mov ebp, esp
    mov eax, [ebp+File]
    push    eax
    push    MaxCount
    push    offset svBuffer
    call    fgets
    add esp, 0Ch
    push    50040h      ; uType
    push    offset svTitle
    push    offset svBuffer
    push    0
    call    MessageBoxA
    pop ebp
    ret
_appFgets   endp
 
Start:
    push    offset svMode
    push    offset svFilename
    call    fopen
    add esp, 8
    cmp eax, 0
    jz  short @@99
    
    mov hFile, eax
    push    [hFile]
    call    _appFgets
    add esp, 4
 
    push    [hFile]
    call    fclose
    add esp, 4
@@99:
    push    0
    call    ExitProcess
end Start
 
;------------------------------------------[ appFgets.def ]-----------------------------------------------------------------
NAME        appFgets
DESCRIPTION 'appFgets'
IMPORTS
msvcrt.fgets
msvcrt.fopen
msvcrt.fclose
;-------------------------------------------------------------------------------------------------------------------------------
1
53 / 9 / 2
Регистрация: 08.02.2020
Сообщений: 62
20.02.2020, 13:29
Если stdin в gas x86:
Assembler
1
2
3
4
     pushl stdin 
     pushl $size /* количество символов */
     pushl buff /* куда будет записываться строка */
     call fgets
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2020, 13:29
Помогаю со студенческими работами здесь

Вызов фунции из ассемблера
Здравствуйте. Есть код, вызывающий несколько функций си и WinAPI. Вот так работает: void printName() { wchar_t* fmt2=L"%s"; ...

Использование функции fgets
Передо мной встала следующая проблема - не могу понять, как работает функция strcmp. К примеру приведу данный код программы: ...

Затруднение при применении функции fgets
Для того, чтобы считать имя файла и не выдалась ошибка при его открытии, мне пришлось применить следующую конструкцию: ...

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

Как работает программа? В чем суть функции fgets?
#include <iostream> #include <stdio.h> int main(int argc, char** argv) //кол-во аргументов, указатель на массив указателей на сами...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru