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

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

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

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

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

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

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
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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