Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchet4.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
30.47 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Пермский национальный исследовательский политехнический университет»

Кафедра Автоматизации технологических процессов и производств

Отчет по лабораторной работе № 1

Знакомство с языком ассемблера

(название лабораторной работы)

Выполнил

студент гр.

АТП-12

Щипачев И.Д.

(подпись)

(Ф.И.О.)

Проверил

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

Сташков С.И.

(подпись)

(Ф.И.О.)

Пермь 2013

  1. Цель работы:

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

  1. Исходное задание.

Даны две 4-х-байтовые таблицы SOURSE и DEST. SOURSE – исходная таблица, DEST - конечная. Программа копирует каждый байт из таблицы SOURSE в таблицу DEST по следующему правилу:

- если байт <0F, то к этому байту добавляется 0F и результат пересылается в DEST;

- если байт =0F, то он пересылается в DEST без изменений;

- если байт >0F, то из него вычитается 0F и результат пересылается в DEST.

Таблица SOURSE содержит следующие элементы: 01, АF, 0F, 08.

  1. Расчетно-графическая часть:

3.1. Алгоритм работы программы:

Даны две 4-х-байтовые таблицы SOURSE и DEST. SOURSE – исходная таблица, DEST - конечная. Программа копирует каждый байт из таблицы SOURSE в таблицу DEST по следующему правилу:

- если байт <0F, то к этому байту добавляется 0F и результат пересылается в DEST;

- если байт =0F, то он пересылается в DEST без изменений;

- если байт >0F, то из него вычитается 0F и результат пересылается в DEST.

3.2. Листинг программы:

Turbo Assembler Version 3.2 11/17/13 18:55:27 Page 1

LAB1.ASM

lab1

1 ; ========================

2 0000 my_stack segment stack 'stack'

3 0000 40*(73 74 61 63 6B + db 64 dup('stack ')

4 20 20 20)

5 0200 my_stack ends

6 ; ========================

7 0000 dseg segment

8 0000 01 AF 0F 08 source db 01h,0afh,0fh,08h

9 0004 04*(??) dest db 4 dup(?)

10 0008 dseg ends

11 ; ========================

12 0000 cseg segment

13 assume cs:cseg,ds:dseg,ss:my_stack

14 0000 entry proc far

15 0000 1E push ds

16 0001 33 C0 xor ax,ax

17 0003 50 push ax

18 0004 B8 0000s mov ax,dseg

19 0007 8E D8 mov ds,ax

20 0009 B9 0004 mov cx,4

21 000C BB 0000r mov bx,offset source ; or LEA bx,source

22 000F BF 0004r mov di, offset dest ; or LEA di,dest

23 0012 again:

24 0012 8A 07 mov al,[bx]

25 0014 3C 0F cmp al,0fh

26 0016 74 09 je e

27 0018 72 05 jb a

28 001A 2C 0F sub al,0fh

29 001C EB 03 90 jmp e

30 001F 04 0F a: add al,0fh

31 0021 88 05 e: mov [di],al

32 0023 43 inc bx

33 0024 47 inc di

34 0025 E2 EB loop again

35 0027 CB ret

36 0028 entry endp

37 0028 cseg ends

38 end entry

Turbo Assembler Version 3.2 11/17/13 18:55:27 Page 2

Symbol Table

lab1

Symbol Name Type Value

??DATE Text "11/17/13"

??FILENAME Text "LAB1 "

??TIME Text "18:55:27"

??VERSION Number 0314

@CPU Text 0101H

@CURSEG Text CSEG

@FILENAME Text LAB1

@WORDSIZE Text 2

A Near CSEG:001F

AGAIN Near CSEG:0012

DEST Byte DSEG:0004

E Near CSEG:0021

ENTRY Far CSEG:0000

SOURCE Byte DSEG:0000

Groups & Segments Bit Size Align Combine Class

CSEG 16 0028 Para none

DSEG 16 0008 Para none

MY_STACK 16 0200 Para Stack STACK

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]