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

Как вывести на Tasm32 Hello, world в консоли.

.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
А средствами 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
Андрей Гавриленко
Андрей Гавриленко
998
Лучший ответ
> этот пример написан на 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, то он находится здесь.