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

РАЗРАБОТКА И ОТЛАДКА ПРОГРАММ СЛОЖЕНИЯ ОДНОБАЙТНЫХ ЧИСЕЛ (ОПЕРАЦИИ ПЕРЕСЫЛКИ ДАННЫХ, СЛОЖЕНИЯ, РАЗЛИЧНЫЕ СПОСОБЫ АДРЕСАЦИИ)

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

Пояснения к работе

Основные теоретические знания студенты получают в ходе лекционных занятий. Ниже приводятся типовые примеры программ по данной теме:

;4)(20H)<--(27H)+(3AH)

MOV R0,#27H; (R0)<--27H

MOV A,@R0; (A)<--((R0))

MOV R0,#3AH; (R0)<--3AH

ADD A,@R0; (A)<--(A)+((R0))

MOV R0,#20H; (R0)<--20H

MOV @R0,A; ((R0))<--(A)

END

 ;1)(R7)<--(R6)+(R5)

MOV A,R6; (A)<--(R6)

ADD A,R5; (A)<--(A)+(R5)

MOV R7,A; (R7)<--(A)

;2)(R5)<--(R3)+(2AH)

MOV R0,#2AH; (R0)<--2AH

MOV A,@R0; (A)<--((R0))

ADD A,R3; (A)<--(A)+(R3)

MOV R5,A; (R5)<--(A)

END

END

 

;5) (2CH)<--(2AH)+(2BH)

MOV R1,#2AH; (R1)<--2AH

MOV A,@R1; (A)<--((R1))

INC R1; (R1)<--(R1)+1

ADD A,@R1; (A)<--(A)+((R1))

INC R1; (R1)<--(R1)+1

MOV @R1,A; ((R1))<--(A)

END

 

 ;3)(R2)<--(24H)+(3EH)

MOV R1,#24H; (R1)<--24H

MOV A,@R1; (A)<--((R1))

MOV R1,#3EH; (R1)<--3EH

ADD A,@R1; (A)<--(A)+((R1))

MOV R2,A; (R2)<--(A)

 END

 

 

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

1. Набрать исходный текст примера программы, произвести его трансляцию. Запустить отладчик-симулятор, загрузить программу в НЕХ-формате.

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

3. По заданию преподавателя получить исходные значения слагаемых; произвести суммирование слагаемых вручную в двоичном, шестнадцатеричном и десятичном видах; сопоставить результаты суммирования.

4. Занести заданные слагаемые в соответствующие регистры или ячейки ОЗУ. Включить счетчик циклов (set-cYcles), установить в нем 0 (если это необходимо).

5. Выполняя программу в пошаговом режиме (клавиша F10), наблюдать за соответствующими изменениями содержимого аккумулятора, регистров, ячеек ОЗУ. Запомнить получившееся время выполнения; с помощью адресов первой и последней команд в ПЗУ определить занимаемое программой количество байтов (конечный адрес минус начальный адрес и плюс единица).

6. Сопоставить результаты сложения п.3 и п.5, а также количество байт ПЗУ и время выполнения в машинных циклах п.2 и п.5.

7. Повторить пп.3-6 для других значений слагаемых.

8. По заданию преподавателя, не выходя из отладчика-симулятора, оперативно изменить программу так, чтобы были задействованы другие регистры или ячейки ОЗУ (с помощью изменения кодов операторов в ПЗУ); повторить пп.3-7.

9. Повторить пп.1-8 для других примеров программ.

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

РАЗРАБОТКА И ОТЛАДКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ПЕРЕХОДОВ, ЦИКЛОВ

 

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

Пояснения к работе

Ниже приводятся типовые примеры программ по данной теме:


;1) (20H)-(3FH)<--FFH

MOV R7,#20H

MOV R0,#20H

  MOV A,#0FFH

M1: MOV @R0,A

INC R0

DJNZ R7,M1

END

;2) (30H)-(3FH)<--(20H)-(2FH)

MOV R7,#10H

MOV R0,#20H

MOV R1,#30H

M1: MOV A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R7,M1

END

;3) (30H)-(3FH)<-->(20H)-(2FH)

MOV R7,#10H

MOV R0,#2FH

MOV R1,#3FH

M1: MOV A,@R0

XCH A,@R1

MOV @R0,A

DEC R0

DEC R1

DJNZ R7,M1

END

;4) (00H)-(3FH)<--00H

CLR A

MOV R0,#3FH

M1: MOV @R0,A

DJNZ R0,M1

END

;5) (10H)-(3FH)<--10H-3FH

MOV R5,#30H

MOV R1,#3FH

M1: MOV A,R1

MOV @R1,A

DEC R1

DJNZ R5,M1

END

 

 

;6) (25H)-(3FH)<--20H,25H,2AH...

MOV R7,#1BH

MOV R0,#25H

MOV A,#20H

M1: MOV @R0,A

INC R0

ADD A,#05H

DJNZ R7,M1

END

;7) (20H)-(2FH)<--(20H)-(2FH) +;(30H)-(3FH)

MOV R7,#10H

MOV R0,#2FH

MOV R1,#3FH

M1: MOV A,@R0

ADD A,@R1

MOV @R0,A

DEC R0

DEC R1

DJNZ R7,M1

END

;8) поиск FFH в (20H)-(3FH) и замена на 00H

MOV R7,#20H

MOV R0,#3FH

M1: MOV A,#0FFH

XRL A,@R0

JNZ M2

MOV @R0,A

M2: DEC R0

DJNZ R7,M1

END

;9)поиск FFH в (20H)-(3FH) и замена на EEH

MOV R7,#20H

MOV R0,#3FH

M1: MOV A,#0FFH

XRL A,@R0

JZ M2

JMP M3

M2: MOV A,#0EEH

MOV @R0,A

M3: DEC R0

DJNZ R7,M1

END




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

1.Выполнить пп. 1 и 2 лабораторной работы №2.

2. По заданию преподавателя занести начальные значения в соответствующие регистры или ячейки ОЗУ. Включить счетчик циклов (set-cYcles), установить в нем 0.

3. Выполнить пп. 5-7 лабораторной работы №2.

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

РАЗРАБОТКА И ОТЛАДКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ МНОГОБАЙТНЫХ ЧИСЕЛ, ФЛАГОВ, ОРГАНИЗАЦИЯ ОПЕРАЦИИ ВЫЧИТАНИЯ, ЛОГИЧЕСКИЕ ОПЕРАЦИИ

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

Пояснения к работе

Основные теоретические знания студенты получают в ходе лекционных занятий. Ниже приводятся типовые примеры программ по данной теме:


;1) (R6)<--(R5)and(R4)

MOV A,R5

ANL A,R4

MOV R6,A

NOP

 ;(R3)<--(R4)or(2BH)

MOV R0,#2BH

MOV A,R4

ORL A,@R0

MOV R3,A

NOP

 ;(2DH)<--(2EH)xor(2FH)

MOV R0,#2FH

MOV A,@R0

DEC R0

XRL A,@R0

DEC R0

MOV @R0,A

END

;2) сброс 0-го бита R3

MOV A,#0FEH; 1111 1110 B

ANL A,R3

MOV R3,A

NOP

;установка 7-го бита (3EH)

MOV R0,#3EH

MOV A,@R0

ORL A,#80H; 1000 0000 B

MOV @R0,A

NOP

;сброс 2,3-го и уст-ка 4,5-го бита R7

MOV A,R7

ANL A,#0F3H; 1111 0011 B

ORL A,#30H; 0011 0000 B

MOV R7,A

NOP

;сброс младшей тетрады (2CH)

MOV R0,#2CH

MOV A,@R0

ANL A,#0F0H; 1111 0000 B

MOV @R0,A

NOP

;установка старшей тетрады (3CH)

MOV R0,#3CH

MOV A,@R0

ORL A,#0F0H; 1111 0000 B

MOV @R0,A

NOP

;инверсия R2

MOV A,R2

CPL A

MOV R2,A

END


 

;3) при(F1)=0 - инверсия B0 (2FH)

; при(F1)=1 - инверсия B7 (2FH)

MOV R0,#2FH

MOV A,@R0

JF1 M1

;инверсия B0

XRL A,#01H; 0000 0001 B

JMP M2

;инверсия B7

M1: XRL A,#80H; 1000 0000 B

M2: MOV @R0,A

END;

4) (R6)<--(R5)-(R4), 1 сп.

MOV A,R4

CPL A

INC A

ADD A,R5

MOV R6,A

NOP

;(39H)<--(3AH)-(3BH), 2 сп.

MOV R0,#3AH

MOV A,@R0

CPL A

INC R0

ADD A,@R0

CPL A

MOV R0,#39H

MOV @R0,A

END

;5) (A)<--max (R4),(R6)

CLR C

MOV A,R4

CPL A

ADD A,R6

JNC NC

    

MOV A,R6

JMP M2

NC: MOV A,R4

M2: NOP

END

;6) (R6,R5)<--(R6,R5)+(R4,R3)

CLR C

MOV A,R5

   ADD A,R3

MOV R5,A

MOV A,R6

ADDC A,R4

MOV R6,A

END

;7) сдвиг (R4,R3) влево

CLR C

MOV A,R3

RLC A

MOV R3,A

MOV A,R4

RLC A

MOV R4,A

END

;8) (R6,R5)<--(R6,R5)-(R4,R3)

MOV A,R5

CPL A

ADD A,R3

CPL A

MOV R5,A

MOV A,R6

CPL A

ADDC A,R4

  CPL A

MOV R6,A

END





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

1. Повторить пп. 1-3 занятия №3.

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

ОТЛАДКА ПРОГРАММ УМНОЖЕНИЯ И ДЕЛЕНИЯ

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

Пояснения к работе

  Основные теоретические знания студенты получают в ходе лекционных занятий. Ниже приводятся примеры программ по данной теме:


;(R7,R6,R5)<--((R0+2),(R0+1))*((R0))

;(R7,R6,R5) – результат и частичная        ; сумма (ЧС)

; при (R0)=29H ((R0)) – множитель (Мн)

; ((R0+2),(R0+1)) – умножаемое (Ум)

;установка начальных значений

CLR A;  очистка A

MOV R7,A;       R7

MOV R6,A;       R6

MOV R5,A;       R5

MOV R1,#08H; 8 циклов

MOV R0,#29H; указать на Мн

MOV A,@R0;  загрузить Мн в A

;сдвиг ЧС влево через С

M0: CLR C;  очистка C

XCH A,R5; сдвиг R5 влево

RLC A;         через C без

XCH A,R5;   потери (A)

XCH A,R6; сдвиг R6 влево

RLC A;         через C без

XCH A,R6;   потери (A)

XCH A,R7; сдвиг R7 влево

RLC A;         через C без

XCH A,R7;   потери (A)

;сдвиг Мн влево через C

RLC A;

;анализ (С)

JNC M1; при (C)=0 обход суммирования

;сложение ЧС и Ум

CLR C;    очистка C

INC R0; указать на мл. байт Ум

XCH A,R5;сложить мл. байты Ум и

ADD A,@R0; ЧС без потери (A),

XCH A,R5;  результат в R5

INC R0; указать на ст. байт Ум

 

XCH A,R6; сложить ст. байт Ум и

ADDC A,@R0; ср. байт ЧС с учетом (C)

XCH A,R6; без потери (A), результат в R6

  XCH A,R7; сложить ст. байт ЧС

ADDC A,#00H; и признака C без

XCH A,R7; потери (A), результат в R7

 DEC R0;  вернуть

 DEC R0;     указатель на Мн

M1: DJNZ R1,M0; проверка конца цикла

END


;((R0+3),(R0+2).(R0+1),(R0))<--(R7,R6,R5)/(R4,R5)


; (R7,R6,R5) - делимое

; (R4,R3) - делитель

; ((R0+3),(R0+2)) - частное

; ((R0+1),(R0)) – остаток при (R0)=20H

;установка начальных значений

MOV R0,#24H; очистка

MOV R1,#04H; частного

CLR A;               и остатка

D1: DEC R0;      R0 укажет

MOV @R0,A;    на мл. байт

DJNZ R1,D1;     остатка

MOV R1,#18H; 24 цикла

;сдвиг делимого влево через C

D2: CLR C

MOV A,R5; старший бит

RLC A;        старшего байта

MOV R5,A; делимого

MOV A,R6; попадает

RLC A;        в C

MOV R6,A

MOV A,R7

RLC A

MOV R7,A

;сдвиг остатка влево через C

MOV A,@R0; бит из C

RLC A;           попадает

MOV @R0,A; на место

INC R0;          мл. бита

MOV A,@R0; мл. байта

RLC A;            остатка

MOV @R0,A

DEC R0; вернуть указатель

;вычисление остатка

;((R0+1),(R0))<--((R0+1),(R0))-(R4,R3)

CLR C;       разность

MOV A,@R0;

CPL A;           младших

ADD A,R3;

CPL A;

MOV @R0,A;

INC R0;          байтов

MOV A,@R0; разность

CPL A;

ADDC A,R4; старших

CPL A;

MOV @R0,A; байтов

DEC R0;вернуть указатель

;анализ остатка

JNC D3;обход, если остаток >=0

;восстановление остатка

;((R0+1),(R0))<--((R0+1),(R0))+(R4,R3)

MOV A,@R0; сумма

ADD A,R3;     младших

    MOV @R0,A; байтов

INC R0

MOV A,@R0; сумма

ADDC A,R4; старших

MOV @R0,A; байтов

DEC R0

;запись бита и сдвиг частного влево

D3: CPL C;     инверсия С

INC R0;      указать на младший

INC R0;          байт частного

MOV A,@R0; сдвиг

RLC A;          младшего байта

MOV @R0,A; частного

INC R0; указать на ст. байт частного

MOV A,@R0; сдвиг

RLC A;          старшего байта

MOV @R0,A; частного

DEC R0;    вернуть указатель

DEC R0;        на младший

DEC R0;        байт остатка

DJNZ R1,D2;анализ окончания цикла

END







Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: