САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ, ТЕХНОЛОГИИ И УПРАВЛЕНИЯ
по
Микропроцессорным устройствам систем управления
«Вычисление арифметического выражения»
Выполнили: ст гр. УИТ-52
Сысолятин А. С.
Быков Б. Н.
Проверил: преподаватель
Коптенко в.и.
Балаково 2000
Цель работы: ознакомление с назначением и принципом работы учебного микропроцессорного комплекта (умк); исследование выполнения отдельных команд программ; использование различных методов адресации в программах; запись простых программ.
Задание.
Вычислить с помощью микроэвм выражение:
Решение.
Экспоненту можно представить в виде ряда
Ехр(х)=
А натуральный логарифм:
Ln(х)=
На основе полученных преобразований составим программу в виде таблицы.
адрес |
Машинный код |
метка |
Мнемокод |
комментарий |
||||||
Основная часть программы Bo50 - промежуточные вычисления следующее слагаемое разложения Bo60 - результат |
||||||||||
8000 |
2A 0300 EE |
LHLD 0003 XRI |
ЗАГРУЗКА ЧИСЛА 3 |
|||||||
8004 |
D2 |
DCR L |
МИНУС 1 |
|||||||
8005 |
010208 |
LXI B,0802 |
ВЫЧИСЛЯТЬ ДЛЯ ЗАДАННОЙ СТЕПЕНИ ТОЧНОСТИ 8 РАЗ |
|||||||
8008 800A 800D 8010 |
2240B0 3A42B0 2250B0 3A52B0 |
SHLD B040 LDA B042 SHLD B050 LDA B052 |
ПРИРАЩЕНИЕ СЛАГАЕМОГО |
|||||||
8013 8016 |
2260B0 3A62B0 |
SHLD В060 LDA B062 |
РЕЗУЛЬТАТ |
|||||||
8019 801C |
2200B0 3A02B0 |
SHLD В000 LDA B002 |
||||||||
801F 8022 |
2203B0 3A05B0 |
SHLD В003 LDA B005 |
||||||||
8025 8026 |
C5 CD 82 81 |
CIKL |
PUSH B CALL MULT |
УМНОЖЕНИЕ |
||||||
8029 803C |
2006B0 3A09B0 |
LHLD B006 LDA B009 |
||||||||
803F 8042 |
2210B0 3210B0 |
SHLD B010 STA B010 |
ДЕЛИМ НА ФАКТОРИАЛ |
|||||||
8045 8046 |
7A CD 4C 82 |
MOV A,D CALL FACTOR |
||||||||
8048 8048 804B 804C 804D 8050 |
AF 32 15 B0 C5 E5 22 13 B0 CD 00 82 |
XRA A STA B015 PUSH B POP H SHLD B013 CALL DIVIS |
СТЕПЕТЬ ФАКТОРИАЛА |
|||||||
8052 8055 8058 805B |
2A 16 0B 22 50 0B 3A 19 0B 32 52 B0 |
LHLD B016 SHLD B050 LDA B019 STA B052 |
ПЕРЕСЫЛКА РЕЗУЛЬТАТА В ПРОМЕЖУТОЧНЫЙ РЕГИСТОР |
|||||||
805E |
C1 |
POP B |
||||||||
805F |
AF |
XRA A |
||||||||
8060 |
BA |
CMP D |
||||||||
8061 |
5F |
MOV E, A |
||||||||
8062 |
EC 67 80 |
JPE L11 |
ПЕРЕХОД ЕСЛИ НЕЧЕТНО L11: |
|||||||
8065 |
3C |
INR A |
||||||||
8067 |
5F |
L11: |
MOV E, A |
|||||||
8068 806A 806D 8070 8073 8076 8079 808C 808F 8092 8095 8098 80A1 80A4 80A7 80AA 80AD 80B0 80B3 80B6 80B9 |
2A 50 B0 22 30 B0 3A 52B0 32 32 B0 2a 60 B0 22 60 B0 3A 62 B0 32 25 B0 CD 60 82 2A 36 B0 22 60 B0 3A 39 B0 32 63 B0 2A 50 B0 22 00B0 3A 52 B0 32 02 B0 2A 40 B0 22 03 B0 3A 42 B0 32 05 B0 |
LHLD B050 SHLD B030 LDA B052 STA B032 LHLD B060 SHLD B060 LDA B062 STA B035 CALL ADDIT LHLD B036 SHLD B060 LDA B039 STA B063 LHLD B050 SHLD B000 LDA B052 STA B002 LHLD B040 SHLD B003 LDA B042 STA B005 |
ПОДГОТОВКА СЛЕДУЮЩЕГО ШАГА ЦИКЛА |
|||||||
80 BC 80BD 80BE |
31 0D C2 25 80 |
INR D DCR C JNZ CIKL |
||||||||
80C2 80 C3 80 C6 80 C7 80 C8 80 C9 80 CA 80 CD 80D0 80D3 80D6 80D9 |
EE 32 12 B0 6F 3E 53 0F 67 22 10 B0 2A 60 B0 22 13 B0 3A 62 B0 32 15 B0 CD00 82 |
XRI STA B012 Mov l, a MVI a, 53 Rrc Mov h, a SHLD BO10 LHLD B060 SHLD B013 LDA B062 STA B015 CALL DIV |
ДЕЛИМ 53 НА LN(х)*2 |
|||||||
80DB 80DE 80E1 80E4 |
2A 16 B0 22 40 B0 3A 19 B0 32 42 B0 |
LHLD B016 SHLD B040 LDA B019 STA B042 |
РЕЗУЛЬТАТ ДРОБИ |
|||||||
80E7 80EA 80ED 80F0 |
2A 40 B0 3A 42 B0 2A 50 B0 32 52 B0 |
LHLDB040 LDA B042 SHLD B050 STA B052 |
ПРИРАЩЕНИЕ СЛАГАЕМОГО |
|||||||
80F3 80F6 |
2A 60 B0 3A 62 B0 |
SHLD В060 LDA B062 |
РЕЗУЛЬТАТ |
|||||||
80F9 80FC |
2A 00 B0 3A 02 B0 |
SHLD В000 LDA B002 |
||||||||
80FF 8102 |
2A 03 B0 3A 05 B0 |
SHLD В003 LDA B005 |
||||||||
8105 8106 |
D5 CD 82 81 |
M11 |
PUSH D CALL MULT |
|||||||
8109 810C |
2A 06 B0 3A 09 B0 |
LHLD BOO6 LDA B009 |
||||||||
810E 8111 |
2A 10 B0 3A 01 B0 |
SHLD B010 STA B010 |
ДЕЛИМ НА ФАКТОРИАЛ |
|||||||
8114 8115 |
7A CD 4C 82 |
MOV A,D CALL FACTORIAL |
||||||||
8118 8119 811C 811D 811E 8121 |
EE 3A 15 B0 C5 E1 22 13 B0 CD 0082 |
XRI STA B015 PUSH B POP H SHLD B013 CALL DIVIS |
СТЕПЕНЬ ФАКТОРИАЛА |
|||||||
8124 8127 812A 8132 |
2A 16 B0 22 50 B0 3A 19 B0 3A 52 B0 |
LHLD B016 SHLD B050 LDA B019 STA B052 |
ПЕРЕСЫЛКА РЕЗУЛЬТАТА В ПРОМЕЖУТОЧНЫЙ РЕГИСТР |
|||||||
8135 |
1E 0 |
MVI E,0 |
ВСЕГДА СКЛАДЫВАТЬ |
|||||||
8138 |
C3 05 81 |
JNP M11 |
||||||||
813B |
3C |
INR A |
||||||||
813C |
5F |
MOV E, A |
||||||||
813D 8140 8143 8146 8149 814C 814F 8152 8155 8158 815B 815E 8161 8164 8167 816A 816D 8170 8173 8176 8179 |
2A 50 B0 22 30 B0 3A 52 B0 3A 32 B0 2A 60 B0 22 33 B0 3A 62 B0 32 35 B0 CD 82 60 2A 36 B0 22 60 B0 3A 39 B0 32 63 B0 2A 50 B0 22 00 B0 3A 52 B0 32 02 B0 2A 40 B0 22 03 B0 3A 42 B0 32 05 B0 |
LHLD B050 SHLD B030 LDA B052 STA B032 LHLD B060 SHLD B033 LDA B062 STA B035 CALL ADDIT LHLD B036 SHLD B060 LDA B039 STA B063 LHLD B050 SHLD B000 LDA B052 STA B002 LHLD B040 SHLD B003 LDA B042 STA B005 |
ПОДГОТОВКА СЛЕДУЮЩЕГО ШАГА ЦИКЛА |
|||||||
817C 817D 817E |
13 0D C2 05 81 |
INR D DCR C JNZ M11 |
||||||||
8181 |
C9 |
RET |
КОНЕЦ РЕЗУЛЬТАТ В B060,B062 |
|||||||
ПРОЦЕДУРА УМНОЖЕНИЯ ПЕРВЫЙ МНОЖИТЕЛЬ – ПО АДРЕСУ B000 ВТОРОЙ МНОЖИТЕЛЬ –B003; РЕЗУЛЬТАТ БУДЕТ В B006 |
||||||||||
PROC MULTIPLIC |
ЗАГОЛОВОК ПРОЦЕДУРЫ |
|||||||||
8182 |
3A 02 B0 |
LDA B002 |
СЛОЖЕНИЕ ПОКАЗАТЕЛЕЙ СТЕПЕНИ |
|||||||
8185 8188 |
2A 02 B0 86 |
LHLD B005 ADD M |
||||||||
8189 |
32 08 B0 |
STA B008 |
РЕЗУЛЬТАТ СТЕПЕНИ |
|||||||
818C |
2A0000 |
LHLD 0000 |
||||||||
818F |
22 06 B0 |
SHLD B0006 |
ОЧИСТКА МАНТИССЫ РЕЗУЛЬТАТА |
|||||||
8192 |
2A 00 B0 |
LHLD B000 |
||||||||
8195 8196 8197 |
44 4D 03 |
MOV B,H MOV C,L INX B |
ПРОВЕРКА НА 0 ДЕКРИМЕНТ Bc - первый множитель |
|||||||
8198 819B 819C |
2A 03 B0 EB 0B |
LOOP2: |
LHLD B0003 XCHG DCX B |
ВТОРОЙ МНОЖИТЕЛЬ В DE |
||||||
819D |
C8 |
RZ |
ВЫХОД , ЕСЛИ МНОЖЕТЕЛЬ =0 |
|||||||
819E |
2A06 B0 |
LHLD B006 |
||||||||
81A1 |
19 |
DAD D |
СЛОЖЕНИЕ ВТОРОГО МНОЖИТЕЛЯ |
|||||||
81A2 |
D2 06 81 |
JNC LOOP1 |
||||||||
81A5 |
3A 09 B0 |
LDA B009 |
||||||||
81A8 |
3C |
INR A |
||||||||
81A9 |
32 09 B0 |
STA B009 |
||||||||
81AC |
7C |
MOV A,H |
КОРРЕКЦИЯ ПОКАЗАТЕЛЯ СТЕПЕНИ И МАНТИССЫ, ЕСЛИ ПЕРЕПОЛНЕНИЕ |
|||||||
81AD |
1F |
RAR |
||||||||
81AE |
67 |
MOV H,A |
||||||||
81AF |
7D |
MOV A,L |
||||||||
81B0 |
1F |
RAR |
||||||||
81B1 |
7C |
MOV A,H |
MOV A,H |
|||||||
81B2 |
0F |
RRC |
RRC |
|||||||
81B3 |
67 |
MOV H,A |
MOV H,A |
|||||||
81B4 |
7D |
MOV A,L |
MOV A,L |
|||||||
81B5 |
1F |
RAR |
RRC |
|||||||
81B6 |
7C |
MOV A,H |
||||||||
81B7 |
0F |
RRC |
||||||||
81B8 |
67 |
MOV H,A |
||||||||
81B9 |
7D |
MOV A,L |
||||||||
81BA |
1F |
RAR |
||||||||
81BB |
7C |
MOV A,H |
||||||||
81BC |
0F |
RRC |
||||||||
81BD |
67 |
MOV H,A |
||||||||
81BE |
7D |
MOV A,L |
||||||||
81BF |
1F |
RAR |
||||||||
81C0 |
22 06 B0 |
LOOP1 |
SHLD B006 |
|||||||
81C3 |
FA DC 81 |
JM LOOP2 |
||||||||
ПРОЦЕДУРА ДЕЛЕНИЯ ДЕЛИМОЕ – ПО АДРЕСУ B010 ДЕЛИТЕЛЬ –B013; РЕЗУЛЬТАТ БУДЕТ В B016 |
||||||||||
PROC DIVIS |
ЗАГОЛОВОК ПРОЦЕДУРЫ |
|||||||||
8200 |
3A 12 B0 |
LDA B015 |
ВЫЧИТАНИЕ ПОКАЗАТЕЛЕЙ СТЕПЕНИ |
|||||||
8203 8204 8207 |
47 3A 12 B0 90 |
MOV B, A LDA B012 SUB B |
||||||||
8208 |
32 18 B0 |
STA B018 |
РЕЗУЛЬТАТ СТЕПЕНИ |
|||||||
820B |
21 00 00 |
LXI 0000 |
||||||||
820E |
22 16 B0 |
SHLD B0016 |
ОЧИСТКА МАНТИССЫ РЕЗУЛЬТАТА |
|||||||
8211 |
2A 13 B0 |
LHLD BO13 |
HL- ДЕЛИТЕЛЬ |
|||||||
8214 8215 8216 8219 821C 821D 8220 8221 8222 8223 8224 8225 8226 8228 8228 822A 822B 822C 822D 822E 8230 8233 8234 8235 |
AF BC CA 19 B0 3A 19 B0 3C 32 19 B0 7C 1F 67 7D 1F 6F 0E 02 7C 0F 67 7D 1F 6F 0D C2 28 82 AF 4F 47 |
L19 M33 |
XRA A CMP H JZ M33 LDA B019 INR A STA B019 MOV A, H RAR MOV H,A MOV A,L RAR MOV L,A MVI E, 2 MOV A,H RRC MOV H, A MOV A, L RAR MOV L, C DCR C JNZ L19 XRA MOV C,A MOV B, A |
ДЛЯ ПОЛУЧЕНИЯ ЗАДАННОЙ ТОЧНОСТИ СДВИГАЕМ ЗНАЧЕНАТЕЛЬ |
||||||
8236 8237 8238 8239 823A |
03 79 32 7A 32 |
LOOP22 |
INX B MOV A,C STA B016 MOV A,D STA B017 |
ЗАНОСИМ РЕЗУЛЬТАТ |
||||||
823B 823E |
3A 10 B0 95 |
LDA B010 SUB L |
ВЫЧИТАНИЕ |
|||||||
823F 8240 8243 |
4F 3A 11 B0 9C |
MOV C, A LDA B011 SBB H |
||||||||
8244 8245 8246 8247 |
D8 32 79 32 16 B0 |
RC STA B017 MOV A,C STA B016 |
ЗАНОСИМ ДЕЛИМОЕ |
|||||||
824A |
C3 36 82 |
JMP LOOP22 |
||||||||
ФАКТОРИАЛ РЕГИСТРА А, РЕЗУЛЬТАТ В ВС |
||||||||||
824C 824D 824E 824F |
A8 A9 AC 57 |
FACTO |
XRA B XRA C XRA H MOV D,A |
|||||||
8250 |
5A |
LOOP2 |
MOV E,D |
|||||||
8251 |
79 |
LOOP1 |
MOV A,C |
|||||||
8252 8253 |
83 57 |
ADD E MOV E,A |
||||||||
8254 |
7A |
MOV A,D |
||||||||
8255 8256 |
8C 57 |
ADC H MOV D, A |
||||||||
8257 |
1D |
DCR E |
||||||||
8258 |
C4 51 82 |
JNZ LOOP1 |
||||||||
825B |
15 |
DCR D |
||||||||
825C |
C8 |
RZ |
||||||||
825D |
C3 50 82 |
JMP LOOP2 |
||||||||
PROC ADDIT |
ЗАГОЛОВОК ПРОЦЕДУРЫ B030 ПЕРВОЕ СЛОГАЕМОЕ B033 ВТОРОЕ СЛОГАЕМОЕ B036 СУММА ЕСЛИ Е=0 СЛОЖЕНИЕ |
|||||||||
8260 |
3A 35 B0 |
LDA B035 |
СРАВНЕНИЕ ПОКАЗАТЕЛЕЙ СТЕПЕНИ |
|||||||
8263 8264 |
47 3A 32 B0 |
MOV B,A LDA B032 |
||||||||
8267 8268 |
57 80 |
MOV D, A SUB B |
||||||||
8269 826A 826B |
07 07 4F |
RLC RLC MOV C,A |
УМНОЖАЕМ НА 4 |
|||||||
826C |
3A 33 B0 |
M6 |
LDA B033 |
ЗАГРУЖАЕМ ВТОРОЕ СЛАГАЕМОЕ И ПРОИЗВОДИМ КОРРЕКЦИЮ СТЕПЕНИ |
||||||
826F 8270 8273 8276 8277 827A 827B |
07 32 22 B0 3A 34 B0 1F 32 34 B0 0D C2 |
RRC STA B033 LDA B034 RAR STA B034 DCR C JNZ M6 |
||||||||
827C |
7A |
MOV A, D |
||||||||
827D |
32 |
STA B0039 |
ЗАПИСЬ РЕЗУЛЬТАТА СТЕПЕНИ |
|||||||
827E 8271 8272 8275 8276 8277 8278 8279 827C 827D 827E 827F 8282 8283 8284 8285 8286 8287 8288 8289 828A 828B 828C 828D 828E 828F 8290 8291 |
2A 30 B0 E3 2A 33 B0 AF BB C2 19 22 36 B0 D8 7A 3C 32 39 B0 7C 17 67 7D 17 6F 0E 2 7C 07 67 7D 17 6F 0D C2 C9 |
M9 |
LHLD B030 XCHG LHLD B033 XRA A CMP E JNZ M7 DAD D SHLD B036 RC MOV A,D INR A STA B039 MOV A, H RAL MOV H,A MOV A,L RAL MOV L,A MVI C,2 MOV A,H RLC MOV H, A MOV A, L RAL MOV L, C DCR C JNZ M9 RET |
ВЫХОД |
||||||
8292 8293 8296 8297 8298 8299 82A2 82A3 82A4 82A5 82A6 82A7 82A8 82AA 82AB 82AC 82AD 82AF 82B0 82B1 82B2 82B5 |
92 22 36 B0 D8 7A 3D 32 39 B0 7C 1F 67 7D 1F 6F 0E 02 7C 0F 67 7D 1F 6F 0D C2 A8 82 C9 |
M7 Md9 |
SUB D SHLD B036 RC MOV A,D DCR A STA B039 MOV A, H RAR MOV H,A MOV A,L RAR MOV L,A MVI C, 2 MOV A,H RRC MOV H, A MOV A, L RAR MOV L, A DCR C JNZ Md9 RET |
ВЫХОД КОРРЕКЦИЯ РЕЗУЛЬТАТОВ СТЕПЕНИ, ЕСЛИ ЗАЕМ |
||||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.