Скачиваний:
12
Добавлен:
01.05.2014
Размер:
48.64 Кб
Скачать

Государственный комитет Российской Федерации

по высшему образованию

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

Кафедра ИИСТ

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

Студенты: Виноградов К. ãð. 6561

Евдокимов С.

Преподаватель: Королев П.Г.

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

Задание.

  1. Записать во внешней памяти число равное номеру группы минус номер бригады (номер группы 6561, номер бригады 4)

  2. Выполнить следующие операции:

    1. получить обратный код от числа

    2. получить дополнительный код от числа

    3. сложить число с обратным кодом (логически и арифметически)

    4. сложить число с дополнительным кодом

    5. умножить число само на себя (возведение в степень)

    6. разделить число на номер бригады

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

MCS-96 MACRO ASSEMBLER SECOND_LAB

03/20/10 21:40:55 PAGE 1

DOS D.40 (046-N) MCS-96 MACRO ASSEMBLER, V1.3

SOURCE FILE: lab_2_4.a96

OBJECT FILE: lab_2_4.obj

CONTROLS SPECIFIED IN INVOCATION COMMAND: <none>

LOC OBJECT STMT SOURCE STATEMENT

1 ;****************************************************************************

2 Second_lab MODULE main

3 ;Evdokimov_Vinogradov:

4 ;функция:

5 ;

6 $nolist ; подавление листинга

72 ;****************************************************************************

73 ; внутренние параметры

74 ;****************************************************************************

0030 75 rseg at (30h) ; сегмент регистров

0030 76 data_word1: dsw 1 ; запись номера группы (6561)

0032 77 data_word2: dsw 1 ; запись номера бригады (4)

0034 78 data_word3: dsw 1 ; разность (6557)

0036 79 data_word4: dsw 1 ; обратный код от 6557

0038 80 data_word5: dsw 1 ; дополнительный код от 6557

003A 81 data_word6: dsw 1 ; сумма обратный код от 6557 + разность

(6557)

003C 82 data_word7: dsw 1 ; сумма дополнительный код от 6557+

разность (6557)

003E 83 data_word8: dsw 1 ; умножение числа само на себя

(6557*6557)

0040 84 data_word9: dsw 1 ; деление числа на номер бригады

(6557/4)

0042 85 data_word10: dsw 1 ; значение логического сложения

86

87 ;****************************************************************************

88 ;блок внешних связей

89 ;****************************************************************************

90 extrn www

91 ;****************************************************************************

92 ;ввод:

93 ;вывод:

94 ;****************************************************************************

8100 95 cseg at 8100h ; сегмент кода программы

8100 A1A11930 96 ld data_word1,#6561 ; ввод числа 6561

8104 A1040032 97 ld data_word2,#4 ; ввод номера бригады

(4)

8108 48323034 98 sub data_word3,data_word1,data_word2 ; вычитание

(6561-4)

810C A03436 99 ld data_word4,data_word3 ;

810F 0236 100 not data_word4 ; обратный код

8111 A03438 101 ld data_word5,data_word3 ;

8114 0338 102 neg data_word5 ; дополнительный код

8116 4434363A 103 add data_word6,data_word4,data_word3 ;

811A A03442 104 ld data_word10,data_word3 ; ??

811D 803442 105 or data_word10,data_word3 ; логическое

сложение ??

8120 4434383C 106 add data_word7,data_word5,data_word3 ;

8124 A0343E 107 ld data_word8,data_word3

8127 FE7C3E3E 108 mulb data_word8,data_word8 ; умножение

812B A03440 109 ld data_word9,data_word3

812E FE8C3240 110 div data_word9,data_word2 ; деление

8132 F0 111 ret ;

112 ;

113 ;*****************************************************************************

8133 114 END

MCS-96 MACRO ASSEMBLER SECOND_LAB

03/20/10 21:40:55 PAGE 2

SYMBOL TABLE LISTING

--------------------

N A M E VALUE ATTRIBUTES

AD_COMMAND. . . . . . . . . . . 0002H NULL ABS BYTE

AD_RESULT . . . . . . . . . . . 0002H NULL ABS BYTE

AD_RESULT_HI. . . . . . . . . . 0003H NULL ABS BYTE

AD_RESULT_LO. . . . . . . . . . 0002H NULL ABS BYTE

AD_TIME . . . . . . . . . . . . 0003H NULL ABS BYTE

BAUD_RATE . . . . . . . . . . . 000EH NULL ABS BYTE

DATA_WORD1. . . . . . . . . . . 0030H REG ABS WORD

DATA_WORD10 . . . . . . . . . . 0042H REG ABS WORD

DATA_WORD2. . . . . . . . . . . 0032H REG ABS WORD

DATA_WORD3. . . . . . . . . . . 0034H REG ABS WORD

DATA_WORD4. . . . . . . . . . . 0036H REG ABS WORD

DATA_WORD5. . . . . . . . . . . 0038H REG ABS WORD

DATA_WORD6. . . . . . . . . . . 003AH REG ABS WORD

DATA_WORD7. . . . . . . . . . . 003CH REG ABS WORD

DATA_WORD8. . . . . . . . . . . 003EH REG ABS WORD

DATA_WORD9. . . . . . . . . . . 0040H REG ABS WORD

HSI_MODE. . . . . . . . . . . . 0003H NULL ABS BYTE

HSI_STATUS. . . . . . . . . . . 0006H NULL ABS BYTE

HSI_TIME. . . . . . . . . . . . 0004H NULL ABS WORD

HSO_COMMAND . . . . . . . . . . 0006H NULL ABS BYTE

HSO_TIME. . . . . . . . . . . . 0004H NULL ABS WORD

IMASK1. . . . . . . . . . . . . 0013H NULL ABS BYTE

INT_MASK. . . . . . . . . . . . 0008H NULL ABS BYTE

INT_MASK1 . . . . . . . . . . . 0013H NULL ABS BYTE

INT_PEND. . . . . . . . . . . . 0009H NULL ABS BYTE

INT_PEND1 . . . . . . . . . . . 0012H NULL ABS BYTE

INT_PENDING . . . . . . . . . . 0009H NULL ABS BYTE

IOC0. . . . . . . . . . . . . . 0015H NULL ABS BYTE

IOC1. . . . . . . . . . . . . . 0016H NULL ABS BYTE

IOC2. . . . . . . . . . . . . . 000BH NULL ABS BYTE

IOC3. . . . . . . . . . . . . . 000CH NULL ABS BYTE

IOPORT0 . . . . . . . . . . . . 000EH NULL ABS BYTE

IOPORT1 . . . . . . . . . . . . 000FH NULL ABS BYTE

IOPORT2 . . . . . . . . . . . . 0010H NULL ABS BYTE

IOS0. . . . . . . . . . . . . . 0015H NULL ABS BYTE

IOS1. . . . . . . . . . . . . . 0016H NULL ABS BYTE

IOS2. . . . . . . . . . . . . . 0017H NULL ABS BYTE

IPEND1. . . . . . . . . . . . . 0012H NULL ABS BYTE

PTSSEL. . . . . . . . . . . . . 0004H NULL ABS WORD

PTSSRV. . . . . . . . . . . . . 0006H NULL ABS WORD

PWM_CONTROL . . . . . . . . . . 0017H NULL ABS BYTE

PWM1_CONTROL. . . . . . . . . . 0016H NULL ABS BYTE

PWM2_CONTROL. . . . . . . . . . 0017H NULL ABS BYTE

R0. . . . . . . . . . . . . . . 0000H NULL ABS WORD

SBUF. . . . . . . . . . . . . . 0007H NULL ABS BYTE

SECOND_LAB. . . . . . . . . . . ----- MODULE MAIN STACKSIZE(0)

SP. . . . . . . . . . . . . . . 0018H NULL ABS WORD

SP_CON. . . . . . . . . . . . . 0011H NULL ABS BYTE

SP_STAT . . . . . . . . . . . . 0011H NULL ABS BYTE

T2CAPTURE . . . . . . . . . . . 000CH NULL ABS WORD

T2CONTROL . . . . . . . . . . . 000CH NULL ABS BYTE

TIMER1. . . . . . . . . . . . . 000AH NULL ABS WORD

TIMER2. . . . . . . . . . . . . 000CH NULL ABS WORD

MCS-96 MACRO ASSEMBLER SECOND_LAB

03/20/10 21:40:55 PAGE 3

N A M E VALUE ATTRIBUTES

WATCHDOG. . . . . . . . . . . . 000AH NULL ABS BYTE

WSR . . . . . . . . . . . . . . 0014H NULL ABS BYTE

WWW . . . . . . . . . . . . . . ----- REG EXTERNAL

ASSEMBLY COMPLETED, NO ERROR(S) FOUND.

Отладчик:

Флаги

перем.

код

значение

Z

N

V

C

1

0

0

0

0030

19A1

6561

1

0

0

0

0032

0004

4

1

0

0

0

0034

199D

6557

0

0

0

1

0036

199D

6557

0

0

0

1

0036

E662

58978

0

1

0

0

0038

199D

6557

0

1

0

0

0038

E663

58979

0

1

0

0

003A

FFFF

65535

0

1

0

0

003C

0000

0

1

0

0

1

003E

199D

6557

1

0

0

1

003E

2649

9801

1

0

0

1

0040

199D

6557

1

0

0

1

0042

199D

6557

1

0

0

1

0040

E66A

58986

1

0

1

1

0042

7FF5

32757

1

0

1

1

0042

7FF5

32757

0

0

0

0

Вывод.

В данной лабораторной работе мы познакомились с командами арифметических (вычитание, сложение, умножение, деление) и логических операций (сложение). Произвели отладку программы, проверили ее работу в пошаговом режиме. Проверка полученных кодов в программе соответствует значениям, выполненных без использования программы.

Посмотрели изменения флагов (Z, N, V, C).

Z - признак нулевого результата, т.е. если результат выполнения равен 0, то значение флага равен 1, во всех остальных случаях флаг равен 0.

N - признак отрицательного результата повторяет значение старшего бита результата операций.

V - флаг переполнения устанавливается, когда операция генерирует результат находящийся за пределами диапазона операнда назначения.

C - бит переноса - совпадает со значением переноса из старшего разряда при выполнении операции сложения, противоположен при операции вычитания, а также совпадает со значением бита кода, вытолкнутого за пределы разрядной сетки при сдвиге разрядной сетки влево или вправо.

Распределение памяти:

Имя переменной

Формат

Назначение

Data_word1

aдрес: 0030h

Слово

Хранится число, равное № группы (6561)

Data_word2

aдрес: 0032h

Слово

Хранится число, равное номера бригады.

Data_word3

aдрес: 0034h

Слово

Хранится разность № группы (6561) - номера бригады.

Data_word4

aдрес: 0036h

Слово

Хранится числа с обратным кодом.

Data_word5

aдрес: 0038h

Слово

Хранится дополнительный код числа.

Data_word6

aдрес: 003Ah

Слово

Хранится сумма числа с обратным кодом.

Data_word7

aдрес: 003Ch

Слово

Хранится сумма числа с дополнительным кодом.

Data_word8

aдрес: 003Eh

слово

Хранится значение умножения самого на себя

Data_word9

aдрес: 0040h

слово

Хранится значение деление числа на номер бригады

Data_word10

aдрес: 0042h

Слово

Хранится значение логического сложения.

Соседние файлы в папке Лабораторная работа №2
  • #
    01.05.201448.64 Кб12LAB2_4.DOC
  • #
    01.05.20142.22 Кб7LAB_2_4.A96
  • #
    01.05.20141.12 Кб7LAB_2_4.BAK
  • #
    01.05.20146.53 Кб8LAB_2_4.LST