Все ниже приведённые программы не только компилируются указанным компилятором для указанных процессора и операционной системы, но и работают.
При условии, что у вас 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-й - интуитивно.
Другие языки программирования и технологии
Подскажите готовый исходник hello world который будет компилироваться в МАСМ 32 версия 9.00 для 32-х разрядого проц.
Похожие вопросы
- Как вывести на Tasm32 Hello, world в консоли.
- А есть ещё люди, которые в состоянии сегодня написать программу на машинном языке? Не "Hello world!", а что-то хоть мало
- Я пишу ОС, я написал Hello World на FASMW которое будет служить как ядро. Вопрос! Чё делать дальше??
- Где найти готовый исходник простенькой операционной системы, которая умеет только-загрузится, вывести сообщение на экран
- Hello World. Требуется на всех языках.
- Может ли человек стать хорошим программистом, если он код "Hello,world" впервые написал в 24 года ?
- у меня 4-х ядерный процессор. Еслия установлю 32-х битный Win XP, он пойдёт?
- Чем отличаются 32-х и 64-х разрядные операционные системы?
- Что значит Windows 32 bit? что значут эти 32 бита?
- Подскажите наиболее простые области программирования, которые мог бы освоить практически любой человек?