Скачиваний:
76
Добавлен:
11.02.2014
Размер:
32.77 Кб
Скачать

Цель работы: ознакомление со способами определения данных и изучение механизма передачи упарвления в программе (циклы и переходы) для операций сравнения.

ЗАДАНИЕ ДЛЯ ЛАБОРАТОРНОЙ РАБОТЫ

  1. Определить массив в области данных

  2. Составить алгоритм прграммы, выполняющей действия с элементами массива согласно № варианта (см. табл.).

  3. Написать программу на языке ассемблер, реализующей данный алгоритм.

  4. Отладить и выполнить программу.

№ Варианта соответствует № по списку.

№ Варианта

Задание

Интервал

Кол-во

элементов

13

Наити сумму отрицательных элементов массива, попавших в заданный интервал

(-13;0)

10

Turbo Assembler Version 3.1 25/03/04 14:35:53 Page 1

liliya.asm

1 0000 lab segment para 'code'

2 assume cs:lab; ds:lab; ss:lab

3 org 100h

4 0100 EB 0B 90 ad:jmp asd

5 0103 EC F4 F5 F6 F8 FB FE+ titl db -20,-12,-11,-10,-8,-5,-2,-1,5,6

6 FF 05 06

7 010D asd proc

8 010D B9 000A mov cx,10

9 0110 BA 0000 mov dx,0

10 0113 BB 0103r lea bx,titl

11 0116 8A 07 m1:mov al,[bx]

12 0118 3C F3 cmp al,-13

13 011A 7F 03 jg m2

14 011C EB 0A 90 jmp m4

15 011F 3C 00 m2:cmp al,0

16 0121 7C 03 jl m3

17 0123 EB 03 90 jmp m4

18 0126 02 D0 m3:add dl,al

19 0128 43 m4:inc bx

20 0129 E2 EB loop m1

21 012B C3 ret

22 012C asd endp

23 012C lab ends

24 end ad

Turbo Assembler Version 3.1 25/03/04 14:35:53 Page 2

Symbol Table

Symbol Name Type Value

??DATE Text "25/03/04"

??FILENAME Text "liliya "

??TIME Text "14:35:53"

??VERSION Number 030A

@CPU Text 0101H

@CURSEG Text LAB

@FILENAME Text LILIYA

@WORDSIZE Text 2

AD Near LAB:0100

ASD Near LAB:010D

M1 Near LAB:0116

M2 Near LAB:011F

M3 Near LAB:0126

M4 Near LAB:0128

TITL Byte LAB:0103

Groups & Segments Bit Size Align Combine Class

LAB 16 012C Para none CODE

Отладим программу:

Вполняемая команда

Значения регистров

Значения флагов

mov cx,000A

ip 010D

mov dx,0000

cx 000A

ip 0110

mov bx,0103

ip 0113

mov al,[bx]

bx 0103

ip 0116

cmp al ,F3

ax 00EC

ip 0118

jg 011F

ip 011A

с=1 s=1 p=1

cmp ax,0128

ip011C

jl 0125

ip 0120

с=0 p=0

jmp 0127

add dx,ax

ip 0125

inc bx

dx F4EC

ip 0127

loop 0116

bx 0104

ip 0129

s=0 p=0

ret

ax 0006

bx 010D

cx 0000

dx 00CF

ip 012B

с=0

Вывод: мы ознакомились со способами определения данных и изучили механизм передачи упарвления в программе (циклы и переходы) для операций сравнения. Результат, полученный вычислениями на языке Ассемблера, совпадает с результатами, вычисленными вручную.