Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите начать ASM

60K
18 мая 2010 года
Robotron
2 / / 18.05.2010
Здравствуйте.
Решил попробовать ASM. В следующем году мне это пригодиться. Скачал FASM. Почитал статью - http://wasm.ru/article.php?article=1022001. Взял готовый пример, чтобы просто посмотреть, как это все работает. А оно не рабртает:
 
Код:
org      100h
 
        mov      ah,9h
        mov      dx,hello
        int      21h
        mov      ah,8h
        int      21h
        int      20h
 
 hello  db       13,10,"Hello, World!$"

 
Код:
---------------------------
Неподдерживаемое 16-разрядное приложение
---------------------------
Не удалось запустить программу или компонент "\??\C:\Users\Evgen\Documents\hel.COM" из-за несовместимости с 64-разрядной версией Windows. Обратитесь к разработчику программного обеспечения за версией программы, совместимой с 64-разрядной версией Windows.


---------------------------
ОК  
---------------------------

Можно сделать, чтобы оно работала под win 7 x64?
24K
19 мая 2010 года
engel65536
50 / / 17.10.2007
Проще всего будет поставить виртуальную машину с чистым DOS'ом
2.1K
19 мая 2010 года
Norgat
452 / / 12.08.2009
Цитата: engel65536
Проще всего будет поставить виртуальную машину с чистым DOS'ом



угу, либо можно сделать загрузочную флешку с той фигнёй, что в загрузочных дискетах Windows 98, оттуда тоже будут такие программки работать

247
19 мая 2010 года
wanja
1.2K / / 03.02.2003
Или, поставить DosBox.
399
19 мая 2010 года
KIV
432 / / 20.01.2009
Или научиться писать сразу под Windows
307
19 мая 2010 года
Artem_3A
863 / / 11.04.2008
или скачать nasm или yasm и радоваться.
60K
19 мая 2010 года
Robotron
2 / / 18.05.2010
Всем спасибо. Попробую yasm.
А нет примера, как в 1 моем сообщении, чтобы в консоли какой-нибудь текст выводился? Я попробовал его в yasm засунуть, но получил ошибку:
 
Код:
C:\Users\Evgen\Downloads>yasm -f win32 hel.asm
hel.asm:1: error: instruction expected after label
307
20 мая 2010 года
Artem_3A
863 / / 11.04.2008
вот это пример для nasm'a

Код:
global  _main
    extern  _printf
    extern  _getchar

    section .text
_main:
    push    message
    call    _printf
    call    _getchar
    add     esp, 4
    ret
message:
    db  'Hello, World', 10, 10


для yasm'a примерно тоже самое!=)
399
20 мая 2010 года
KIV
432 / / 20.01.2009
Цитата:
или скачать nasm или yasm и радоваться.


я не понял как это решит проблему с невозможностью запуска DOS приложения в Win7. Под FASM тоже можно написать:

Код:
format PE GUI
include "win32axp.inc"
entry start
section ".text" code readable executable
    invoke MessageBox,HWND_DESKTOP,"Hello world!","Hello",MB_OK
    invoke ExitProcess,0
section ".idata" import readable writable
library kernel32,"KERNEL32.DLL",\
         user32,"USER32.DLL"
include "api\kernel32.inc"
include "api\user32.inc"

Цитата:
вот это пример для nasm'a
...


Это вроде как не под Windows. или хотя бы с использованием компоновщика для создания экзешника. Для FASM это будет выглядеть так:

Код:
format ELF
public main
extern printf
extern getchar
section ".text" readable
    push message
    call printf
    call get_char
    add esp, 4
    ret
message db "Hello world!",10
51K
30 мая 2010 года
Pterox
33 / / 28.03.2010
Цитата:
или скачать nasm или yasm и радоваться


fasm тоже нормально поддерживает 64-битный код. Достаточно в начале поставить:

 
Код:
use64

или
 
Код:
format PE64 **тип подсистемы(Гуйня, Консоль, Нативный код)**

В папке с FASM v1.69.14 лежат примеры исходников для Win64 (Examples\Win64) и при исправной работе WoW64 их можно скомпилировать или написать свои программы.

З.Ы. ФАСМ Форева!!!:)
55K
10 июня 2010 года
BVOG
7 / / 24.02.2010
Правда в FASM'е почему-то большинство примеров рассчитаны на импорт сторонних функций.
399
13 июня 2010 года
KIV
432 / / 20.01.2009
Цитата:
Правда в FASM'е почему-то большинство примеров рассчитаны на импорт сторонних функций.


Что-то я не понял. Если вы про импорт с помощью library/import, то это вполне нормально. ЛЮБАЯ корректная программа для Windows использует её функции таким способом. Или каждая программа должна сама окошки рисовать, сама уметь обращаться к файловой системе? Любой компилятор в конечном счёте делает вот такой импорт из внешних библиотек. Просто в C++ или MASM импорт идёт из lib-файлов, а в FASM - явно, описанием в секции импорта необходимых структур (такой подход мне нравиться больше. Это одна из причин из-за которой я не люблю MASM и люблю FASM).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог