Лекции 1 часть Баула (1110626), страница 9
Текст из файла (страница 9)
inint A ; макрокоманда ввода целого числа
вводит значение целого числа в переменную A, это аналог процедуры Readln(A) языка Паскаль. Напомним, что на место этой макрокоманды подставляется некоторый набор предложений Ассемблера, который и реализует такой ввод.
Далее начнём непосредственное вычисление правой части оператора присваивания. Задача усложняется тем, что величины A и B имеют разную длину и непосредственно складывать их нельзя. Приходится командами
mov al,B ; al := B
cbw ; ax := длинное B
преобразовывать короткое целое B к длинному целому на регистре AX. Далее вычисляется значение выражения (A+B)2 и можно приступать к выполнению деления. Так как делитель является длинным целым числом (мы поместили его на регистр cx), то необходимо применить операцию длинного деления, для чего делимое (число 4) командой
cwd
преобразуем в сверхдлинное целое и помещаем на два регистра (dx,ax). Вот теперь всё готово для команды целочисленного деления
idiv cx ; ax:= 4 div(A+B)2 , dx:= 4 mod(A+B)2
Далее мы присваиваем остаток от деления (он в регистре dx) переменной X и печатаем эту переменную по макрокоманде
outint X
которая эквивалентна процедуре WriteLn(X) языка Паскаль. Последним предложением в сегменте кода является макрокоманда
finish
которая заканчивает выполнение нашей программы, она эквивалентна выходу программы на Паскале на конечный end.
И, наконец, директива
end start
заканчивает описание всего модуля на Ассемблере. Обратите внимание на параметр этой директивы – метку start. Она указывает входную точку программы, т.е. первую выполняемую команду нашей программы.
Список литературы.
-
Г. Майерс. Архитектура современных ЭВМ (в 2-х книгах). – Мир, 1985.
-
Burks A.W., Goldstine H.H., von Neumann J. Preliminary Discussion of the Logical Design of an Electronic Computing Instrument. – Pt. I, vol. I, Institutefor Advanced Study, Princeton, NJ, 1946.
-
Королёв Л.Н. Структуры ЭВМ и их математическое обеспечение. – Наука, 1985.
-
Любимский Э.З., Мартынюк В.В., Трифонов Н.П. Программирование. – Наука, 1980.
-
Пильщиков В.В. Программирование на языке Ассемблера IBM PC. – Диалог-МИФИ, 1994.
-
Скэлтон Л.Дж. Персональная ЭВМ IBM PC и XT. Программирование на языке Ассемблера. – Радио и связь, 1991.
-
Абель П. Язык Ассемлера для IBM PC и программирования.. – Высшая школа, 1992.
-
Нортон П., Соухэ Д. Язык Ассемблера IBM PC. – Компьютер, 1993.
-
Ю-Чжень Лю, Гибсон Г. Микропроцессоры семейства 8086/8088. – Радио и связь, 1987.
-
Донован Дж. Системное программрование. – Мир, 1975.
28