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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2007, 23:27   #1
m32
Новичок
Джуниор
 
Регистрация: 03.11.2007
Сообщений: 2
По умолчанию LEA [FASM]

Код:
format PE GUI 4.0
include 'win32ax.inc'

start:
      jmp l1
      Mes DB 'Hello, World!$'
  l1:MOV AH,09H
      LEA DX,Mes
      INT 21H
.end start
Вот так. В общем на LEA DX, Mes выдаёт ошибку Invalid operand. Судя по всему ошибка связана с кривыми руками В бинарник компилирует нормально, а вот PE чёт никак...

Последний раз редактировалось rpy3uH; 05.11.2007 в 12:07.
m32 вне форума Ответить с цитированием
Старый 04.11.2007, 17:16   #2
m32
Новичок
Джуниор
 
Регистрация: 03.11.2007
Сообщений: 2
По умолчанию

Видно никто не спешит помогать )) Сам разобрался...

Код:
format MZ
jmp l1
     mes DB 'Hello, World!$'
l1:  
     mov AH,09h
     mov DX,mes+100h
     int 21H
Вот так правильней.

Тему можно: .удалить

Последний раз редактировалось rpy3uH; 05.11.2007 в 12:08.
m32 вне форума Ответить с цитированием
Старый 16.11.2008, 10:24   #3
gri501
Новичок
Джуниор
 
Регистрация: 31.10.2008
Сообщений: 1
По умолчанию

Правильно будет
...
lea dx, [Mes]
...
gri501 вне форума Ответить с цитированием
Старый 16.11.2008, 10:38   #4
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

или lea dx,offset mes
smileman вне форума Ответить с цитированием
Старый 18.11.2008, 14:12   #5
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

А еще правильней будет вспомнить что адреса 32-битные...
LEA EDX,[mes]
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 19.11.2008, 00:57   #6
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

это же FASM а не TASM..... здесь нужно просто mov DX,Mes
а если вам приходится вручную 100h добавлять, значит вы вначале не настроили ds
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 20.11.2008, 20:25   #7
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от smileman Посмотреть сообщение
или lea dx,offset mes
offset - это для mov. Для lea надо [mes]
Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
А еще правильней будет вспомнить что адреса 32-битные...
LEA EDX,[mes]
Здесь прога то ли format pe, то ли format mz, но, учитывая содержимое, скорее mz. В таком случае нужно 16-битное смещение в dx.
Цитата:
Сообщение от Min Посмотреть сообщение
это же FASM а не TASM..... здесь нужно просто mov DX,Mes
Не нужно, а можно

Таким образом (FASM):
lea dx, [mes]
mov dx, mes
Somebody вне форума Ответить с цитированием
Старый 02.10.2010, 16:28   #8
xrnd
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 18
По умолчанию

Тут LEA особого смысла не имеет, потому что делает то же, что MOV.
Если не хотите объявлять сегменты, проще использовать COM-формат.
И ещё нужно завершить программу.
Код:
use16
org 100h
jmp l1
     mes DB 'Hello, World!$'
l1:  
     mov AH,09h
     mov DX,mes
     int 21H

     mov AX,4C00h
     int 21H
xrnd вне форума Ответить с цитированием
Старый 02.10.2010, 21:51   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у FASM нет смысла в offset вроде как(помоему и слова то нет)

можно просто mov edx,mes

[mes] данные по адресу
mes сам адрес.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 03.10.2010 в 13:55.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.10.2010, 02:02   #10
semiono
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 14
По умолчанию

почему адрес называется эффективным, а не текущим например?...
semiono вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Учебник по FASM Roof Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 33 09.12.2013 23:16
Обьясните различия между - FASM, WASM, VASM, MASM, TASM Amancha Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 17.01.2009 15:38
Не компилируется исходник FASM nikleb Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 09.03.2008 17:34
не компилируется исходник на FASM pro-john Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 15.01.2008 18:40