ПредишенСледващото

Добър ден, скъпи приятели!

Така че, ние ще продължим изучаването на езика. Публикуване на текста на програмата отново:

  • .286
    CSEG сегмент
    Предполагам, CS: CSEG, DS: CSEG, ES: CSEG, сс: CSEG
    орг 100h
    започнете:
    ; Всички написано по-горе, докато пропусне.

    Mov ах, 9; Заредете регистър номер 9 ах (посочете функция).
    Mov DX, офсетов HelloWorld; показва, че ние ще се оттегли за една фраза.
    вътр 21ч; Output фразата.

    Int 20h; Изход за DOS.

    HelloWorld db "Здравей, свят $! '; Определяне на променливата на HelloWorld, достъпен байт по байт, с фразата
    ; "Здравей, свят!". кавичките В, след "!" слагам
    ; "$" Sign.

    Приключване на програмата.
    краища CSEG
    край за да започнете

    Bunch Mov ах, 9 и вътр 21ч по същество е отбор, в сравнение с курса на език на високо ниво.
    Въпреки това, асемблер първия посочен команда се нарича функцията, а последният - прекъсването. Прекъсване изпълнява командата с дадената функция. Все още няма прекъсвания и функции, например, една и съща вътр 20h. Може би, докато тя е малко по-трудно да се разбере, но е необходимо да се помни тази форма на програмиране.

    В същия пример, ние сме изправени пред други ключови понятия за монтаж, като например записи и шестнадесетична. Да започнем от самото начало.

    Случило се така, че в съвременните компютри минималното време за памет е 8-битов байт, стойността на което е удобно да пиша двете шестнадесетични цифри. За да укажете на шестнадесетично число ще използваме буквата "ч", който ще бъде поставен зад тези цифри. Това название се среща често, въпреки че някои платформи, като любимата ми ZX Spectrum, в техните монтажници, използвани за означаване на форма # 05B3 на. Нулева пред означена "магистър", тъй като редица # 05B3 = # 5B3, и служи за четимост и се нарича "изравняване" (обикновено приведени в съответствие с един или два байта: # 05B3).

    Ние трябва да се научи да превежда номера от един номер система към друга. За тази цел много добре за стандартен калкулатор "Windows" в режим на инженеринг. Въпреки това, ако не е удобен калкулатор, брой реализации, представени в двоичен и шестнадесетично число системи, е сравнително лесно да е десетична. За да направите това, напишете номера разширена форма и да се изчисли стойността си. По-долу алгоритми трансформират номера от една система към друга (или могат да отидат директно на стр. 2. "регистрира").

    Преводачески номера от двоичен в десетичен. Вземете със себе си всеки двоично число, например 10,112. След това напишете в своите разширени форма и proizvedom изчисления:

    10.112 = 1 х 2 + 1 х 2 0 0 1 х 2 + 1 + 1 х 2 х 2 = 1 2 + 0 х 1 + 1 х 1/2 + 1 х 1/4 = 2,7510.

    Преводачески номера от шестнадесетичен да десетични. Сега да е шестнадесетичен номер, например 19F16. След това напишете в своята разширена форма (без да се забравя, че F шестнадесетичен цифра съответства на десетичното число 15) и изчисленията proizvedom:

    19F16 = 1 х 16 9 2 + 16 х 1 + F х 0 16 х 1 = 256 + 9 + 16 х 15 х 1 = 41510.

    Превод на номера от двоичен в шестнадесетичен вид. шестнадесет цифри са шестнадесетични числа за влизане, т.е. всяка цифра от 16 възможни записи за това. Решете експоненциално уравнение:

    16 = 2 и. 16 = 2 I = 4 след 4 бита.

    Всяко число шестнадесетичен знак винаги съдържа 4 бита информация.

    За прехвърляне на двоично число в шестнадесетично трябва да го разделим на групи от четири цифри, започвайки от правото, а ако последният напуснал групата е по-малко от четири цифри, за да го допълни с отляво с нули. За да се превърне фракционна двоично число в шестнадесетично трябва да го пробие в тетради от ляво на дясно, и ако се окаже, по-малко от четири цифри, да го допълнят с нули вдясно от последната група.

    След преобразуване на всяка група в шестнадесетичен цифрен помощта на прекомпилирани съвпадение бележника и шестнадесетичен масата.

    Превод на всяко цяло двоично число, например, A2 = 1010012 в шестнадесетичен:

    превод алгоритъм десетичната число в двоична система. Нека Atsd - десетични число. Напиши го като сумата на основата 2 градуса с двоични коефициенти. В отрицателен запис на субстрата няма да се случи в разширена форма (2):

    В първа стъпка Atsd разделение броя на базата на двоична система, т.е. с 2. Коефициентът, ще се равнява на

    остатък - равен a0.

    Във втората стъпка число коефициент отново се разделят с 2, остатъка от деление сега ще бъде равна на А1.

    Ако се продължи този процес на разделяне, след етапа на N-ти се получи последователност от остатъци:

    Лесно е да се забележи, че тяхната цел съвпада с обратна последователност на цели числа двоично число, записано в навити форма:

    По този начин е достатъчно да се записва останки в обратен ред за получаване на желаното двоично число.

    Превод Алгоритъм число десетична към двоична ще бъде, както следва:

    1. Последователно извършва разделяне изходен десетично число и получи целия частен система на основата (2), докато, докато коефициент, делител минимална, т.е. по-малко от 2.

    2. Запишете получения остатък в обратна последователност.


    Превод от десетични числа в двоични и шестнадесетичен по-сложна и може да се извърши по различни начини. Помислете за един от алгоритъма за превод на примера с превод от десетични числа в двоичен. Трябва да се има предвид, че за превод алгоритми числа и подходящите фракции ще се различават.

    Има регистри с общо предназначение, сегментни регистри, програмен брояч и регистрира знамена. Тук се срещаме за първи път с общо предназначение, брадва и DX регистри. И всеки един от тях се състои от две части - по-старите (ах) и по-млади (Ал) (за брадвата), това, което ние вече писано:

  • H високо старши
    L ниско Jr.
    Всяко име регистър носи никакво значение.
  • А акумулаторна батерия
    В база база
    С брояч брояч
    данни данни D
    BP база показалка Base показалка
    SI източник индекс на изходния код
    DI индекс индекс приемник дестинация
    SP стека показалеца стека показалка
    CS код сегмент сегмент команди
    DS сегмент сегмент данни данни
    SS стека сегмент стека сегмент
    ES допълнително наслагване сегмент
    IP инструкция показалеца контра команди
    В нашата програма, ние използвахме по-старата част на регистъра на брадва (акумулатор) и DX регистър (публикувани данни).

    Всеки регистър се състои от два байта - старши (е на първо място) и по-млади. Например, номер 3DEFh могат да бъдат приведени в регистър брадва два начина. Първият - Директна:

  • Mov брадва, 3DEFh
    и отделно за високите и ниските байта:
  • Mov ах, 3DH
    Mov Al, EFH
    Надявам се, че всичко това ясно.

    Ние съставят нашата програма, създадена с помощта на нова test.asm файл Far (Shift + F4) и поставянето им в директория с програма MASM.EXE, ML.EXE, LINK.EXE (или предписване на подходяща система за пътя за тях. За да имате link.exe аз не работя навън, той остава в папката с програмата). Бъдете сигурни, за да изберете кодиране 866 (F8 ключ) файл, или да видите безсмислици на екрана.

    Извършва: ML test.asm / AT

    В папката с програмата, която трябва да видите още два файла - test.obj и test.com. На последно място, и имаме нужда от него.
    Стартирайте го и виждате на екрана на фразата "Здравейте, свят!".

    Свързани статии

  • Подкрепете проекта - споделете линка, благодаря!