DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

пересилання N послідовних байтів з однієї області пам'яті в іншу

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Задача
Предмет:
Цифрова техніка і мікропроцесори

Частина тексту файла (без зображень, графіків і формул):

1) пересилання N послідовних байтів з однієї області пам'яті в іншу, ORG 100H SADR EQU 1000H ;Початкова адреса 1-ї області пам’яті DADR EQU 2000H ;Початкова адреса 2-ї області пам’яті N EQU 10 ;Кількість байтів, що потрібно передати LXI h,SADR ;Завантажуємо адресу 1-ї області пам’яті LXI d,DADR ;Завантажуємо адресу 2-ї області пам’яті MVI b,N ;Завантажуємо в регістр В кількість елементів, ; ;щопотрібно передати ;Вхiднi данi передаємочерез регiстри call peres ;Виклик підпрограми пересилання N ;послідовних байтів з однієї області пам'яті в ;іншу HLT l1: MOV a,m ;Перенесення числа з 1-ї області пам’яті в 2-у STAX d ;Запис вмісту акумулятора в 1-у область пам’яті INX h ;Інкрементування регістру H INX d ; Інкрементування регістру D DCR b ;Зменшуємо число елементів, що потрібно перенести JNZ l1 ;Якщо число елементів нерінре “0” топереходимо на мітку ;L!, інакше — вихід з підпрограми ret 2) пересилання послідовності байтів (до заданого) з однієї області в іншу, ORG 100H SADR EQU 1000H ;Початкова адреса 1-ї області пам’яті DADR EQU 2000H ;Початкова адреса 1-ї області пам’яті N EQU 10 ;Кількість байтів, що потрібно передати LXI H, SADR ;Завантажуємо адресу 1-ї області пам’яті LXI D, DADR ;Завантажуємо адресу 2-ї області пам’яті MVI B, N ;Завантажуємо в регістр В кількість елементів, ;Вхiднi данi передаємочерез регiстри CALL PERED ;Виклик підпрограми пересилання послідовності ;байтів (до заданого) з однієї області пам'яті в іншу HLT ;підпрограма пересилання послідовності байтів (до заданого) з однієї області пам'яті в іншу PERED MOV A, M ;Перенесення числа з 1-ї області пам’яті в 2-у CMPI 07H : до числа 7H STAX D ;Запис вмісту акумулятора в 1-у область пам’яті INX h ;Інкрементування регістру H INX d ; Інкрементування регістру D JNZ PERED ;Якщо число елементів нерінре “0” топереходимо на ;мітку PERED, інакше — вихід з підпрограми RET 3) обчислення суми однобайтових елементів масиву, ORG 100H SADR EQU 1000H :Початкова адреса масиву N EQU 10 :Кількість елементів масиву lxi h, SADR ;Завантажуємо адресу масиву mvi b, N ;Завантажуємо кількість елементів масиву ;Вхiднi данi передаємо через регiстри call SUMM ;Виклик підпрограми обчислення суми одиобайтових ;елементів масиву hlt ; підпрограма обчислення суми одиобайтових елементів масиву SUMM: mvi a, 0 ;заносимо в аккумулятор “0” l1: mov C, M ;Занесення в регістр C елемент масиву add C ;Сумуємо його з акумулятором inx h ;Інкрементування регістру H dcr b ;Зменшуємо число елементів jnz l1 ;Якщо число елементів не рівне “0” топереходимо на мітку ;L!, інакше — вихід з підпрограми RET 4) Обчислення контрольної суми області пам'яті шляхом додавання за модулем 2 старших і молодших тетрад кожного байту окремо; результат роботи програми — два байти; ORG 100H ADR EQU 1000H N EQU 10 lxi h, ADR mvi e, N mvi b, 0fh mvi c, 0fh ;Вхiднi данi передаємо через регiстри CALL SUMM HLT SUMM: NOP l2: mov a, m mov b, a xri 0fh xra c mov c, a mov a, b xri 0f0h mov d, 4 l1: rrc dcr d jnz l1 xra b mov b,a inx h dcr e jnz l2 RET 5) додавання двох багатобайтовнх чисел; ORG 100H ADR1 EQU 1000H ADR2 EQU 2000H N EQU 10 lxi H, ADR1 lxi D, ADR2 mvi B, N ;Вхiднi данi передаємочерез регiстри CALL DODAV HLT DODAV: STC CMC PUSH PSW L1: POP PSW LDAX D ADC M PUSH PSW STAX D INX H INX D DCR B JNZ L1 RET 6) обчислення суми N двобайтових елементів масиву, ORG 100H ADR1 EQU 1000H ADR2 EQU 2000H N EQU 10 lxi H, ADR1 lxi D, ADR2 mvi B, N ;Вхiднi данi передаємочерез регiстри CALL SUM hlt SUM: NOP L1: LDAX D ADD M STAX D PUSH PSW INX H INX D POP PSW LDAX D ADC M STAX D PUSH PSW INX D POP PSW LDAX D ADCI 0 STAX D DCX D DCX D INX H DCR B JNZ L1 RET 7) порівняння двох чисел і запису в задану комірку пам'яті більшого; ORG 100H ADR1 EQU 1000H N1 EQU 100 N2 EQU 200 MVI A, N1 MVI B, N2 LXI H, ADR1 ;Вхiднi данi передаємочерез регiстри CALL PEREN HLT PEREN: CMP B JP L1 MOV A, B L1: MOV M, A RET 8) перемноження двох однобайтових чисел без знака; ORG 100H N1 EQU 5 N2 EQU 7 MVI A, N1 MVI B, N2 LXI H, 0H L1: DAD B DCR A JNZ L1 HLT 9) запис нулів в область пам'яті з адреси А1 до адреси А2 включно; ORG 100H ADDR1 EQU 1000H ADDR2 EQU 1020H LXI H, ADDR1 LXI D, ADDR2 L3: MVI M, 0 MOV A, H CMP D JNZ L1 MOV A, L CMP E JZ L2 L1: INX H JMP L3 L2: HLT 10) знаходження максимального числа в масиві даних, представлених як ціле число без знака; ORG 100H ADR1 EQU 1000H N EQU 10 LXI H, ADR1 MVI B, N MOV A, M INX H DCR B L1: MOV D, M CMP D JP L2 MOV A, D L2: INX H DCR B JNZ L1 HLT ORG 1000H DB 1, 2, 3, 4, 12, 6, 7, 8, 0, 10, 31 11) віднімання двох багатобайтових десяткових двійково-кодоваиих чисел без знака; ORG 100H N1 EQU 17 N2 EQU 5 LXI H, 1000H MVI C, N1 MVI E, 1111B MVI A, N2 CMA INR A ADD C HLT 12) ділення 16-розрядного числа без знака на 8-розрядне число без знака; ORG 100H MVI B, 5 MVI A, 45 MVI C, 0 MOV D, A L1: SUB B JM L2 INR C JMP L1 L2: HLT 13) визначення кількості одиниць в заданому байті; ORG 100H MVI A, 11001100B MVI B, 0 MVI C, 8 M2: RRC JNC M1 INR B M1: DCR C JNZ M2 HLT 14) визначення кількості одиниць і двох байтах; ORG 100H BYTES EQU 0010011001001001B LXI H, BYTES MVI A, H CALL NUM MOV D, B MOV A, L CALL NUM MOV A, B ADD B HLT NUM: MVI B, 0 MVI C, 8 M2: RRC JNC M1 INR B M1: DCR C JNZ M2 RET 15) визначення кількості нулів в байті; ORG 100H MVI A, 10001000B MVI B, 0 MVI C, 8 M2: RRC JC M1 INR B M1: DCR C JNZ M2 HLT 16) визначення кількості нулів у двох байтах; ORG 100H BYTES EQU 0010011001001001B LXI H, BYTES MVI A, H CALL NUM MOV D, B MOV A, L CALL NUM MOV A, B ADD B HLT NUM: MVI B, 0 MVI C, 8 M2: RRC JC M1 INR B M1: DCR C JNZ M2 RET 17) знаходження мінімального числа в масиві даних, представлених як ціле без знака; ORG 100H ADR1 EQU 1000H N EQU 10 LXI H, ADR1 MVI B, N MOV A, M INX H DCR B L1: MOV D, M CMP D JM L2 MOV A, D L2: INX H DCR B JNZ L1 HLT ORG 1000H DB 1, 2, 3, 4, 12, 6, 7, 8, 0, 10, 31 18) дадавання двох 8-розрядних десяткових двійково-кодоваиих чисел; org 100h N EQU 04h mvi c,N lxi d,SRC + N - 1 lxi h,DST + N -1 call ADDBCD ; DST = DST + SRC nop hlt ADDBCD: ora a L00: ldax d adc m daa mov m,a dcx d dcx h dcr c jnz L00 ret DST: db 12h db 34h db 56h db 78h SRC: db 12h db 34h db 56h db 78h 19) додавання двох 4-розрядних десяткових двійково-кодованих чисел; org 100h N EQU 02h mvi c,N lxi d,SRC + N - 1 lxi h,DST + N -1 call ADDBCD ; DST = DST + SRC nop hlt ADDBCD: ora a L00: ldax d adc m daa mov m,a dcx d dcx h dcr c jnz L00 ret DST: db 12h db 78h SRC: db 12h db 56h 20) множення двох 2-розрядних двійково-кодоваиих десяткових чисел; ORG 100H VAL1 EQU 10 VAL2 EQU 4 LEN EQU 1 ;N=1 LXI H, ADR1 MVI D, LEN LXI B, ADR2 RNC L1: LDAX B ADC M MOV M, A PUSH PSW INX H INX B DCR D POP PSW JNZ L1 HLT 21) віднімання двох І6-розрядних двійкових чисел; ORG 100H VAL1 EQU 100 VAL2 EQU 30 LXI H, VAL1 LXI D, VAL2 MOV A, L ;Заносимо в аккумулятор мол. байт зменшуваного SUB E ;Вінімаємо від нього мол. байт від’ємника MOV L, A ;Запам’ятовуємо мол. байт результату в регістрі L MOV A, H ;Заносимо в аккумулятор старший байт зменшуваного для ;віднімання SBB D ;Віднімаємо сиарший байт від’ємника з врахуванням переносу MOV H, A ;Запам’ятовуємо старший байт результату в регістрі H HLT 22) впорядкування масиву однобайтових чисел за зростанням; ORG 100H ADDR1 EQU 1000H LEN EQU 10 ; LEN - довжина масиву LXI H, ADDR1 MVI C, LEN MOV E, C L1: PUSH H MVI B, 0 L2: DCR C JZ L3 MOV A, M INX H CMP M JC L4 MOV D, M MOV M, A DCX H MOV M, D INX H MVI B, 1 L4: JMP L2 L3: POP H DCR B JNZ L5 MOV C, E JMP L1 L5: HLT 23) формування квадратної матриці 5Х5 (значення діагональних елементів дорівнює номеру рядка, в якому знаходиться елемент, позадіагональних елементів - нулю); ORG 100H A1 EQU 1000H N EQU 5 LXI H, A1 MVI C, 0 L1: SUB A L2: CMP C JNZ L3 INR A MOV M, A JMP L4 L3: INR A MVI M, 0 L4: INX H CPI N JNZ L2 INR C MOV A, C CPI N JNZ L1 HLT 24) впорядкування масиву чисел за спаданням. ORG 100H ;Основна програма ADDR1 EQU 1000H LEN EQU 10 ;LEN - довжина масиву ;Вхiднi данi передаємочерез регiстри LXI H, ADDR1 ;У регiстровiй парi [HL] - адреса початку масиву MVI C, LEN ;У регiстрi [C] — ;кiлькiсть елементiв масиву CALL SORT HLT SORT: MOV E, C L1: PUSH H MVI B, 0 L2: DCR C JZ L3 MOV A, M INX H CMP M JNC L4 MOV D, M MOV M, A DCX H MOV M, D INX H MVI B, 1 L4: JMP L2 L3: POP H DCR B JNZ L5 MOV C, E JMP L1 L5: RET
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!