7.4 Жұмыс тапсырмасы 7.3.1 8085 Simulator IDE симуляторына бағдарламаны енгізу тәртібін игеру және дерек жіберу командаларының іс-әрекетімен таныс:
симулятор бағдарламасын әлпеттемесімен аш та, ашылған симулятор терезесінде (2.1 суретті қара) Tools/Assembler таңдап, кезекті Assembler терезесінде File/New таңда;
бағыттаманы Tab түймесімен ығыстырып, төмендегі бағдарламаның бірінші командасын енгіз де, Enter түймесін бас. Осы сияқты бағдарламаның келесі командаларын да енгіз. Белгілер жол басында жазылады. Бірнеше блок түрінде құрылған бұл бағдарламада процессор мен жады арасындағы дерек жіберілімдері жүзеге асырылады. Бірінші блокта (Single Writing-1) жадыға тура сілтемелі команда арқылы жеке жіберілім жүзеге асырылады. Екінші блокта (Serial Writing) жадыға жанама сілтемелі команда арқылы дерек массивінің (арифметикалық прогрессияның мүшелері түріндегі) жіберілімі жүзеге асырылады. Дерек массивінің жіберілімінің ыңғайлырақ тәсілі келесі блокта (Single Writing-2) келтірілген. Келесі үш блокта (Data Access, Data Access and Conversion, Single Writing) деректердің жадының бір аймағынан екінші аймағына алғы пайдаланылған командаларға ұқсас командалармен жіберілуі (тек кері тәртіппен) жүзеге асырылады. Жазылған бағдарламаны Transfers (Жіберілімдер) аталымымен сақта (File/Save As). Нәтижесінде asm кеңейтілімді файл құрылады.
7.1 Сурет
;WRITING to MEMORIES
SW: ;Single Writing
MVI A,0FH;Direct Loading
STA 00D0H;Direct Writing
NOP
S1: ;Serial Writing-1
MVI C,07h;Data Counter
LXI D,00D0H;Initial Address
MVI A,00H;Cleaning
T0: ADI 13H;Expansion Step
INX D;Address Increment
STAX D;Indirect Writing
DCR C;Monitoring of the Data Counter
JNZ T0;Continue
XCHG;Exchange
NOP
S2: ;Serial Writing-2
MVI C,08H;Data Counter
T1: ADI 09H;Expansion Step
INX H;Address Increment
MOV M,A;Indirect Writing
DCR C;Monitoring of the Data Counter
JNZ T1;Continue
NOP
AW: ;Data Access and Writing
LXI D,00EFH;Initial Address
MVI C,08H;Data Counter
T2: MOV A,M;Indirect Loading
STAX D;Indirect Writing
DCX H;Address Decrement
DCX D;Address Decrement
DCR C;Monitoring of the Data Counter
JNZ T2;Continue
NOP
AC: ;Data Access, Conversion and Writing
MVI C,07H;Data Counter
T3: MOV A,M;Indirect Loading
RLC;Left Shift
XCHG;Exchange
MOV M,A;Indirect Writing
DCX H;Address Decrement
DCX D;Address Decrement
XCHG;Exchange
DCR C;Monitoring of the Data Counter
JNZ T3;Continue
NOP
SA: ;Single Access and Writing
LDA 00D0H;Direct Loading
STA 00E0H;Direct Writing
HLT;Ending
Assembler терезесінде Tools/Assemble&Load таңда. Нәтижесінде hex, lst, obj кеңейтілімді файлдар құрылады;
симулятордың негізгі терезесінде Tools/Breakpoints Manager таңдап, әрбір блоктан кейін, яғни NOP командасы тұрған жолдарға (7.2 суретті қара), тексерім нүктелерін қой;
7.2 Сурет
симулятордың негізгі терезесінде моделдеу жылдамдығын (мысалы, Rate/Normal) таңдап, симуляторды іске қос (Simulation/Start);
бағдарламаның әрбір тексерім нүктесіндегі тоқталымында орындалған бағдарлама блогындағы командалардың іс-әрекетін және алынған нәтижелерін (микропроцессор регистрлері мен жадының сәйкесті ұяшықтарындағы) талда;
моделдеу жылдамдығын (мысалы, Rate/...) таңдау арқылы симулятор жұмысын жалғастыр.
Қажетті жағдайда (оқытушының ұсынысы бойынша) бағдарламаның әрбір блоктарын жеке орында. Ол үшін бағдарламаның бірінші жолына JMP командасын қойып, оған қажетті блоктың белгісін жалға да, блок соңындағы NOP командасын HLT командасына ауыстыр.
7.3.2 Сілтеу тәсілі әртүрлі, арифметикалық командалардың іс-әрекетімен таныс:
келесі блоктардан тұратын бағдарламаны енгіз: Data Array – жадыға арифметикалық прогрессия мүшелері түріндегі деректердің жазылуын жүзеге асырады (прогрессияның берілген параметрлерін (n = 0AH – мүшелер санын, a1 = 00H – бірінші мүшенің мәнін, d = 55H – прогрессия қадамын) жұмыстың орындалу барысында өзгертуге болады). Cumulative Summation – бағдарламаның алдыңғы блогында жадыға жазылған арифметикалық прогрессия мүшелерінің қосындысын анықтайды. Retention of Result – алынған қосынды нәтижесін жадыда сақтайды. Series Subtraction – алдында алынған қосындыдан арифметикалық прогрессия мүшелерінің мәндерін тізбелеп алады. екі қосалқы блок түрінде (Data и Cumulative Summation-A) құрылған ALTERNATIVE of the Single-Byte Summation блогында арифметикалық прогрессия мүшелерінің қосындысын анықтаудың перифериялық құрылғыларды пайдалану арқылы (IN, OUT) анықталатын өзгеше түрі жүзеге асырылады. Енгізілген бағдарламаны Single-Byte Arithmetic (Бірбайтты арифметика) аталымымен сақта;
;SINGLE-BYTE ARITHMETIC
DA: ;Data Array (arithmetical progression)
LXI H,00E0H;Initial Address
MVI C,0AH;Data Quantity
MVI A,00H;Cleaning
MOV M,C;Writing in the Memory
SD: INX H;Address Increment
ADI 55H;Increment Step of the Linear Series
MOV M,A;Writing in the Memory
DCR C;Monitoring of the Data Counter
JNZ SD;Continue
NOP
CS: ;Cumulative Summation
;SUM=((2a1+(n-1)d)/2)n
;a1-first operand,n-quantity,d-step,
LXI H,00E0H;Initial Address
MVI A,00H;Cleaning
MOV B,A;Cleaning
MOV C,M;Installation of the Data Counter
C1: INX H;Address Increment
ADD M;Addition
JNC C2;Carry Monitoring
INR B;Carry Accumulation
C2: DCR C;Monitoring of the Data Counter
JNZ C1;Continue
NOP
RR: ;Retention of Result
INX H;
MOV M,A;Low Byte
INX H;
MOV M,B;High Byte
NOP
SS: ;Series Subtraction
LXI H,00E0H;Initial Address
MOV C,M;Installation of the Data Counter
S1: INX H;Address Increment
SUB M;Subtraction
JNC S2;Borrow Monitoring
DCR B;Borrow Subtraction
S2: DCR C;Monitoring of the Data Counter
JNZ S1;Continue
NOP
AD: ;ALTERNATIVE of the Single-Byte Summation
;Data
IN 01H;First Operand
MOV E,A
IN 01H;Data Quantity
MOV C,A
IN 02H;Step
MOV D,A
LXI H,0000H
NOP
AC ;Cumulative Summation-A
A1: MOV A,E
ADD D
MOV E,A
MOV A,L
ADD E
JNC A2
INR H
A2: MOV L,A
DCR C
JNZ A1
MOV A,L
OUT 03H
MOV A,H
OUT 04H
HLT;Ending
Assembler терезесінде выбрать Tools/Assemble&Load таңдап, сосын симулятордың негізгі терезесінде Tools/Breakpoints Manager таңда да, әрбір блоктан кейін, яғни NOP командасы тұрған жолдарға (7.2 суретті қара) тексерім нүктелерін қой;
симулятор терезесінде Tools/Peripheral Devices терезесін аш. Ашылған Peripheral Devices терезесінде Device 1 түймесін басып, порт адресін 01 түрінде анықта да, сосын бұл портты IN жағдайына қой. Осы сияқты келесі порт адресін 02 түрінде анықтап, оны да IN жағдайына қой. Келесі порттардың адресін 03 және 04 түрінде анықтап, оларды OUT жағдайына қой;
симулятордың негізгі терезесінде моделдеу жылдамдығын (мысалы, Rate/Normal) таңдап, симуляторды іске қос (Simulation/Start). Бағдарламаның әрбір тексерім нүктесіндегі тоқталымында орындалған бағдарлама блогындағы командалардың іс-әрекетін және алынған нәтижелерін (микропроцессор регистрлері мен жадының сәйкесті ұяшықтарындағы) талда;
7.3 Сурет
моделдеу жылдамдығын (мысалы, Rate/...) таңдау арқылы симулятор жұмысын жалғастыр;
алынған қосынды нәтижесінің өрнегі арқылы есептелген мәнге сәйкестігін тексер.
Қажетті жағдайда (оқытушының ұсынысы бойынша) бағдарламаның әрбір блоктарын жеке орында. Ол үшін бағдарламаның бірінші жолына JMP командасын қойып, оған қажетті блоктың белгісін жалға да, блок соңындағы NOP командасын HLT командасына ауыстыр.
7.3.3 Бағдарлама жұмысын ісжүзіндегі құралымда тексер:
микрокомпьютерді (зертханалық құралымды) іске дайындап (1.3 тарауын қара), жады ұяшықтарына келтірілген бағдарламаның жеке блоктарындағы команда кодтарын енгіз;
Бағдарламаның әрбір блогын GO түймесін басып, блоктың бастапқы адресін енгізу арқылы іске қос та, орындалған бағдарлама блогында алынған нәтижелерді симуляторда алынған нәтижелермен салыстыр.