Отчет 2 (565153)
Текст из файла
Ф ЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮМ ОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ(государственный технический университет)Кафедра 304(вычислительные машины, системы и сети)Лабораторная работа по курсу«Ассемблер»Отчёт по работе№2 .Команды передачи управления и организации циклов(наименование работы)на языке программирования AssemblerВариант задания№2 .Лабораторную работу выполнили:студенты гр. 13-501, Резвяков Денис, Коршунов Евгений(должность).(Ф.
И. О.)Лабораторную работу принял:зам. декана фак. №3, Алещенко Алла Степановна(должность)(Ф. И. О.)« 10 ».(подпись)ноября(дата приёма)2009 г.Цель работы: Освоить нелинейное программированиес использованием условных и безусловных команд перехода,а также команд организации циклов.ЗаданиеРазработать программу реализации циклического процессавычисления выражения:25,,6;4;8;2;2,0;0;,0.5.При этом деление используется целочисленное.Код программы реализации нелинейного процессаprogram Laba2;vara, b, c, d, xa, xb, x: integer;r_asm, r_pas : array [0..10] of integer;labelstart, next, positive, zero, negative;begina := -6;b :=4;c :=8;d :=2;xa := -2;xb := 5;for x := xa to xb doifx < 0 then r_pas[x - xa] := 2*a*x + 5else if x > 0 then r_pas[x - xa] := (a*a - x) div (c + d)elser_pas[x - xa] := (a - b) div d;WriteLn;Write('x:');for x := xa to xb doWrite(x:5);Write('-');WriteLn;Write('pascal:');for x := 0 to xb - xa + 1 doWrite(r_pas[x]:5);–2–asmmovpushmovsubincmovincAX,AXCX,CX,CXAX,AXpush AXOFFSET r_asm {кладём адрес начала результирующего массива в AX}{сохраняем адрес результирующего массива в стеке (в BP-4)}xb {кладём конец промежутка X в регистр CX}xa {вычитаем из конца промежутка начало промежутка}{прибавляем к CX единицу для получения кол-ва проходов цикла}xb {кладём конец промежутка X в регистр AX}{добавляем к AX единицу и получаем смещение начала отсчёта...}{...относительно счётчика шагов цикла}{сохраняем смещение начала отсчёта в стеке (в BP-6)}start:mov BX, [BP-6] {копируем из стека значение смещения начала отсчёта в стеке}sub BX, CX {вычитаем из смещения текущий шаг цикла и получаем текущий X}jb negative {если результат вычитания (т.е.
X) < 0, то переходим по метке}je zero{если результат вычитания равен нулю, то переходим по метке}{результат вычитания больше нуля, выполняем код ниже}positive:mov AX, a {помещаем в регистр AX значение переменной A}imul AX{умножаем значение регистра AX само на себя}sub AX, BX {вычитаем из произведения текущее значение X (в регистре BX)}sbb DX, 0 {продолжаем вычитание (DX:AX) - (0:BX)}mov BX, c {помещаем в регистр BX значение переменной C}add BX, d {прибавляем к значению регистра BX значение переменной D}idiv BX{получаем результат в регистре AX: AX = (DX:AX) / BX}jmp next{безусловно переходим по метке сохранения результата и далее}zero:mov AX, a {помещаем в регистр AX значение переменной A}sub AX, b {вычитаем из значения регистра AX значение переменной B}cwd{расширяем слово AX до двойного слова DX:AX}idiv d{получаем результат в регистре AX: AX = DX:AX / D}jmp next{безусловно переходим по метке сохранения результата и далее}negative:mov AX, a {помещаем в регистр AX значение переменной A}imul BX{умножаем значение регистра AX на X (в BX): (DX:AX) = AX * BX}mov BX, 2 {помещаем в регистр BX число 2}imul BX{умножаем значение регистра AX на 2 (в BX): (DX:AX) = AX * BX}add AX, 5 {получаем результат в регистре AX: AX = AX + 5}next:movmovaddmovloopend;BX, [BP-4][BX], AXBX, 2[BP-4], BXstart{копируем из стека адрес результирующего массива}{копируем текущий результат по текущему адресу в массиве}{сдвигаем указатель (адрес) массива на одно слово}{копируем в стек сдвинутый адрес результирующего массива}{если обработаны не все шаги цикла, то переходим по метке}WriteLn;Write('asm:');for x := 0 to xb - xa + 1 doWrite(r_asm[x]:5);ReadLn;end.Результат работы программыx:pascal:asm:-22929-117170-5-5133233333433–3–53300.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.