Предупреждение: Никога през живота си не съм писал асемблер 8086, но това е, което правя от него.
MOV AX,@DATA
е първият ред код, който се изпълнява. Вярвам, че @DATA е променлива, която съдържа стойността на местоположението в паметта, където живее сегментът от данни. Той премества местоположението на паметта на @DATA в регистъра AX (16 битов регистър). Едно нещо, което трябва да се отбележи тук, е @ пред думата DATA. Вярвам, че това е така, защото @DATA се оценява по време на процеса на свързване и ще бъде заменен от действителната си стойност. Забележете как другите примери нямат @ отпред, защото те се отнасят за действително място в паметта като начало.
След това MOV DS,AX
ще зададе това място в паметта като променлива DS
, която е стандартна променлива (или регистър в този случай) за 8086 асемблиране. Винаги трябва да сочи към местоположението на вашето хранилище, където искате да съхранявате стойности (купчината, ако сте запознати с терминологията на C++).
AX регистърът е просто временно място, което можете да заредите със стойности и да изпълнявате команди срещу.
MOVE AH, ??H
На първо място, AH се отнася до "високата" страна на регистъра AX. Братът на това би бил AL, който се отнася до "ниската" страна на регистъра AX. Това се използва, когато искате да изпълнявате команди срещу 8 бита вместо 16 бита. Втората част от това, ??H, както го наричате, е стойността, която искате да съхраните в регистъра AH. H в края означава "шестнадесетичен". Така че, ако имате 00H, това би означавало нула (в шестнадесетичен). Ако поставите FFH, това ще бъде същото като 255 в десетичната бройна система.
Обратно към първоначалния ви въпрос „Кога кодът под СЕГМЕНТ НА ДАННИ ще се изпълни в този код?“ -- Предполагам, че питате кога ще бъде изпълнен СЕГМЕНТЪТ ДАННИ. Това обикновено не трябва да се изпълнява, защото се предполага, че съхранява данни (променливи) за използване във вашия КОДОВ СЕГМЕНТ. На някои операционни системи можете да заобиколите това, вярвам, и просто да СКОЧИТЕ или да се разклоните към този раздел от кода и да го третирате като нормален КОДОВ СЕГМЕНТ. Понякога така работят препълването на стека, препълването на купчината, (хакове) и т.н.
person
Joe Phillips
schedule
16.03.2011