МПС 3 курс Практические задания дополнительно - BysonHunter/Tavrich_college GitHub Wiki

🏠 Главная · Микропроцессорные системы · 3 курс · Практические работы по МДК.02.01 «Микропроцессорные системы»


mvi a, 10

  mvi b, 5

  add b

  mov d, a

######### 2

  ;0020 0021

  lda 0020

  mov b, a

  lda 0021

  add b

  mov d, a

######### 3

  ;0020 0021

  lhld 0020

  mov a, h

  add l

  mov d, a

######### 4

  ;0020 0021

  lxi h, 0020

  mov a, m

  inx h

  add m

  mov d, a

Написать программу вычитания Числа2 из Числа1, результат занести в ячейку памяти, если результат отрицательный, в результат вывести значение 255.

  B = 10; C = 12

 

  mov a , b

  sub c

  jc 0010

  mov d, a

  HLT

  0010: mvi d, FF

  HLT

  mov a , b

  sub c

  jc 0010

  mov d, a

  jmp 0012

  0010: mvi d, FF

  0012: HLT

  mov a , b

  sub c

  jnc 0010

  mvi a, FF

  0010:mov d, a

  HLT

программа 8

ячейки памяти: 0020, 0021

LXI H, 0020

MOV A, M

INX H

SUB M

JC 0010

MOV D, A

JMP 0012

0010: MVI D, FF

  NOP

0012: HLT

Программа 9

ячейки памяти: 0020, 0021

LXI H, 0020

MOV A, M

INX H

SUB M

JNC 0010

MVI A, FF

0010: MOV D, A

HLT

Программа 10

ячейки памяти: 0020, 0021

результат в 0022

LXI H, 0020
MOV A, M
INX H
SUB M
JNC 0010
MVI A, FF
0010: STA 0022
HLT
LXI H, 0020
MOV A, M
INX H
SUB M
JNC 0010
MVI A, FF
0010: INX H
MOV M, A
HLT

написать программу сложения 3х чисел, находящихся в ЯП, начиная с 0020

решение:

сделаем счетчик в С (counter)

LXI H, 0020
MVI C, 02
MOV A, M
l1:INX H
ADD M
DCR C
JNZ l1 (метка, куда?)
INX H
MOV M, A
HLT
LXI H, 0020
MVI C, 03
XRA A (SUB A) ОБНУЛИТЬ АКК
l1:ADD M
INX H
DCR C
JNZ l1
INX H
MOV M, A
HLT

составить программу на выбор большего из 2х чисел

числа хранятся в ЯП, 0020 и 0021, результат в 0022

LXI H 0020

MOV C,M INX H

MOV A,M

CMP C INX H JNC 0010

MOV C,A

MOV M,A 0010:MOV M,A HLT

составить программу поиска максимума из массива 16 чисел

начало массива по адресу 0030h, количество 10h

максимум сохранить в D

LXI H, 0030h \определяем начало массива

MVI C, 10h \организуем счетчик

XRA A \обнуляем акк

M2:CMP M \сравниваем со значением в памяти

JNC M1 \если нет заема-переноса то идем на м1

MOV A,M \иначе в акк заносим из памяти

M1:INX H \получаем следующий элемент массива

DCR C \уменьшаем счетчик

JNZ M2 \если счетчик <>0, идем на м2

MOV D,A \иначе максимум заносим в D

HLT \стоп

1-й (5 элементов) по адресу 0040h, 2-й (10 элементов) по адресу 0050h,

1/составить программу вычисления суммы элементов 2х массивов

2\составить программу поиска максимума в 2 массивах

результаты сохранить по адресам 0060 и 0061.

Использовать подпрограмму (CALL RET)

Основная программа
1.формируем адрес 1 массива (HL)
2.формируем счетчик в С
3.вызвать подпрограмму суммирования
4.сохранить результат по адресу 0060
5.формируем адрес 2 массива (HL)
6. формируем счетчик в С
7.вызвать подпрограмму суммирования
8. сохранить результат по адресу 0061
LXI H, 0040H
MVI C, 05H
CALL M1
STA 0060H
LXI H, 0050H
MVI C, 0AH
CALL M1
STA 0061H
HLT
подпрограмма:
1.обнулить Акк
2.Сложить с (М)
3.сформировать адрес следующего элемента
4.уменьшить счетчик
5.проверить условие счетчик <>0, если да, то переход на 2.
6.возврат
M1:XRA A
M2:ADD M
INX H
DCR C
JNZ M2
RET
 0000 21 LXI H, d16
 0001 40 MOV B, B
 0002 00 NOP
 0003 0E MVI C, d8
 0004 05 DCR B
 0005 CD CALL adr
 0006 20 -
 0007 00 NOP
 0008 32 STA adr
 0009 60 MOV H, B
 000A 00 NOP
 000B 21 LXI H, d16
 000C 50 MOV D, B
 000D 00 NOP
 000E 0E MVI C, d8
 000F 0A LDAX B
 0010 CD CALL adr
 0011 20 -
 0012 00 NOP
 0013 32 STA adr
 0014 61 MOV H, C
 0015 00 NOP
 0016 76 HLT
 0040 01 LXI B, d16
 0041 02 STAX B
 0042 03 INX B
 0043 04 INR B
 0044 05 DCR B
 
 0050 01 LXI B, d16
 0051 01 LXI B, d16
 0052 01 LXI B, d16
 0053 01 LXI B, d16
 0054 01 LXI B, d16
 0055 01 LXI B, d16
 0056 01 LXI B, d16
 0057 01 LXI B, d16
 0058 01 LXI B, d16
 0059 01 LXI B, d16
 0020 AF XRA A
 0021 86 ADD M
 0022 23 INX H
 0023 0D DCR C
 0024 C2 JNZ adr
 0025 21 LXI H, d16
 0026 00 NOP
 0027 C9 RET
 0060 0F RRC
 0061 0A LDAX B
подпрограмма 2
XRA A
M2:CMP M
JNC M1
MOV A,M
M1:INX H
DCR C
JNZ M2

Составить программу вывода на экран слова «МИКРОПРОЦЕССОР». Цвет символов меняется от символа к символу.

1. Коды символов (в 10 формате!)

М И К Р О П Р О Ц Е С С О Р

140 136 138 144 142 143 144 142 150 133 145 145 142 144

8С 88 8А 90 8E 8F 90 8E 96 85 91 91 8E 90

Количество символов 14. 0Eh

2. Цвет символов 7Fh – белый (для начала). Шаг смены цвета 05.

3. Расположение символов начиная с ячейки 0050h

Необходимо занести в память начиная с адреса 0050 коды символов.

Код цвета 01111111 - 7Fh – занести в регистр В

Подпрограмма будет брать код цвета символа из регистра В, код символа в памяти по адресу, находящемуся в регистровой паре HL, и выводить в порт монитора. Адрес подпрограммы – определим 0030h.

Счетчик количества символов будет находиться в регистре С.

Основная программа:
1. Занести в регистровую пару HL адрес начала массива.
2. Занести в регистр В код цвета символов.
3. Организовать в регистре С счетчик – занести туда 14 (0Еh).
4. Вызвать на выполнение подпрограмму вывода на экран монитора символа.
5. Инкрементирировать регистровую пару HL.
6. Вычесть из В 05 – изменить цвет символа (перенести из В в Асс, вычесть, перенести обратно в В)
7. Декрементировать счетчик.
8. Проверить флаг Z. Если он не равен 0, то перейти к шагу 4.
LXI H, 0050h
MVI B, 7Fh
MVI C, 0Eh
P2: CALL P1 (0030h)
INX H
MOV A, B
SUI 05h
MOV B, A
DCR C
JNZ P2
HLT
0000 21 LXI H, d16
0001 50 MOV D, B
0002 00 NOP
0003 06 MVI B, d8
0004 7F MOV A, A
0005 0E MVI C, d8
0006 0D DCR C
0007 CD CALL adr
0008 30 -
0009 00 NOP
000A 23 INX H
000B 78 MOV A, B
000C D6 SUI d8
000D 05 DCR B
000E 47 MOV B, A
000F 0D DCR C
0010 C2 JNZ adr
0011 07 RLC
0012 00 NOP
0013 76 HLT
Подпрограмма.
1. Считать из регистра В код цвета символа и занести его в Асс.
2. Отправить в порт монитора.
3. Считать по адресу в памяти код символа и занести его в Асс.
4. Отправить в порт монитора.
P1: MOV A,B
OUT 00h
MOV A,M
OUT 00h
RET
0030 78 MOV A, B
0031 D3 OUT N
0032 00 NOP
0033 7E MOV A, M
0034 D3 OUT N
0035 00 NOP
0036 C9 RET

← Практическая работа №6 · Пример решения задачи по способам адресации →

Оригинал материала на GitHub

⚠️ **GitHub.com Fallback** ⚠️