- •Міністерство транспорту та зв’язку україни львівський коледж державного університету інформаційно-комунікаційних технологій
- •Інструкція
- •До практичної роботи № 10
- •Складання програми з реалізації арифметичних
- •Операцій у мікроконтролерах
- •2.Література:
- •3.Завдання:
- •Опис програми:
- •4. Методичні вказівки.
- •5. Контрольні питання:
- •6.2. Завдання.
5. Контрольні питання:
5.1.Яку розрядність має ОМК 1816ВЕ51?
5.2.Яку розрядність мають комірки резидентної пам'яті даних (РПД) ОМК 1816ВЕ51?
5.3. Як можна розмістити в РПД ОМК 1816ВЕ51двобайтне число?
5.4. Як можна, використовуючи ОМК 1816ВЕ51, виконати додавання двобайтних чисел?
5.5. Яка різниця між командами MOV A, 04H та MOV A, #04H? Який формат має кожна з команд?
5.6. Яка різниця між командами ADD A, #4DH та ADDC A, #4DH ? Який формат має кожна з команд?
5.7. Чим відрізняється директива ассемблера від команди ОМК?
6. ЗМІСТ ЗВІТУ:
6.1. Мета роботи.
6.2. Завдання.
6.3. Таблиця 1 заповнена згідно індивідуального завдання.
6.4. Письмові відповіді на контрольні питання.
ДОДАТОК 1.
Команда ADD A,< байт-джерело >
Ця команда складає вміст акумулятора А з вмістом байта-джерела, залишаючи результат в акумуляторі. З появою переносів з розрядів 7 й 3, встановлюються прапори переносу (С) і додаткового переносу (АС) відповідно, у противному випадку ці прапори скидаються. При додаванні цілих чисел без знака прапор переносу "С" указує на появу переповнення. Прапор переповнення (OV) встановлюється, якщо є перенос із біта 6 і немає переносу з біта 7, або є перенос із біта 7 і немає - з біта б, в інакшому випадку прапор OV скидається. При додаванні цілих чисел зі знаком прапор OV вказує на негативну величину, отриману при підсумовуванні двох позитивних операндів або на позитивну суму для двох негативних операндів.
Для команди додавання дозволені наступні режими адресації байта-джерела:
1) регістровий;
2) непрямий регістровий;
3) прямий;
4) безпосередній.
1) Асемблер: ADD A,Rn ; де n=0-7
Алгоритм: (A):=(A)+(Rn), де n=0-7
Приклад: (А)=СЗН, (R6)=0AAH
ADD A,R6 ; (A)=6DH, (R6)=AAH
(AC)=0, (0=1, (OV)=1
2) Асемблер: ADD A,@Rі ; де й=0,l
Алгоритм: (A) :=(A)+((Ri), де 1=0,1
Приклад: (А)=95Н, (Н1)=31Н, (ОЗП [31;)=4СН
ADD A,@Rl ;(A)=E1H, (ОЗП [31])=4СН,
3) Асемблер: ADD A,<dіrect>
Алгоритм: (A):=(A)+(dіrect)
Приклад: (А)=77Н, (ОЗП [90])"FFH
ADD A,90H ;(А)=76Н, (ОЗП [90])=FFH,
4) Асемблер: ADD A,<#data>
Алгоритм: (A):=(A)+#data
Приклад: (А)=09Н
ADD A,#0D3H ;(A)=DCH,
Команда ADDC А,<байт-джерело>
Ця команда ("додавання з переносом") одночасно складає вміст байта-джерела, прапор переносу й вміст акумулятора А, залишаючи результат в акумуляторі. При цьому прапори переносу й додаткового переносу встановлюються, якщо є перенос із біта 7 або біта 3, і скидаються в інакшому випадку. При додаванні цілих чисел без знака прапор переносу вказує на переповнення.
1) Асемблер: ADDC A,Rn ; де n=0-7
Алгоритм: (A):=(A)+(0+(Rn)
Приклад: (А)=В2Н, (R3)=99,
(С)=1
ADDC A,R3 ;(A)=4CH, (R3)=99,
(0=1, (АС)=0, (OV)=1
2) Асемблер: ADDC A,@Rі ; де й=0,1
Алгоритм: (A):=(A)+(C)+((Rі))
(С):=Х, (АС):=Х, (OV):=X, де Х=(0 або 1)
Приклад: (А)=D5H, (R0)=3АН,
(ОЗУ[3А))=1АН, (С)=1
ADDC A,@R0 ;(A)=F0H, (ОЗП[ЗА]=1АН),
(С)=0, (АС)=1, (ОV)=0
3) Асемблер: ADDC A,<dіrect>
Алгоритм: (A):=(A)+(C)+(dіrect)
(С):=Х, (АС):=Х, (OV):=X, де Х=(0 або 1)
Приклад: (А)=11Н, (03П[80])=DFH, (C):=1
ADDC A,80H ;(A)=F1H, (C)=0, (AC)=1, (OV)=0)
4) Асемблер: ADDC A,#data
Алгоритм: (A) :=(A)+(C)+(dіrect)
(С):=Х, (АС):=Х, (OV):=X, де Х=(0 або 1)
Приклад: (А)=55Н, (C)=0
ADDC A,#55H ;(А)=ААН, (C)=0, (АС)=0, (OV)=1
Команда MOV <байта-призначення>,<байта-джерела>
Команда пересилає байт, зазначений в другому операнді, в осередок, зазначений у першому операнді. Уміст байта джерела не змінюється. Ця команда на прапорці й інші регістри не впливає. Команда "MOV" допускає 15 комбінацій адресації джерела й байта-призначення.
1) Асемблер: MOV A,Rn ; де n=0-7
Алгоритм: (A):=(Rn)
Приклад: (A)=FAH, (R4)=93H
MOV A,R4 ;(A)=93H, (R4)=93H
2) Асемблер: MOV A,<dіrect>
Алгоритм: (A):=(dіrect)
Приклад: (А)=93Н, (ОЗП[40])=10Н, (R0)=40H
MOV A,40H ;(А)=10Н, (ОЗП[40])=10Н, (R0)=40H
3) Асемблер: MOV A,@Rі ; де й=0,1
Алгоритм: (A):=((Rі))
Приклад: (А)=10Н, (R0)=41H, (ОЗП[41])=0САН
MOV A,@R0 ;(A)=CAH, (R0)=41H, (ОЗП[41])=0САН
4) Асемблер: MOV A,#data
Алгоритм: (A):=<#data8>
Приклад: (А)=З9Н (11001001В)
MOV A,#37H ;(A)=37H (00110111B)
5) Асемблер: MOV Rn,A ; де n=0-7
Алгоритм: (Rn):=(A)
Приклад: (А)=38Н, (R0)=42H
MOV R0,A ;(A)=38H, (R0)=38H
6) Асемблер: MOV Rn,<dіrect> ; де n=0-7
Алгоритм: (Rn):=(dіrect)
Приклад: (R0)=39H, (P2)=0F2H
MOV R0,P2 ;(R0)=F2H
7) Асемблер: MOV Rn,#data ; де n=0-7
Алгоритм: (Rn):=<#data8>
Приклад: (R0)=0F5H
MOV R0,#49H ;(R0)=49H
8) Асемблер: MOV <dіrect>,A
Алгоритм: (dіrect):=(A)
Приклад: (P0)=FFH, (А)=4ВН
MOV P0,A ;(Р0)=4ВН, (А)=4ВН
9) Асемблер: MOV <dіrect>,Rn ; де n=0-7
Алгоритм: (dіrect):=(Rn)
Приклад: (PSW)=C2H, (R7)=57H
MOV PSW.R7 ;(PSW)=57H, (R7)=57H
10) Асемблер: MOV <dіrect>,<dіrect>
Алгоритм: (dіrect):=(dіrect)
Приклад: (ОЗП[45])=ЗЗН, (ОЗП148])=0DEH
MOV 48H,45H ;(ОЗП[45])=ЗЗН, (ОЗП[48])=ЗЗН
11) Асемблер: MOV <dіrect>,@Rі ; де і=0,1
Алгоритм: (dіrect):=((Rі))
Приклад: (R1)=49H, (ОЗП[49])=0ЕЗН
MOV 51H,@R1 ;(ОЗУ[51])=0ЕЗН, (ОЗП[49])=0ЕЗН
12) Асемблер: MOV <dіrect>,#data
Алгоритм: (dіrect):=<#data8>
Приклад: (ОЗП[5Р])=9ВН
MOV 5FH,#07H ;(ОЗП(5Р])=07Н
13) Асемблер: MOV @Rі,A ; де і=0,1
Алгоритм: ((Rі)):=(A)
Приклад: (R1)=48H, (ОЗП[48])=75Н, (A)=0BDH
MOV @R1,A ;(ОЗП(48])=0ВDН
14) Асемблер: MOV @Rі,<dlrect> ; де і=0,1
Алгоритм: ((Rі)):=(dіrect)
Приклад: (R0)=51H, (ОЗП[51])=0ЕЗН, (Р0)=0АС
MOV @R0,P0 ;(ОЗП[511)=0АСН
15) Асемблер: MOV @Rі,#data ; де і=0,1
Алгоритм: ((Rі)):=<#data8>
Приклад: (ОЗП[7Е])=67Н, (R1)=7EH
MOV @R1, #0A9H ;(ОЗП[7E])=0A9H,(Rl)=7EH
Приклади програм, написані для емулятора МК51( для мене):
Org 00h
Mov acc,#10h ; додавання двобайтних чисел з використанням знаку
; прапорця переносу
add a,#fh
MOV R0,A
Mov acc,#20h
addc A,#5h
MOV R1,A
nop
End
Org 00h
Mov acc,#10000001b ; додавання двобайтних двійкових чисел з використанням
; знаку прапорця переносу
add a,#10000000b
MOV R0,A
Mov acc,#10000110b
addc A,#00001000b
MOV R1,A
nop
End
Org 00h
mov 00h,#0Ah ; додавання двобайтних чисел з використанням
; знаку прапорця переносу та безпосередньої та прямої
;адресації
Mov acc,00h
mov 01h,#0Bh
Mov R7,00h
mov A,r7
nop
End