hello world на ассемблере



Автор Виктория Ступа задал вопрос в разделе Другие языки и технологии

Помогите написать программу на ассемблере "Hello world" и прокоментировать каждую строчку!!! и получил лучший ответ

Ответ от Миоко Таканава[гуру]
Вы не можете найти правильную программу, потому что ищете, не задавшись очень важными для ассемблерных программ критериями: тип процессора, операционная система, компилятор, разрядность программы, тип приложения.
Даже линковщик и состав включаемых и библиотечных файлов оказывают влияние на код программы.
Даже режим компилятора, не говоря уже о нотации инструкций.
Поэтому ответ на ваш таким образом сформулированный вопрос - все правильные. Все, ответившие до меня, и в этом, и в другом вашем вопросе привели примеры правильных программ.
Даже указание процессора, компилятора и ОС недостаточно и может породить несколько вариантов написания программы:
А ведь там не использованы альтернативные способы вывода сообщения на экран: вместо функции WriteConsole можно использовать WriteFile, вместо 21h прерывания MS DOS можно использовать прерывание 10h BIOS (), и окно можно создавать вручную.
Вот вам ещё несколько примеров правильных программ:
Процессор i80386, оконное приложение Win32, компилятор tasm32
ideal
p386
model flat, stdcall
procdesc MessageBoxA winapi :dword, :dword, :dword, :dword
procdesc ExitProcess winapi :dword
MB_OK equ 0
segment data
  Message db 'Hello, World!',0
  MsgTitle db 'Hello',0
ends
segment code
start:
    call MessageBoxA,0,offset Message,offset MsgTitle,MB_OK
    call ExitProcess,0
ends
    end start
32-разрядное консольное приложение Linux, компилятор GAS
.data
Message:
    .ascii "Hello, World!
"
    MsgLen =. -Message
.text
    .global _start
_start:
    movl $4,%еax
    movl $1,%еbx
    movl $Message,%еcx
    movl $MsgLen,%еdx
    int $0x80
    movl $1,%еax
    xorl %еbx,%еbx
    int $0x80
Консольное приложение Win32, компилятор GoAsm
code section
start:
    push -11
    invoke GetStdHandle
    push 0,0
    push 13,'Hello, World!'    push eax
    invoke WriteConsoleA
WaitKey:
    call _kbhit
    test eax,eax
    je WaitKey
    xor eax,eax
    ret
P.S. А представляете, сколько ещё существует различных типов микропроцессоров с несовместимыми друг с другом системами команд? И сколько для них существует компиляторов?

Ответ от Зло[гуру]
Бендер же тебе с комментариями писал
.model small
.stack 100h
.data
message db "Hello, world!",0dh,0ah,'$'
.code
main proc
mov ax,@data
mov ds,ax ; установка сегмента данных
mov ah,9 ;номер функции вывода на экран в ah
mov dx,offset message ; смещение в dx
int 21h ; ввзов прерывания
mov ax,4C00h ;завершение программы
int 21h
main endp
end main

Ответ от 0xDD[гуру]
Assembler i8086, MS-DOS, fasm
use16
org 100h
mov ah,09h
mov dx,msg
int 21h
mov ax,4C00h
int 21h
msg db 'Hello, World!$'
Assembler i8086, MS-DOS, masm
.model tiny
.code
org 100h
Start:
mov ah, 9
mov dx, offset msg
int 21h
mov ax, 4C00H
int 21h
msg db 'Hello, world$'
end Start

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Помогите написать программу на ассемблере "Hello world" и прокоментировать каждую строчку!!!

Как научиться программировать с нуля? Посоветуйте литературу какую нибуть.
Для ОБУЧЕНИЯ программированию я бы все же рекомендовал Visual Basic 6.0 - он намного легче, проще в
подробнее...
спросили в Ассемблер
Пожалуйста, подскажите, чем ассемблер отличается от машинного языка?
Катя, вот пример программы на ассемблере:

.data
hello:
.string "Hello
подробнее...
спросили в Blender Data General
Что можно написать на языке Python
На Python обычно пишут скрипты, то есть те части программы, которые не должны компилироваться,
подробнее...
спросили в Кобол
Что означает выражение "танцевать с бубном"?
Бубен – обязательный реквизит сисадмина. Данный фольклорный элемент берёт своё начало от фразы
подробнее...
спросили в Оса
Как создать свою ОС ?
Идея похвальная.
Прежде всего нужно знать систему команд машины, для которой намереваешься
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Бейсик
Какой язык программирования самый сложный, какой - самый простой и какой, самый нужный?
Напридумывали-то сколько. :D)
Самый лёгкий - это HQ9+ и никакие Бейсики с Паскалями и Лого не
подробнее...
спросили в User java User java 1
Как начать программировать с нуля!
надо просто начать читать что есть в сети и программировать все так делают

Модест
подробнее...
Язык ассемблера на Википедии
Посмотрите статью на википедии про Язык ассемблера
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*