Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab3 / report_lr3

.doc
Скачиваний:
7
Добавлен:
10.02.2019
Размер:
480.77 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра МОЭВМ

отчет

по лабораторной работе №3

по дисциплине «Организация ЭВМ и систем»

Тема: Изучение организации ветвлений в программах на языке Ассемблера

Студент гр. 3303

Преподаватель

Санкт-Петербург

2018

Цель работы.

Ознакомиться с организации ветвлений в программах на языке Ассемблер.

Постановка задачи.

Разработать на языке Ассемблер программу, которая по заданным целым значениям a,b,i,k, размером 1 слово, вычисляет:

  1. значение i1 = f1(a,b,i)

  2. значение i2 = f2(a,b,i)

  3. значение res = f3(i1,i2,k)

где функции из варианта 12 имеют вид:

Значения a,b,i,k являются исходными данными, которые должны выбираться студентом самостоятельно и задаваться в процессе исполнения программы в режиме отладки. При этом следует рассмотреть все возможные комбинации параметров a, b и k, позволяющие проверить различные маршруты выполнения программы.

Требования к программе:

  1. при разработке программы не использовать фрагменты, представленные на ЯВУ, в частности, для ввода-вывода данных. Исходные данные должны вводится, а результаты контролироваться в режиме отладки;

  2. при вычислении функций f1 и f2 вместо операции умножения следует использовать арифметический сдвиг и, возможно, сложение;

при вычислении функций f1 и f2 не использовать процедуры;

  1. при разработке программы следует минимизировать длину кода.

Ход работы.

  1. Была написан программа lab3.asm. Программа протранслированна с созданием файла листинга l3.lst и объектного файла l3.obj. Код программы и файл листинга приведены в приложении А и Б.

  2. Программа была слинкована и был получен загрузочный модуль l3.exe.

  3. Программа l3.exe выполнена в пошаговом режиме под управлением отладчика afd.

Результат тестирования программы представлен в табл.1

Таблица 1 – тестирование программы на различные исходные данный

Исходные данные

Результат

Ожидаемый результат

a

b

i

k

res

2

1

1

1

-1

-1

2

1

1

-1

2

2

1

2

1

1

-6

-6

1

2

1

-1

-1

2

Рисунок 1 – пример работы программы

На рисунке 1 программа отработала с исходными данными a = 2; b =1; i=1; k =1 и получила корректный ответ.

Вывод:

В ходе данной лабораторной работы я ознакомился с организацией ветвлений в программах на языке Ассемблера.

Приложение А

Код программы lab3.asm

AStack SEGMENT STACK

DW 12 DUP(?)

AStack ENDS

DATA SEGMENT

a DW 2

b DW 1

i DW -1

k DW 1

i1 DW ?

i2 DW ?

res DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA ,SS:AStack

Main PROC FAR

push DS

sub AX,AX

push AX

mov AX,DATA

mov DS,AX

; f1 and f2 a>b

mov AX,a

cmp AX,b

jle f12

mov AX,i

shl AX,1

shl AX,1

neg AX

sub AX,3

mov i1,AX

add AX,8

mov i2,AX

jmp f1end

f12:

mov AX,i

add AX,i

add AX,i

sub AX,10

neg AX

mov i2,AX

neg AX

shl AX,1

add AX,10

mov i1,AX

f1end:

; f3

cmp k,0000h

jl f3

mov AX,i2

neg AX

cmp AX,-6h

jge f3end

mov AX,-6h

jmp f3end

f3:

mov AX,i1

sub AX,i2

cmp AX,0000h

jg f31

neg AX

f31:

cmp AX,2h

jle f3end

mov AX,2h

f3end:

mov res,AX

ret

Main ENDP

CODE ENDS

END Main

Приложение Б

Листинг lr3.lst

0000 AStack SEGMENT STACK

0000 000C[ DW 12 DUP(?)

????

]

0018 AStack ENDS

0000 DATA SEGMENT

0000 0002 a DW 2

0002 0001 b DW 1

0004 FFFF i DW -1

0006 0001 k DW 1

0008 0000 i1 DW ?

000A 0000 i2 DW ?

000C 0000 res DW ?

000E DATA ENDS

0000 CODE SEGMENT

ASSUME CS:CODE, DS:DATA ,SS:AStack

0000 Main PROC FAR

0000 1E push DS

0001 2B C0 sub AX,AX

0003 50 push AX

0004 B8 ---- R mov AX,DATA

0007 8E D8 mov DS,AX

; f1 and f2 a>b

0009 A1 0000 R mov AX,a

000C 3B 06 0002 R cmp AX,b

0010 7E 18 jle f12

0012 A1 0004 R mov AX,i

0015 D1 E0 shl AX,1

0017 D1 E0 shl AX,1

0019 F7 D8 neg AX

001B 2D 0003 sub AX,3

001E A3 0008 R mov i1,AX

0021 05 0008 add AX,8

0024 A3 000A R mov i2,AX

0027 EB 1E 90 jmp f1end

002A f12:

002A A1 0004 R mov AX,i

002D 03 06 0004 R add AX,i

0031 03 06 0004 R add AX,i

0035 2D 000A sub AX,10

0038 F7 D8 neg AX

003A A3 000A R mov i2,AX

003D F7 D8 neg AX

003F D1 E0 shl AX,1

0041 05 000A add AX,10

0044 A3 0008 R mov i1,AX

0047 f1end:

; f3

0047 83 3E 0006 R 00 cmp k,0000h

004C 7C 10 jl f3

004E A1 000A R mov AX,i2

0051 F7 D8 neg AX

0053 3D FFFA cmp AX,-6h

0056 7D 1C jge f3end

0058 B8 FFFA mov AX,-6h

005B EB 17 90 jmp f3end

005E f3:

005E A1 0008 R mov AX,i1

0061 2B 06 000A R sub AX,i2

0065 3D 0000 cmp AX,0000h

0068 7F 02 jg f31

006A F7 D8 neg AX

006C f31:

006C 3D 0002 cmp AX,2h

006F 7E 03 jle f3end

0071 B8 0002 mov AX,2h

0074 f3end:

0074 A3 000C R mov res,AX

0077 CB ret

0078 Main ENDP

0078 CODE ENDS

END Main

Segments and Groups:

N a m e Length Align Combine Class

ASTACK . . . . . . . . . . . . . 0018 PARA STACK

CODE . . . . . . . . . . . . . . 0078 PARA NONE

DATA . . . . . . . . . . . . . . 000E PARA NONE

Symbols:

N a m e Type Value Attr

A . . . . . . . . . . . . . . . L WORD 0000 DATA

B . . . . . . . . . . . . . . . L WORD 0002 DATA

F12 . . . . . . . . . . . . . . L NEAR 002A CODE

F1END . . . . . . . . . . . . . L NEAR 0047 CODE

F3 . . . . . . . . . . . . . . . L NEAR 005E CODE

F31 . . . . . . . . . . . . . . L NEAR 006C CODE

F3END . . . . . . . . . . . . . L NEAR 0074 CODE

I . . . . . . . . . . . . . . . L WORD 0004 DATA

I1 . . . . . . . . . . . . . . . L WORD 0008 DATA

I2 . . . . . . . . . . . . . . . L WORD 000A DATA

K . . . . . . . . . . . . . . . L WORD 0006 DATA

MAIN . . . . . . . . . . . . . . F PROC 0000 CODE Length = 0078

RES . . . . . . . . . . . . . . L WORD 000C DATA

@CPU . . . . . . . . . . . . . . TEXT 0101h

@FILENAME . . . . . . . . . . . TEXT LAB3

@VERSION . . . . . . . . . . . . TEXT 510

81 Source Lines

81 Total Lines

21 Symbols

47982 + 461325 Bytes symbol space free

0 Warning Errors

0 Severe Errors

8

Соседние файлы в папке lab3
  • #
    10.02.20199.41 Кб5calc.xlsx
  • #
    10.02.20191.06 Кб8Lab3.asm
  • #
    10.02.2019480.77 Кб7report_lr3.doc