Вторник, 23.10.2018, 02:46
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1182
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Hello world на ассемблере для DOS (COM,EXE) и WINDOWS

Пример COM программы для MS-DOS

.386
model tiny                              ;Указание модели памяти
Code segment use16              ;Начало описания сегмента кода
ASSUME cs:Code, ds:Code      ;Ассоциация регистров с сегментом
    org    100h                          ;Генерация смещения на 256 байт
start:                                       ;Метка начала программы
    push    cs                            ;Запись регистра CS в стек
    pop    ds                              ;Загрузка регистра DS значением из стека
    mov    dx, offset mess        ;Помещение в DS смещения строки mess
    mov    ah, 09h                     ;Запись в AH номера функции вывода строки
    int    21h                              ;Вызов сервиса MS-DOS
    int    20h                              ;Завершение COM программы в MS-DOS
mess    db    'Hello world!','$‘ ;Объявление строки
Code ends                               ;Завершение описания строки
end start


Пример EXE программы для MS-DOS

.386
model small                                   ;Указание модели памяти
Stack SEGMENT STACK use16        ;Объявление сегмента стека
    ASSUME ss:Stack                        ;Ассоциация регистра SS с сегментом стека
    DB    100h dup(?)                       ;Резервирование 256 байт под стек
Stack ENDS                                     ;Завершение описания сегмента стека
Data SEGMENT use16                     ;Объявление сегмента данных
    ASSUME ds:Data                         ;Ассоциирование регистра DS с сегментом данных
mess    db    'Hello world!','$‘         ;Объявление строки
Data ENDS                                       ;Завершение описания сегмента данных
Code SEGMENT use16                     ;Объявление сегмента кода
    ASSUME cs:Code                         ; Ассоциирование регистра CS с сегментом кода
start:                                               ;Метка начала программы
    mov    ax, seg mess                    ;Загрузка в AX адреса сегмента строки mess
    mov    ds, ax                               ;Запись в DS значения AX
    mov    dx, offset mess                ;Запись в DX смещения строки mess
    mov    ah, 09h                             ;Запись в AH номера функции вывода строки
    int    21h                                      ;Вызов сервиса MS-DOS
    mov    ax, 4c00h                         ;Запись в AX функции завершения программы
    int    21h                                      ;Завершение EXE программы в MS-DOS
Code ENDS                                      ;Завершение описания сегмента данных
end start


Пример EXE программы для Windows


include \masm32\include\masm32rt.inc
    ;Подключение библиотеки
                                                        ;Объявление сегмента неинициализированных данных
.data?               
    value dd ?                                ;Объявление переменной без инициализации
                                                        ;Объявление сегмента инициализированных данных
.data
    item dd 0
                                     ; Объявление переменной с инициализацией

.code                                               ;Объявление сегмента кода
start:                                               ;Метка начала программы
    call    main                                  ;вызов процедуры main
    inkey                                           ;вызов макроса ожидания нажатия клавиши
    exit                                              ;вызов макроса завершения программы
main proc                                        ;объявление процедуры main
    cls                                                ;вызов макроса очистки экрана
    print "Hello World!",13,10           ;вызов макроса вывода сообщения
    ret                                                ;команда выхода из процедуры
main endp                                        ;конец описания процедуры
end start


Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---