«Hello world» on TASM или учим ассемблер как 20 лет назад

Если вы дадите человеку программу, то займете его на один день. Если вы научите человека программировать, то займете его на всю жизнь.

Waseem Latif

Чтобы что-то понять лучше нужно это делать, именно поэтому я нашёл книгу, которая мне немного поможет в этом — «Основы языка ассемблера» К.Г.Финогенов. Сегодня этому учебнику уже 20 лет, но защищенный режим процессора х86 по-прежнему не измена. Детище интел до сих пор на коне, что делает его привлекательным для изучения. А современные компьютеры позволяют довольно успешно эмулировать работу своих предков. В статье больше пойдет речь о том как можно подобрать инструмент для изучения ассемблера, и для примера мы соберем «Hello world» из книги.

TASM до сих пор изучают в некоторых университетах, поэтому будем считать что он справляется с образовательной целью. Где же взять исходники? В статье «MASM, TASM, FASM, NASM под Windows и Linux«, находим необходимый нам TASM, успешно работающий из Dosbox. Однако, мы не сможем проделать линкование, так как нам не будет хватать библиотеки DPMI16BI.OVL, которую необходимо поместить в папку с TASM.

Ссылки на: TASM, DPMI16BI.OVL.

Далее нам необходимо установить DOSbox — программа хороша тем, что одинаково успешно работает на Windows, Linux, Mac, а также сразу имеет установленную операционную систему. Если вы никогда не работали с DOSBox, то в интернете полно гайдов о том как её настроить для своей системы ( например настройка для linux). В целом настройка конфигурационного файла и горячих клавиш будет одинаковой на разных системах.

После того как вы добавите папку (жесткий диск) для вашей DosBox, нам необходимо будет создать файл ассемблера. (Также стоит помнить команды DOS для отображения файлов и перехода в каталог — DIR CD). Для графической навигации можете установить файловый менеджер вроде Norton Commander.

Создадим наш hello.asm в любом текстовом редакторе

; Ex 1-1. Hello world
assume CS:code,DS:data
; Describe the segment of code
code segment ; Open segment of code
begin:
mov AX,data ; Configure DS
mov DS,AX ; on segment on date
; Print on display text string
mov AH, 09h ; DOS function print to display
mov DX, offset msg ; Addres of printing srting
int 21h ; System call DOS
; Ending programm
mov AX, 4C00h ; DOS function to ending of programm
int 21h ; System call DOS
code ends ; Close code segment
; Describe the segment of date
data segment ; Open date segment
msg db "Hello world!$" ; Text string
data ends ; Close date segment
; Describe the stack segment
stk segment stack ; Open stack segment
db 256 dup (?) ; Stack size now 256 byte
stk ends ; Close stack segment
end begin ; End text with enter point.

Для простых случаев можно запускать транслятор и компоновщик TASM без параметров. После запуска tasm hello.asm в нашем каталоге появится два файла — hello.obj hello.map. Их легко можно открыть в редакторе и посмотреть что происходит с программой. После этого можно пропустить наш объектный файл через транслятор, чтобы получить исполняемый файл.

Что будет если забыть добавить файл-библиотеку
Добавляем необходимую библиотеку и наслаждаемся результатом

Вот так довольно легко и просто можно настроить себе среду для обучения одного из intel ассемблера.

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.