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

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

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

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

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

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

Пересилання N послідовних байт з однієї області пам’яті в іншу: org 100h N EQU 03h mvi c,N lxi d,SRC lxi h,DST call MOVE nop hlt MOVE: ldax d mov m,a inx d inx h dcr c jnz MOVE ret SRC db 01h,02h,03h DST db 00h,00h,00h --------------------------------------------------------------------- Пересилання послідовності байтів(до заданого) з однієї облісті пам’яті в іншу. org 100h ENDCHAR EQU 00h mvi c,ENDCHAR lxi d,SRC lxi h,DST call MOVE nop hlt MOVE: ldax d mov m,a inx d inx h cmp c jnz MOVE ret SRC db 01h,02h,03h,00h DST db 00h,00h,00h,00h ----------------------------------------------------------------Обчислення суми однобайтових елементів масиву org 100h N EQU 05h mvi c,N lxi h,ARRAY call ARRSUM ; DE=SUM(ARRAY[i]) nop hlt ARRSUM: lxi d,0000h L00: mov a,m add e mov e,a mov a,d aci 00h mov d,a inx h dcr c jnz L00 ret ARRAY db 0F0h,0F0h,07h,08h,09h --------------------------------------------------------------------- Обчислення контрольної суми області пам’яті шляхом додавання за модулем 216 старших і молодших тетрад кожного байту окремо; результат програми – два байти org 100h N EQU 05h mvi c,N lxi h,ARRAY call ARRCS ; DE=CHECKSUM(ARRAY[i]) nop hlt ARRCS: lxi d,0000h L00: mov a,m ani 0Fh add e mov e,a mov a,d aci 00h mov d,a mov a,m ani 0F0h rrc rrc rrc rrc add e mov e,a mov a,d aci 00h mov d,a inx h dcr c jnz L00 ret ARRAY db 0F0h,0F0h,07h,08h,09h --------------------------------------------------------------------- Додавання двох багатобайтових чисел. org 100h N EQU 04h mvi c,N lxi d,SRC lxi h,DST call ADDN ; DST = DST + SRC nop hlt ADDN: ora a L00: ldax d adc m mov m,a inx d inx h dcr c jnz L00 ret DST db 78h,34h,56h,12h SRC db 78h,34h,56h,12h --------------------------------------------------------------------- Обчислення суми N двобайтових елементів масиву. org 100h N EQU 03h mvi a,N lxi b,ARRAY call MADD2 hlt MADD2: lxi h,0000h L00: push psw ldax b mov e,a inx b ldax b mov d,a inx b dad d pop psw dcr a jnz L00 ret ARRAY: dw 1002h dw 5005h dw 3009h --------------------------------------------------------------------- Порівняння двох чисел і запису в задану комірку пам’яті більшого. org 100h N1 EQU 10h N2 EQU 20h lxi h,DST mvi b,N1 mvi c,N2 call CMPSAVE nop hlt CMPSAVE: mov a,b cmp c jnc L00 mov m,c ret L00: mov m,b ret DST db 00h --------------------------------------------------------------------- Перемноження двох однобайтових чисел без знака org 100h mvi c,0FFh mvi b,0AAh call MUL nop hlt MUL: mvi d,00h mov e,b lxi h,0000h mvi a,08h L00: push psw mov a,c rrc mov c,a jnc L01 dad d L01: xra a mov a,d ral mov d,a xra a mov a,e ral mov e,a mvi a,00h adc d mov d,a pop psw dcr a jnz L00 ret --------------------------------------------------------------------- Запис нулів в облать пам’яті з адреси А1 до адреси А2 включно. org 100h A1 EQU 0200h A2 EQU 0210h lxi h,A1 lxi d,A2 call ZERO ; A2 MUST BE >= A1 nop hlt ZERO: mov a,d cmp h jnz L00 mov a,e cmp l jz L01 L00: mvi m,00h inx h jmp ZERO L01: mvi m,00h ret --------------------------------------------------------------------- Знаходження максимального числа в масиві даних, представлених як ціле число без знаку. org 100h N EQU 05h mvi c,N-1 lxi h,ARRAY call ARRMAX ; A=MAX(ARRAY[i]) nop hlt ARRMAX: mov a,m L00: inx h cmp m jnc L01 mov a,m L01: dcr c jnz L00 ret ARRAY db 060h,070h,0F7h,98h,0FFh --------------------------------------------------------------------- Віднімання двох багатобайтових десяткових двійково – кодованих чисел без знака. org 100h N EQU 02h mvi c,N lxi h,SRC + N - 1 lxi d,DST + N - 1 call SUBBCD ; DST = DST - SRC nop hlt SUBBCD: stc L00: mvi a,99h aci 00h sub m xchg add m daa mov m,a xchg dcx h dcx d dcr c jnz L00 ret DST: db 56h db 73h SRC: db 24h db 89h Ділення 16-ти розрядного числа без знака на 8-ми розрядне число без знака. org 100h lxi d,0319h mvi b,24h call DIV ; C = DE / B (E) {DE = B*C + E} nop hlt DIV: mov a,d cmp b jnc ERROR mvi c,00h L00: mov a,d cpi 00h jnz L01 mov a,e cmp b jnc L01 ret L01: mov a,e sub b mov e,a mov a,d sbi 00h mov d,a inr c jmp L00 ERROR: ret --------------------------------------------------------------------- Визначення кількості одиниць в заданому байті. org 100h N EQU 0AAh mvi a,N call ONES ; B = "1" in A nop hlt ONES: lxi b,0008h L00: rrc jnc L01 inr b L01: dcr c jnz L00 ret --------------------------------------------------------------------- Визначення кількості одиниць в двох байтах. org 100h N EQU 0AAFFh lxi d,N call ONES2 ; B = "1" in DE nop hlt ONES2: mvi b,00h mov a,d call ONES mov a,e call ONES ret ONES: mvi c,08h L00: rrc jnc L01 inr b L01: dcr c jnz L00 ret --------------------------------------------------------------------- Визначення кількості нулів в заданому байті. org 100h N EQU 0AAh mvi a,N call ZEROS ; B = "0" in A nop hlt ZEROS: lxi b,0008h L00: rrc jc L01 inr b L01: dcr c jnz L00 ret --------------------------------------------------------------------- Визначення кількості нулів в двох байтах. org 100h N EQU 0AA00h lxi d,N call ZEROS2 ; B = "0" in DE nop hlt ZEROS2: mvi b,00h mov a,d call ZEROS mov a,e call ZEROS ret ZEROS: mvi c,08h L00: rrc jc L01 inr b L01: dcr c jnz L00 ret --------------------------------------------------------------------- Знаходхення мінімального числа в масиві даних, представлених, як ціле число org 100h N EQU 05h mvi c,N-1 lxi h,ARRAY call ARRMIN ; A=MIN(ARRAY[i]) nop hlt ARRMIN: mov a,m L00: inx h cmp m jc L01 mov a,m L01: dcr c jnz L00 ret ARRAY db 060h,070h,050h,98h,040h --------------------------------------------------------------------- Додавання двох 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 --------------------------------------------------------------------- Додавання двох 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 --------------------------------------------------------------------- Множення двох 2-х розрядних десяткових двійково – кодованих чисел. org 100h mvi c,16h mvi b,06h call MULBCD nop hlt MULBCD: mvi d,00h mov a,b cpi 00h jnz L00 ret L00: mov a,d add c daa mov d,a dcr b jnz L00 ret --------------------------------------------------------------------- Віднімання двох 16-ти розрядних двійкових чисел. org 100h SRC1 EQU 5678h SRC2 EQU 1290h lxi d,SRC1 lxi b,SRC2 call SUB16 ; HL = SRC1-SRC2 nop hlt SUB16: mov a,e sub c mov l,a mov a,d sbb b mov h,a ret --------------------------------------------------------------------- Впорядкування масиву однобайтових чисел за зростанням. org 100h mvi b,05h lxi d,array lxi h,array call SORT hlt SORT: dcr b inx d L00: push h push d mvi c,00h L01: ldax d cmp m jnc L02 push psw mov a,m stax d pop psw mov m,a L02: inx h inx d inr c mov a,c cmp b jnz L01 dcr b pop d pop h jz L03 jmp L00 L03: ret ARRAY: db 05h db 04h db 03h db 02h db 01h --------------------------------------------------------------------- Формування квадратної матриці 5х5. Значення діагональних елементів дорівнює номеру рядка, в якому знаходиться елемент, позадіагональних елементів – нулю) org 100h lxi h,array call MATR nop nop nop hlt MATR: mvi b,01h L00: mvi c,01h L01: mov a,b cmp c jnz L02 mov m,c jmp L03 L02: mvi m,00h L03: inx h inr c mvi a,06h cmp c jnz L01 inr b cmp b jnz L00 ret ARRAY: db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h --------------------------------------------------------------------- Впорядкування масиву однобайтових чисел за зростанням. org 100h mvi b,05h lxi d,array lxi h,array call SORT hlt SORT: dcr b inx d L00: push h push d mvi c,00h L01: ldax d cmp m jc L02 push psw mov a,m stax d pop psw mov m,a L02: inx h inx d inr c mov a,c cmp b jnz L01 dcr b pop d pop h jz L03 jmp L00 L03: ret ARRAY: db 01h db 02h db 03h db 04h db 05h
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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