Другие языки программирования и технологии

Подскажите готовый исходник hello world который будет компилироваться в МАСМ 32 версия 9.00 для 32-х разрядого проц.

R*
Rudik:d ****
1 802
Все ниже приведённые программы не только компилируются указанным компилятором для указанных процессора и операционной системы, но и работают.
При условии, что у вас XP не 64-разрядная, что мало вероятно. Иначе две из них работать не будут.

1) Консольное приложение Win32.
Компилируется и линкуется командами
C:\masm32\bin\ml /c /coff /IC:\masm32\include prog.asm
C:\masm32\bin\Link /SUBSYSTEM:Console /LIBPATH:C:\masm32\lib prog.obj
(Здесь и далее все пути даются из предположения, что Masm32 установлен в каталог C:\masm32, а файл с исходником называется prog.asm)

.386
.model flat, stdcall
option casemap: none

include windows.inc
include kernel32.inc
includelib kernel32.lib

.stack 200h
.data
Message db 'Hello, World!'
MessLen equ $-Message
.code
start:
    invoke GetStdHandle,STD_OUTPUT_HANDLE
    invoke WriteConsole,eax,addr Message,MessLen,NULL,NULL
    invoke GetStdHandle,STD_INPUT_HANDLE
    invoke ReadConsole,eax,addr Message+4,2,addr Message,0
    invoke ExitProcess,NULL
    end start

2) Оконное приложение Win32.
Компилируется и линкуется командами
C:\masm32\bin\ml /c /coff /IC:\masm32\include prog.asm
C:\masm32\bin\Link /SUBSYSTEM:WINDOWS /LIBPATH:C:\masm32\lib prog.obj

.386
.model flat,stdcall
option casemap: none

include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib

.data
Message db 'Hello, World!',0
mTitle db 'First program',0
.code
start:
    invoke MessageBox,0,addr Message,addr mTitle,MB_OK
    invoke ExitProcess,NULL
    end start

3) 16-разрядное приложение MS DOS (файл exe)
Компилируется и линкуется командами
C:\masm32\bin\ml /c prog.asm
C:\masm32\bin\link16 prog.obj,,,,nul

.model small
.386
.stack 100h
.data
Message db 'Hello, World!$'
.code
start:
    mov ax,@data
    mov ds,ax
    lea dx,Message
    mov ah,9
    int 21h
    mov ah,8
    int 21h
    mov ah,4Ch
    int 21h
    end start

4) 16-разрядное приложение MS DOS (файл com)
Компилируется и линкуется командами
c:\masm32\bin\ml /c prog.asm
c:\masm32\bin\link16 /TINY prog.obj,,,,nul

.model tiny
.386
.code
    org 100h
start:
    lea dx,Message
    mov ah,9
    int 21h
    mov ah,8
    int 21h
    int 20h
Message db 'Hello, World!$'
    end start

P.S. Как видите, даже указание компилятора, ОС и типа процессора не достаточно, чтобы однозначно написать программу на ассемблере.
P.P.S. Уже довольно давно свободно доступна 11 версия Masm32.
P.P.P.S. Завершение работы 1-й программы происходит по нажатию клавиши Enter, 3 и 4 - Any Key, 2-й - интуитивно.
Нурлан Бекбаев
Нурлан Бекбаев
51 590
Лучший ответ