7085

Оператор цикла LOOP. Команды условных переходов

Лабораторная работа

Информатика, кибернетика и программирование

Оператор цикла LOOP. Команды условных переходов Цель работы: Научиться использовать оператор повторения и команды условных переходов. Задание: Составьте программу для подсчета выражения, где N - произвольное четное положительное число, без исп...

Русский

2013-01-14

143 KB

10 чел.

Оператор цикла LOOP. Команды условных переходов

Цель работы:

Научиться использовать оператор повторения и команды условных переходов.

Задание:

Составьте программу для подсчета выражения , где N – произвольное четное положительное число, без использования в программе команд условных и безусловных переходов. Допускается использование оператора цикла

Порядок выполнения работы:

В Far Manager создадим файл 12.asm.

В файле 12.asm наберем программу, которая вычисляет выражение  и результат заносит в регистр АХ. Строки программы прокомментированы.

TITLE Program2 ;название программы

.MODEL small ;отводим под стек и под данные по 64Кб

.STACK 100h  ;отмечаем начало сегмента стека

.DATA ;отмечаем начало сегмента данных

N DW 4 ;определяем переменную N 

S DW 0 ;определяем переменную S

.CODE ;отмечаем начало сегмента кодов

main PROC

MOV AX, @data  ;копируем адрес

MOV DS, AX  ;сегмента данных

mov CX, N  ;задаем внешний источник повторений

L1:

push CX  ;Сохраним в стеке внешний источник повторений

mov BX,-1 ;задаем начальные значения регистров ВХ

mov AX,-1 ;и АХ перед началом внутреннего цикла

L2:

mul BX ;умножение регистров AX на BX результат в AX ((-1)^N)

loop L2  ;AX - содержит результат CX внутренних циклов умножения (-1)*(-1)

pop CX  ;восстановим СХ из стека для внешнего цикла

mul CX ;умножение регистров AX на CX результат в AX ((-1)^N*N)

add S, AX  ;накопление окончательной суммы в переменной S

loop L1 ;конец внешнего цикла, результат содержится в переменной S

mov AX, S ;сохранение окончательного результата в регистр AX перед выходом

MOV AX,4C00h ;выход

INT 21h  ;из программы

main ENDP

END main

Выполним отладку программу. 

Проверим значение регистра АХ перед выходом из программы с помощью отладчика Turbo Debugger.

Присвоим значения переменной N=4.

Значение регистра АХ перед выходом из программы в обратном коде равно FFFE. В прямом коде - 0002 т.е.  – в десятичной. Сравним со значением выражения . Таким образом, программа правильно вычисляет заданное выражение.

Присвоим значения переменной N=10.

Значение регистра АХ перед выходом из программы в обратном коде равно FFFB. В прямом коде -0005 т.е.  – в десятичной. Сравним со значением выражения .

Таким образом, программа правильно вычисляет заданное выражение.

Присвоим значения переменной N=126.

Значение регистра АХ перед выходом из программы в обратном коде равно FFC1. В прямом коде -003f т.е. – в десятичной. Сравним со значением выражения .

Таким образом, программа правильно вычисляет заданное выражение.

Вывод

В данной лабораторной работе изучались операторы повторения и команды условных переходов языка ассемблер. Была разработана программа вычисляющая выражение . Программа была проверена с тремя наборами исходных данных. Во всех трех вариантах результаты вычислений оказались верными. Таким образом, программа правильно вычисляет заданное выражение.


 

А также другие работы, которые могут Вас заинтересовать

35272. Тема. Обчислення інтегралу по формулі Сімпсона. 26 KB
  Обчислення інтегралу по формулі Сімпсона. Навчитися обчислювати інтеграл по формулі Сімпсона; склаcти алгоритм. Обчислити інтеграл по формулі Сімпсона при заданому значенні 16 include iostrem. Які проста та узагальнена формули Сімпсона Сформулюйте ідею методу Якою повинна бути розбивка відрізку на частини Яка оцінка похибки методу Сімпсона Який ступінь точності методу Який зв’язок формули Сімпсона та НьютонаКотеса .
35273. Тема. Метод Крилова побудови власного багаточлена матриці. 36 KB
  h void min { int klj; double [3][3]b[3][3]y0[3]y1[3]y2[3]y3[3]y4[3]yn1yn2yn3yn4Sum1Sum2Sum3Sum4; double x1x2x3x4d0d1d2d3102030213132; cout Vvedite mtritsy endl; fork=0;k =3;k { forl=0;l =3;l cin b[k][l]; } cout Vvedite nylevou vektor endl; fork=0;k =3;k cin y0[k]; fork=0;k =3;k { forl=0;l =3;l { yn1=b[k][l]y0[l]; Sum1=Sum1yn1; } y1[k]=Sum1; } fork=0;k =3;k { forl=0;l =3;l { yn2=b[k][l]y1[l]; Sum2=Sum2yn2; } y2[k]=Sum2; } fork=0;k =3;k {...
35274. Тема: Масиви. Селективна обробка масивів Ціль роботи: вивчити роботу з масивом як зі складеним типом даних 369 KB
  Відповідно до індивідуального завдання розробити алгоритм ініціалізації масиву селективної обробки масиву. 7 Знайти суму позитивних чисел масиву Контрольні запитання 1.Які типи мови С можна і не можна вказувати як тип при оголошенні масиву 4.У яких випадках розмірність масиву при оголошенні можна не вказувати 5.
35275. Тема: Обробка символьних даних Ціль роботи: вивчити і навчитися використовувати масиви символьних даних. 184 KB
  Обладнання: ПКПО Borlnd C Хід роботи 1. Для роботи з рядками використовувати покажчики на тип chr масиви покажчиків.Підготуватися до захисту лабораторної роботи вивчивши питання по даній темі.
35276. Тема: Використання бібліотечних функцій для роботи із символьними даними Ціль роботи: виробити практичні н. 54 KB
  Лабораторна робота № 24 Тема: Використання бібліотечних функцій для роботи із символьними даними Ціль роботи: виробити практичні навички в написанні програм з використанням бібліотечних функцій для роботи із символьними даними. Обладнання: ПКПО Borlnd C Хід роботи ТБ КОТ 1.Підготуватися до захисту лабораторної роботи вивчивши питання по даній темі.Який заголовний файл необхідний для роботи з бібліотечними функціями обробки символьних даних 2.
35277. Вкладені цикли. Багатомірні масиви. Масиви покажчиків 54.5 KB
  Показати використання різних видів синтаксичних конструкцій включаючи індексні вираження і покажчики на тип елементів масиву для доступу до елементів масиву. Поясните організацію збереження елементів масиву.Як відбувається масштабування при послідовному разіменування покажчика імені масиву у процесі доступу до елементів Які синтаксичні конструкції можна використовувати для доступу до елементів масиву 3.Приведіть загальну формулу для масиву Тип Ім'я [N][M][K] при доступі до заданого елемента Ім'я [i][j][k] і поясните її.
35278. Тема: Розробка програм зі складеними типами даних Ціль: виробити практичні навички в написанні програм з ви. 77 KB
  Як виробляється ініціалізація данчленів структури Які особливості ініціалізації масивів і структурчленів структури вкладених структур 6.Чи можна робити неповну ініціалізацію структури не для всіх членів структури 7.У чому відмінність об'єднання від структури 13.Як здійснюється доступ до данчленів структури об'єднання 14Як здійснюється доступ до данчленів структури розташованої в масиві структур.
35279. Тема: Використання покажчиків для роботи зі складеними типами даних Ціль роботи: виробити практичні навичк. 79 KB
  Використовувати покажчики як члени структури а також для доступу до членів структури і роботи з ними.Чи можна використовувати масиви і структури як данчлени структур вкладені оголошення 3.Чи можна використовувати в якості вкладені структури що повідомляється свого типу а також покажчики на структури свого типу 4.Як оголосити покажчик на структуру масив покажчиків на структури Чи існують різні варіанти оголошення 5.
35280. Тема: Використання покажчиків для роботи з функціями Ціль роботи: виробити практичні навички в написанні п 56.5 KB
  Використовувати покажчики для виклику відповідних функцій.Чи можна використовувати покажчики для передачі даних у функції 2.Чи можна використовувати покажчики для роботи з функціями різного типу 7.Як використовувати покажчики для виклику функції 10.