Не могу понять, зачем загружать какое либо число в регистры в Assembler
Всем привет, недавно начал изучать Assembler, вроде, старт пошел гладко, до определенного момента. С каждым листингом из книги Калашникова, я начал замечать что оператор mov слишком часто используется для того чтобы загрузить какое либо число в регистр, но, я так и не пойму, зачем что-либо туда загружать? Как работает программа после этого? К примеру приведу листинг из этой же книги.
CSEG segment
org 100h
_start:
mov ah,9
mov dx, offest String
int 21h
int 20h
String db 'Test message$'
CSEG ends
end _start
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Бог с ними. с операторами mov dx и int, я знаю что это загрузка сообщения в регистр и вызов прерывания, но я не пойму, для чего нам mov ah, 9? Что он делает в этой программе? Как он помогает выводу сообщения на экран?
P.S.
Что такое регистр, команда mov, стек и прерывания знаю, прошу в гугл не посылать, слишком далеко.
А как MS-DOS поймёт, что именно ты хочешь сделать? Прерывание 21H используется для выполнения порядка сотни самых разных операций. И код требуемой операции передаётся в прерывание 21H в регистре AH.
Код 9 - вывод строки.
Подробности: http://www.codenet.ru/progr/dos/int_0026.php
http://www.codenet.ru/progr/dos/int_0026.php
Регистр ah используется подобно параметрам функции, конкретно для прервания. Если есть возможность загружать в свободные регистры, делай это всегда, поскольку операции пересылки из/в область памяти (из/в регистра) или наоборот, занимает больше времени, все операции проходят через контроллер кэша, который может не найти данных в кэше (промах кэша), и произойдет обращение к медленной ОЗУ.