|
Сложить содержимое ячейки внутренней памяти OPER1 и регистра R0, сумму поместить в ячейку внутренней памяти SUM.
1. | NAME ZAD1 |
2. | MOV A,OPER1 |
3. | ADD A,R0 |
4. | MOV SUM,A |
5. | END |
Сложить содержимое регистров R0 и R1, сумму поместить в ячейку внутренней памяти SUM.
1. | NAME ZAD2 |
2. | MOV A,R0 |
3. | ADD A,R1 |
4. | MOV SUM,A |
5. | END |
Вычесть из содержимого ячейки First внешней памяти данных содержимое ячейки внутренней памяти с адресом 0x35h, результат поместить в ячейку внешней памяти данных Second.
1. | NAME ZAD3 |
2. | MOV DPTR,#First |
3. | MOV R0,#35h |
4. | MOVX A,@DPTR |
5. | SUBB A,@R0 |
6. | MOV DPTR,#Second |
7. | MOVX @DPTR,A |
8. | END |
Перейти к метке DEST, если содержимое ячейки внутренней памяти данных с адресом OPER1 меньше содержимого ячейки внутренней памяти данных с адресом OPER2.
1. | NAME ZAD4 |
2. | MOV A,OPER1 |
3. | SUBB A,OPER2 |
4. | JC DEST |
5. | END |
Перейти к метке DEST, если содержимое ячейки внутренней памяти данных с адресом OPER1 больше содержимого ячейки внутренней памяти данных с адресом OPER2.
1. | NAME ZAD5 |
2. | MOV A,OPER1 |
3. | SUBB A,OPER2 |
4. | JNC DEST |
5. | END |
Перейти к метке DEST, если содержимое регистра R3 меньше содержимого ячейки внутренней памяти данных с адресом OPER2.
1. | NAME ZAD6 |
2. | MOV A,R3 |
3. | SUBB A,OPER2 |
4. | JC DEST |
5. | END |
Перейти к метке DEST, если A содержит положительное число.
1. | NAME ZAD7 |
2. | MOV 10h,A |
3. | SUBB A,#0 |
4. | CJNE A,10h,NEXT |
5. | LJMP DEST |
| NEXT: |
6. | END |
Перейти к метке DEST, если A содержит четное число.
1. | NAME ZAD8 |
2. | ANL A,#01h |
3. | JZ DEST |
4. | END |
Перейти к метке DEST, если регистр R5 содержит отрицательное число.
1. | NAME ZAD9 |
2. | MOV 10h,R5 |
3. | MOV A,R5 |
4. | SUBB A,#0 |
5. | CJNE A,10h,DEST |
6. | END |
Переслать 5 байт из внутренней памяти данных в другую область этого же сегмента памяти. Начальный адрес первого байта – 0x20h надо переслать в ячейки, начиная с адреса 0x40h.
1. | NAME ZAD10 |
2. | MOV R0,#20h |
3. | MOV R1,#40h |
4. | MOV R2,#5 |
5. | M1: MOV A,@R0 |
6. | MOV @R1,A |
7. | INC R0 |
8. | INC R1 |
9. | DJNZ R2,M1 |
10. | END |
Переслать все байты массива чисел во внешней памяти с начальным адресом ADDR1 и количеством элементов, содержащихся в R5 в другую область внешней памяти с начальным адресом ADDR2.
1. | NAME ZAD11 |
2. | MOV DPTR,#ADDR1 |
3. | MOV R0,DPH |
4. | MOV R1,DPL |
5. | MOV DPTR,#ADDR2 |
6. | MOV R2,DPH |
7. | MOV R3,DPL |
8. | M1: MOV DPH,R0 |
9. | MOV DPL,R1 |
10. | MOVX A,@DPTR |
11. | INC DPTR |
12. | MOV R0,DPH |
13. | MOV R1,DPL |
14. | MOV DPH,R2 |
15. | MOV DPL,R3 |
16. | MOVX @DPTR,A |
17. | INC DPTR |
18. | MOV R2,DPH |
19. | MOV R3,DPL |
20. | DJNZ R5,M1 |
21. | END |
Переслать 5 байт из внешней памяти данных во внутреннюю. Начальный адрес 1го байта – 0x0000h, переслать надо в область, начиная с адреса 0x20h.
1. | NAME ZAD12 |
2. | MOV DPTR,#0 |
3. | MOV R0,#20h |
4. | MOV R1,#5 |
5. | M1: MOVX A,@DPTR |
6. | MOV @R0,A |
7. | INC DPTR |
8. | INC R0 |
9. | DJNZ R1,M1 |
10. | END |
Переслать 10 байт из внутренней памяти данных во внешнюю. Начальный адрес 1го байта – 0x20h. Надо переслать, начиная с адреса 0x2000h.
1. | NAME ZAD13 |
2. | MOV DPTR,#2000h |
3. | MOV R0,#20h |
4. | MOV R1,#10 |
5. | M1: MOV A,@R0 |
6. | MOVX @DPTR,A |
7. | INC DPTR |
8. | INC R0 |
9. | DJNZ R1,M1 |
10. | END |
Подсчитать количество ненулевых элементов в байтовом массиве внутренней памяти данных, адрес начала которого содержится в R0, а количество элементов – в R3.
1. | NAME ZAD16 |
2. | MOV R5,#0 |
3. | M1: MOV A,@R0 |
4. | CJNE A,#0,M2 |
5. | LJMP M3 |
6. | M2: INC R5 |
7. | M3: INC R0 |
8. | DJNZ R3,M1 |
9. | END |
Переслать 10 байт из памяти команд во внешнюю память данных. Начальный адрес 1го байта – метка ARRAY1, переслать надо, начиная с адреса 0x2000h.
1. | NAME ZAD14 |
2. | MOV DPTR,#ARRAY1 |
3. | MOV R0,DPH |
4. | MOV R1,DPL |
5. | MOV DPTR,#2000h |
6. | MOV R2,DPH |
7. | MOV R3,DPL |
8. | MOV R4,#10 |
9. | M1: MOV DPH,R0 |
10. | MOV DPL,R1 |
11. | MOV A,#0 |
12. | MOVC A,@A+DPTR |
13. | INC DPTR |
14. | MOV R0,DPH |
15. | MOV R1,DPL |
16. | MOV DPH,R2 |
17. | MOV DPL,R3 |
18. | MOVX @DPTR,A |
19. | INC DPTR |
20. | MOV R2,DPH |
21. | MOV R3,DPL |
22. | DJNZ R4,M1 |
23. | END |
Переслать массив двухбайтных чисел из внешней памяти во внутреннюю. Адрес исходного массива – 0x2000h, пересылать нужно, начиная с адреса 0x20h. Количество элементов массива хранится в регистре R3.
1. | NAME ZAD15 |
2. | MOV DPTR,#2000h |
3. | MOV R0,#20h |
4. | M1: MOVX A,@DPTR |
5. | MOV @R0,A |
6. | INC DPTR |
7. | INC R0 |
8. | MOVX A,@DPTR |
9. | MOV @R0,A |
10. | INC DPTR |
11. | INC R0 |
12. | DJNZ R3,M1 |
13. | END |
Подсчитать количество элементов, равных #0FFh, в байтовом массиве внутренней памяти данных, адрес начала которого содержится в R1, а количество элементов – в R3.
1. | NAME ZAD17 |
2. | MOV R5,#0 |
3. | M1: MOV A,@R1 |
4. | CJNE A,#0FFh,M2 |
5. | INC R5 |
6. | M2: INC R0 |
7. | DJNZ R3,M1 |
8. | END |
Подсчитать количество элементов, равных #0FFFFh, в массиве двухбайтовых чисел внутренней памяти, адрес начала которого содержится в R0.
1. | NAME ZAD18 |
2. | MOV R5,#0 |
3. | MOV R3,#COUNT |
4. | M1: MOV A,@R0 |
5. | CJNE A,#0FFh,M2 |
6. | INC R0 |
7. | LJMP M3 |
8. | M2: INC R0 |
9. | LJMP M4 |
10. | M3: MOV A,@R0 |
11. | CJNE A,#0FFh,M4 |
12. | INC R5 |
13. | M4: INC R0 |
14. | DJNZ R3,M1 |
15. | END |
Подсчитать количество элементов, равных #0FFh, в массиве чисел внешней памяти, адрес начала которого содержится в паре ячеек внутренней памяти ADDR1, ADDR1+1, а количество элементов – в регистре R3.
1. | NAME ZAD19 |
2. | MOV R0,#ADDR1 |
3. | MOV A,@R0 |
4. | MOV DPH,A |
5. | INC R0 |
6. | MOV A,@R0 |
7. | MOV DPL,A |
8. | M1: MOVX A,@DPTR |
9. | CJNE A,#0FFh,M2 |
10. | INC R5 |
11. | M2: INC DPTR |
12. | DJNZ R3,M1 |
13. | END |
Загрузить элемент из таблицы во внешней памяти программ в аккумулятор. Базовый адрес таблицы содержится в ячейках внутренней памяти BASE, BASE+1, а номер выбираемого элемента – в A.
1. | NAME ZAD20 |
2. | MOV R0,#BASE |
3. | MOV R1,A |
4. | MOV A,@R0 |
5. | MOV DPH,A |
6. | INC R0 |
7. | MOV A,@R0 |
8. | MOV DPL,A |
9. | MOV A,R1 |
10. | MOVC A,@A+DPTR |
11. | END |
Загрузить элемент в таблицу во внешней памяти данных из регистра R5. Базовый адрес таблицы содержится в ячейках внутренней памяти BASE, BASE+1, а номер – в ячейке NUMB.
1. | NAME ZAD21 |
2. | MOV R0,#BASE |
3. | MOV R1,#NUMB |
4. | MOV A,@R0 |
5. | MOV DPH,A |
6. | INC R0 |
7. | MOV A,@R0 |
8. | MOV DPL,A |
9. | MOV A,@R1 |
10. | ADD A,DPL |
11. | MOV DPL,A |
12. | MOV A,DPH |
13. | ADDC A,#0 |
14. | MOV DPH,A |
15. | MOV A,R5 |
16. | MOVX @DPTR,A |
17. | END |
Сравнить поразрядно содержимое A и величины VAL и установить в 1 несовпадающие разряды, прочие – оставить без изменения.
1. | NAME ZAD22 |
2. | MOV R1,A |
3. | XRL A,VAL |
4. | MOV R2,A |
5. | MOV A,R1 |
6. | ORL A,R2 |
7. | END |
Инвертировать разряды 3, 5, 7 аккумулятора.
1. | NAME ZAD23 |
2. | MOV R2,A |
3. | CPL A |
4. | ANL A,#01010100b |
5. | MOV R3,A |
6. | MOV A,R2 |
7. | ANL A,#10101011b |
8. | ORL A,R3 |
9. | END |
Перейти к метке DEST, если разряды 4, 5, 6 порта P2 равны 510 (1012).
1. | NAME ZAD24 |
2. | MOV A,P2 |
3. | ANL A,#01110000b |
4. | CJNE A,#01010000b,M1 |
5. | LJMP DEST |
6. | M1: END |
Установить разряды порта P0 2, 3, 4 равными 610 (1102) с сохранением содержимого остальных разрядов.
1. | NAME ZAD25 |
2. | ANL P0,#11100011b |
3. | ORL P0,#00001100b |
4. | END |
Проверить все биты в порту P1. Если какой-либо бит равен 1, то обнулить соответствующий регистр, если же в бите ноль, – то регистр установить равным #0FFh.
1. | NAME ZAD26 |
2. | MOV R0,#0FFh |
3. | MOV R1,#0FFh |
4. | MOV R2,#0FFh |
5. | MOV R3,#0FFh |
6. | MOV R4,#0FFh |
7. | MOV R5,#0FFh |
8. | MOV R6,#0FFh |
9. | MOV R7,#0FFh |
10. | JNB P1.0,M1 |
11. | MOV R0,#0 |
12. | M1: JNB P1.1,M2 |
13. | MOV R1,#0 |
14. | M2: JNB P1.2,M3 |
15. | MOV R2,#0 |
16. | M3: JNB P1.3,M4 |
17. | MOV R3,#0 |
18. | M4: JNB P1.4,M5 |
19. | MOV R4,#0 |
20. | M5: JNB P1.5,M6 |
21. | MOV R5,#0 |
22. | M6: JNB P1.6,M7 |
23. | MOV R6,#0 |
24. | M7: JNB P1.7,M8 |
25. | MOV R7,#0 |
26. | M8: END |
Перейти к метке DEST, если разряд 5 порта P0 равен 0.
1. | NAME ZAD27 |
2. | JNB P0.5,DEST |
3. | END |
Увеличить содержимое регистров R4, R5 (16ти разрядное число) на 3 с проверкой возможного переполнения младшего разряда.
1. | NAME ZAD28 |
2. | MOV DPH,R4 |
3. | MOV DPL,R5 |
4. | INC DPTR |
5. | INC DPTR |
6. | INC DPTR |
7. | MOV R4,DPH |
8. | MOV R5,DPL |
9. | END |
Сдвинуть вправо 16ти разрядное число на 1 разряд.
1. | NAME ZAD29 |
2. | CLR C |
3. | MOV A,R3 |
4. | RRC A |
5. | MOV R3,A |
6. | MOV A,R4 |
7. | RRC A |
8. | MOV R4,A |
9. | END |
Заполнить область внешней памяти, начиная с ADDR1, содержимым регистра R3 в количестве, равном содержимому регистра R4.
1. | NAME ZAD30 |
2. | MOV DPTR,#ADDR1 |
3. | MOV A,R3 |
4. | M1: MOVX @DPTR,A |
5. | INC DPTR |
6. | DJNZ R4,M1 |
7. | END |
Умножить содержимое A на 4, не используя операцию умножения.
1. | NAME ZAD31 |
2. | RL A |
3. | RL A |
4. | END |
Разделить содержимое A на 2, не используя операцию деления.
1. | NAME ZAD32 |
2. | RR A |
3. | END |
Подсчитать сумму чисел в однобайтном массиве во внутренней памяти данных. Массив начинается с ячейки BEG, количество элементов указано в R5, сумма должна быть помещена в ячейки с адресами SUM и SUM+1.
1. | NAME ZAD33 |
2. | MOV R0,#BEG |
3. | MOV R1,#SUM |
4. | MOV @R1,#0 |
5. | INC R1 |
6. | MOV @R1,#0 |
7. | DEC R1 |
8. | CLR C |
9. | M1: MOV A,@R1 |
10. | ADDC A,@R0 |
11. | MOV @R1,A |
12. | INC R1 |
13. | MOV A,@R1 |
14. | ADDC A,#0 |
15. | MOV @R1,A |
16. | DEC R1 |
17. | INC R0 |
18. | DJNZ R5,M1 |
19. | END |
Найти максимальный элемент в таблице, содержащей байтовые числа. Таблица содержится в памяти программ, начиная с адреса TABL. Количество ее элементов указано в R6. Максимальный элемент разместить в R7, а адрес этого элемента – в R4, R5.
1. | NAME ZAD34 |
2. | MOV DPTR,#TABL |
3. | MOV A,#0 |
4. | MOVC A,@A+DPTR |
5. | MOV R7,A |
6. | MOV R4,DPH |
7. | MOV R5,DPL |
8. | INC DPTR |
9. | DEC R6 |
10. | M1: MOV A,#0 |
11. | MOVC A,@A+DPTR |
12. | MOV R3,A |
13. | SUBB A,R7 |
14. | JC M2 |
15. | MOV A,R3 |
16. | MOV R7,A |
17. | MOV R4,DPH |
18. | MOV R5,DPL |
19. | M2: INC DPTR |
20. | DJNZ R6,M1 |
21. | END |
Найти минимальный элемент в таблице, содержащей байтовые числа. Таблица содержится в памяти данных, начиная с адреса TABL. Количество ее элементов указано в R6. Минимальный элемент разместить в R6, а адрес этого элемента – в R2, R3.
1. | NAME ZAD35 |
2. | MOV DPTR,#TABL |
3. | MOVX A,@DPTR |
4. | MOV R7,A |
5. | MOV R2,DPH |
6. | MOV R3,DPL |
7. | INC DPTR |
8. | DEC R6 |
9. | M1: MOVX A,@DPTR |
10. | MOV R1,A |
11. | SUBB A,R7 |
12. | JNC M2 |
13. | MOV A,R1 |
14. | MOV R7,A |
15. | MOV R2,DPH |
16. | MOV R3,DPL |
17. | M2: INC DPTR |
18. | DJNZ R6,M1 |
19. | MOV A,R7 |
20. | MOV R6,A |
21. | END |
Дата добавления: 2015-11-04; просмотров: 35 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
1.Регистрация аккаунта флейм | | | В якій з форм фінансової звітності розраховують показник прибутковості акцій акціонерного товариства – форма № 2 «Звіт про фінансові результати» розділ 3 |