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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2011, 16:41   #11
Илья01
Пользователь
 
Регистрация: 30.12.2010
Сообщений: 14
По умолчанию

>для ввода заранее выделяют буфер в памяти.
Можно поподробней, как выделяется буфер, просто прописать в разделе DATA переменную?
Илья01 вне форума Ответить с цитированием
Старый 28.12.2011, 16:46   #12
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

и естественно в разделе .DATA его еще не известно?
Код:
str db ?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 28.12.2011, 16:51   #13
Илья01
Пользователь
 
Регистрация: 30.12.2010
Сообщений: 14
По умолчанию

Спасибо за объяснения, я сделал как вы сказали но похоже все равно что-то не так. Вот код который почему то не работает:
Код:
.386
.model flat,stdcall
option   casemap:none
include C:\masm32\INCLUDE\WINDOWS.INC
include C:\masm32\INCLUDE\KERNEL32.INC 
include C:\masm32\INCLUDE\USER32.INC
include C:\masm32\INCLUDE\ADVAPI32.INC                                                  
                         
includelib C:\masm32\lib\comctl32.lib
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\gdi32.lib
includelib C:\masm32\lib\kernel32.lib                
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\advapi32.lib                 
.DATA 
 var1 DB ?,0
 var2 DB ?,0
.CODE
START:  
 MOV var1,'strokastrokastroka'
 MOV var2,'onetwothreefree'
 invoke MessageBox, 0, addr var1,addr var2,0
EXIT:
 invoke ExitProcess,0
END START
Илья01 вне форума Ответить с цитированием
Старый 28.12.2011, 17:45   #14
Илья01
Пользователь
 
Регистрация: 30.12.2010
Сообщений: 14
По умолчанию

И с переменной DT все равно не работает

Последний раз редактировалось Илья01; 28.12.2011 в 17:47.
Илья01 вне форума Ответить с цитированием
Старый 28.12.2011, 17:58   #15
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Код:
.386
.model flat,stdcall
option   casemap:none
include \masm32\INCLUDE\WINDOWS.INC
include \masm32\INCLUDE\KERNEL32.INC 
include \masm32\INCLUDE\USER32.INC
include \masm32\INCLUDE\ADVAPI32.INC                                                  
                         
includelib \masm32\lib\comctl32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\kernel32.lib                
includelib \masm32\lib\user32.lib
includelib \masm32\lib\advapi32.lib                 
.DATA 
 var1 dt ?,0
 var2 dt ?,0
.CODE
START:  
 mov word ptr var1,'ts'
 MOV dword ptr var1+2,'akor'
 mov word ptr var2,'зи'
 mov dword ptr var2+2,'тарв'

 invoke MessageBox, 0, addr var1,addr var2,0
EXIT:
 invoke ExitProcess,0
END START
Куда как проще сразу строки задать.
vadimych вне форума Ответить с цитированием
Старый 28.12.2011, 18:20   #16
Илья01
Пользователь
 
Регистрация: 30.12.2010
Сообщений: 14
По умолчанию

Спасибо! вот теперь работает. Но неужели каждый раз придется так разбивать слово чтобы его записать в переменную? В остальных языках как то попроще
Илья01 вне форума Ответить с цитированием
Старый 28.12.2011, 19:20   #17
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
В остальных языках как то попроще
вы не забыли в каком вы ЯП?
ассемблер это низкоуровневый язык.
так же можно написать макрос.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.12.2011, 19:07   #18
Илья01
Пользователь
 
Регистрация: 30.12.2010
Сообщений: 14
По умолчанию

Здравствуйте, вот есть фрагмент кода:
Код:
mov  EBX, offset var1
MOV eax,byte ptr [EBX]
Этот код в регистр EBX записывает адрес первого символа переменной var1, а потом сам этот символ записывает в регистр eax. Код не работает. Скажите пожалуйста, почему? Только можно не писать в ответ решение этой задачи по своему, а объяснить почему не работает именно мой вариант.
Илья01 вне форума Ответить с цитированием
Старый 29.12.2011, 19:47   #19
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сравните размер байта и размер регистра eax.
нужно уж в al/ah тогда уж.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.12.2011, 20:07   #20
Илья01
Пользователь
 
Регистрация: 30.12.2010
Сообщений: 14
По умолчанию

Спасибо! Теперь понятно!
Илья01 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в коде ( С++ ) nexUS1 Помощь студентам 1 29.12.2009 01:09
Не могу найти ошибку в коде! Natasha666 Помощь студентам 1 20.05.2009 09:27
помогити найти ошибку в коде С++ Lorden Помощь студентам 8 17.02.2009 20:49
Помогите найти ошибку в коде! alex2008ean Паскаль, Turbo Pascal, PascalABC.NET 1 27.12.2008 18:31
Памагите найти ошибку в коде...С++ Goblin Помощь студентам 1 13.05.2008 18:15