.MODEL small
.DATA
HelloMessage DB 'Hello, world $'
.CODE
mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET HelloMessage
int 21h
mov ah,4ch
int 21h
END
Другие языки программирования и технологии
Как вывести на Tasm32 Hello, world в консоли.
А средствами BIOS - прерываний для *.COM будет так:
в принципе после небольшой переделки (DOS INT21h) данный код будет работать на любой машине БЕЗ какой бы то ни было ОС (даже ДОС) - если найдете способ его загрузки в память
CSEG segment
org 100h
begin:
mov ax,dx
mov es,ax
;очищаем экран
mov al, 02h
mov ah, 00h
int 10h
mov bp,offset string
mov ax,1301h
mov bx,1 ;blue screen
mov cx,len
mov dx,0200h
int 10h
mov ax, 0B800h; video buffer
mov es,ax
mov di,0h
mov cx,len
mov si, 0 ;counter
mov ah,01
ccc:
mov al, byte ptr string [si]
mov es:[di],ax
add di,2
inc si
loop ccc
;mov ax,4C00h
; int 21h
string db 'Hello World'
len=$-string
CSEG ends
end begin
в принципе после небольшой переделки (DOS INT21h) данный код будет работать на любой машине БЕЗ какой бы то ни было ОС (даже ДОС) - если найдете способ его загрузки в память
CSEG segment
org 100h
begin:
mov ax,dx
mov es,ax
;очищаем экран
mov al, 02h
mov ah, 00h
int 10h
mov bp,offset string
mov ax,1301h
mov bx,1 ;blue screen
mov cx,len
mov dx,0200h
int 10h
mov ax, 0B800h; video buffer
mov es,ax
mov di,0h
mov cx,len
mov si, 0 ;counter
mov ah,01
ccc:
mov al, byte ptr string [si]
mov es:[di],ax
add di,2
inc si
loop ccc
;mov ax,4C00h
; int 21h
string db 'Hello World'
len=$-string
CSEG ends
end begin
> этот пример написан на Tasm
Вообще-то, он написан в синтаксисе Masm с упрощённым объявлением сегментов, причём с ошибками, которые не позволят правильно слинковать программу.
Tasm компилирует такие программы только потому, что по-умолчанию работает в режиме MASM.
Пример написан для DOS, значит и компилировать его нужно соответствующим компилятором. Tasm 4 как раз для этого подойдёт. Зачем вам понадобился Tasm32?
Если уж упоминается о Tasm32, то программа для него может выглядеть, например, так:
ideal
p386
model flat, stdcall
procdesc GetStdHandle winapi :dword
procdesc WriteConsoleA winapi :dword, :dword, :dword, :dword, :dword
procdesc ExitProcess winapi :dword
extrn _kbhit :proc
STD_OUTPUT_HANDLE equ -11
segment data
Msg db 'Hello, World!',13,10
MsgLen equ %($ - Msg)
ends
segment code
start:
call GetStdHandle,STD_OUTPUT_HANDLE
call WriteConsoleA,eax,offset Msg,MsgLen,0,0
Inkey:
call _kbhit
test eax,eax
jz Inkey
call ExitProcess,0
ends
end start
Компилировать и линковать эту программу командами:
tasm32 /ml /q /zn prog.asm
tlink32 -Tpe -ap -c -x prog.obj import32.lib imp32i.lib
где
import32.lib - библиотечный файл для импорта функций из стандартной поставки Tasm 5;
imp32i.lib - библиотечный файл из комплекта Tasm 5 plus для импорта новых функций WinApi, в частности функции _kbhit из библиотеки msvcrt.dll.
Если вдруг вам понадобится Hello World в диалоговом окне для tasm32, то он находится здесь.
Вообще-то, он написан в синтаксисе Masm с упрощённым объявлением сегментов, причём с ошибками, которые не позволят правильно слинковать программу.
Tasm компилирует такие программы только потому, что по-умолчанию работает в режиме MASM.
Пример написан для DOS, значит и компилировать его нужно соответствующим компилятором. Tasm 4 как раз для этого подойдёт. Зачем вам понадобился Tasm32?
Если уж упоминается о Tasm32, то программа для него может выглядеть, например, так:
ideal
p386
model flat, stdcall
procdesc GetStdHandle winapi :dword
procdesc WriteConsoleA winapi :dword, :dword, :dword, :dword, :dword
procdesc ExitProcess winapi :dword
extrn _kbhit :proc
STD_OUTPUT_HANDLE equ -11
segment data
Msg db 'Hello, World!',13,10
MsgLen equ %($ - Msg)
ends
segment code
start:
call GetStdHandle,STD_OUTPUT_HANDLE
call WriteConsoleA,eax,offset Msg,MsgLen,0,0
Inkey:
call _kbhit
test eax,eax
jz Inkey
call ExitProcess,0
ends
end start
Компилировать и линковать эту программу командами:
tasm32 /ml /q /zn prog.asm
tlink32 -Tpe -ap -c -x prog.obj import32.lib imp32i.lib
где
import32.lib - библиотечный файл для импорта функций из стандартной поставки Tasm 5;
imp32i.lib - библиотечный файл из комплекта Tasm 5 plus для импорта новых функций WinApi, в частности функции _kbhit из библиотеки msvcrt.dll.
Если вдруг вам понадобится Hello World в диалоговом окне для tasm32, то он находится здесь.
Похожие вопросы
- А есть ещё люди, которые в состоянии сегодня написать программу на машинном языке? Не "Hello world!", а что-то хоть мало
- Hello World. Требуется на всех языках.
- Подскажите готовый исходник hello world который будет компилироваться в МАСМ 32 версия 9.00 для 32-х разрядого проц.
- Я пишу ОС, я написал Hello World на FASMW которое будет служить как ядро. Вопрос! Чё делать дальше??
- Может ли человек стать хорошим программистом, если он код "Hello,world" впервые написал в 24 года ?
- Вывести в консоль полые геометрические фигуры используя язык C и библиотеку stdio.h .
- как в консоли на языке с вывести в два столбца?
- C++ проблемма русификации консоли. не могу сделать чтобы консоль была русской
- С# - нужно сделать так, чтобы консоль читала слова, как переменные, а не просто слова...
- помогите с Hello Word! на С++