Прерывание 21h "Вывод текста" - Assembler

Узнай цену своей работы

Формулировка задачи:

После не совсем удачного знакомства с двумя учебниками В.И. Юрова и О.А. Калашникова, связано было с тем что не смог найти рекомендуемые ими программы. Решил написать программу "Hello, world! " в masm32. Программа выдает ошибку в девятой строке "syntax error". Не могу понять в чем проблема ? Может проблема в компиляторе ?. Так как код в примере из книги не запускается.
.386
.model flat, stdcall
option casemap:none
.data
messa db 'Hello World!$'
.code
start:
mov ah,9 
mov dx,OFFSET messa ;*
int 21h
int 20h
end start
end.
*При использование регистра edх программа запускается, но вылетает с ошибкой Код из "Ассемблер это просто" О.А. Калашников
GSES segment
org 100h
Begin:
mov ah,9
mov ds,offset Message
int 21h
int 20h
Message db 'Hello, world!$'
CSEG ends
end Begin

Решение задачи: «Прерывание 21h "Вывод текста"»

textual
Листинг программы
format PE64 GUI
entry start
section '.text' code readable executable
start:
sub rsp,8*5
mov r9,0
lea r8,[_caption]
lea rdx,[_message]
mov rcx,0
call [MessageBoxA]
add rsp,40
sub rsp,16
mov ecx,eax
call [ExitProcess]
section '.data' data readable writeable
_caption db 'Win64 assembly program',0
_message db 'Hello World!',0
section '.idata' import data readable writeable
dd 0,0,0,RVA kernel_name,RVA kernel_table
dd 0,0,0,RVA user_name,RVA user_table
dd 0,0,0,0,0
kernel_table:
ExitProcess dq RVA _ExitProcess
dq 0
user_table:
MessageBoxA dq RVA _MessageBoxA
dq 0
kernel_name db 'KERNEL32.DLL',0
user_name db 'USER32.DLL',0
_ExitProcess dw 0
db 'ExitProcess',0
_MessageBoxA dw 0
db 'MessageBoxA',0

Оцени полезность:

10   голосов , оценка 4 из 5