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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2016, 12:11   #1
dFender
Новичок
Джуниор
 
Регистрация: 15.12.2016
Сообщений: 1
По умолчанию Несмотря на подключение masm32.inc и masm32.lib не подтягиваются функции stdin и stdout

.686; Директива определения типа микропроцессора
.Model flat, stdcall; задачи линейной модели памяти
; И соглашения ОС Windows
option casemap: none; отличие малых и больших букв

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\fpu.inc
include \masm32\include\user32.inc
include \masm32\include\msvcrt.inc
include \masm32\include\masm32.inc

includelib \masm32\lib\masm32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\msvcrt.lib
includelib \masm32\lib\fpu.lib

.Data; директива определения данных
_c dd 24
sum dd 0
max dd 0; запись в 32-разрядную ячейку памяти с именем op1
temp dd 7
frmt db "% d", 0
buf db 50 dup (?)
stdout DWORD?
stdin DWORD?
cRead dd?
mas1 dd 32 dup (0)
nomer dd 0
st1 db "Vvesty masiv:"
st2 db "Вывод результата перемещения", 0
st3 db 10 dup (0)
ifmt db "Максимальный элемент =% d. Строка% d перенена в конец массива", 0

.Code; директива начала кода
_start:
lea esi, mas1; загрузки адреса начала массива
mov ecx, _c
m1:
mov ebx, ecx
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov stdout, eax
invoke GetStdHandle, STD_INPUT_HANDLE
mov stdin, eax
invoke WriteConsoleA, stdout, ADDR st1, 14, NULL, NULL; VIVOD ST1
invoke ReadConsole, stdin, ADDR buf, 20, ADDR cRead, NULL; чтение числа как символ
invoke crt_atoi, ADDR buf;превратить символ в число
mov [esi], eax
add esi, 4
mov ecx, ebx
loop m1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;

mov ecx, _c
lea esi, mas1;загрузка адреса начала массива
mov eax, [esi]; загрузки числа
m3:
.IF (eax> max); условие
mov max, eax
add esi, 4; расчет адреса нового числа
mov eax, [esi]
loop m3

.ELSE; иначе
add esi, 4;расчет адреса нового числа
mov eax,[esi]
loop m3; перейти,если ecx и 0

.ENDIF; окончания директивы высокого уровня

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;

mov ecx, _c
lea esi, mas1; загрузки адреса начала массива
mov eax, [esi]; загрузки числа
m4:

.IF (eax == max); условие
inc nomer; находим в каком месте находится максимальный элемент
add esi, 4;расчет адреса нового числа
mov eax, [esi]
jmp m5
loop m4

.ELSE; иначе
inc nomer
add esi, 4; расчет адреса нового числа
mov eax, [esi]
loop m4; перейти, если ecx и 0

.ENDIF; окончания директивы высокого уровня

m5:
mov eax,nomer
mov edx,0
div temp; в регистре eax находится число строки - 1
mov edx,0

.IF (eax == 0); условие
mov ebx,24
.ELSEIF (eax == 1); условие
mov ebx,18
.ELSEIF (eax == 2); условие
mov ebx,12
.ELSEIF (eax == 3); условие
mov ebx,6
.ENDIF
mov ecx,6
mov edx,ax
shl edx,2
add ebx,edx
x1: lea esi,mas1; загрузки адреса начала массива
mov edx,[Esi + eax * 4]; загрузки числа
mov [esi + ebx],edx
mov edx,0
mov [esi],edx
add esi,4
loop x1
jmp end_prog
end_prog:

mov ebx,max
inc eax

invoke wsprintf,\
ADDR st3,\
ADDR ifmt,\
ebx,ax
invoke MessageBox, \
NULL, \
addr st3, \
addr st2, \
MB_OK
invoke ExitProcess, 0
ret
end _start; окончания программы
dFender вне форума Ответить с цитированием
Старый 15.12.2016, 13:24   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

dFender, покури маны из папки MASM. Там есть примеры использования.
ИМХО ты не перечислил функции импорта
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как записать подключение inpout32.dll в Masm32 pisk37 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.05.2013 23:27
MASM32 djonatan98 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 61 26.04.2012 10:20
masm32 Katya25 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 17.05.2011 08:40
STDIN и STDOUT VovanZ Общие вопросы Delphi 2 07.04.2010 20:15
[masm32] GetCurrentDirectoryA Xatr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 07.12.2009 16:14