• выйти из симулятора-отладчика — <Q>, <E> и перейти в UE32;
• передать фокус окну с исходным текстом программы L_00.a85;
• найти строку с неверной командой. Для этого можно воспользоваться ближайшей меткой и командами Search или вести поиск непосредственно по ассемблерной строке.
• внести необходимые исправления в текст программы;
• сохранить программу;
• повторить трансляцию и компоновку нового текста программы.
В итоге мы наши ошибки:
RAM EQU 0800H
ROM EQU 0000H
LEN_RAM EQU 0800H
; BUFFERS
TEXTSIZE EQU 20H ; резерв. байтового пространства размером textsize
DEFSEG DATA1,CLASS=DATA,START=RAM
SEG DATA1
BUF1: DS TEXTSIZE-1
DB 0
SEG DATA1
BUF2: DS TEXTSIZE-1
DB 0
SEG DATA1
BUF3: DS TEXTSIZE-1
DB 0
; STACK
STACKSIZE EQU 32
DEFSEG STACK,CLASS=DATA,START=RAM+LEN_RAM-STACKSIZE
SEG STACK
STACKR: DS STACKSIZE
STPOINT EQU S -не Sа $ ;назнач.имени для STPOINT
; FLAGS
SEG DATA1
PASS1 DS 1
; MASKS FOR EXAPLES
MASK11 EQU 00000011B ;
MASK12 EQU 01010000B ;
;тело макрокоманды
INIT1 %MACRO BU,SIM,SZ
%LOCAL LOOP_INIT
LXI H,BU
MVI B,SZ
LOOP_INIT:
MVI M,SIM
INX H
DCR B
JNZ LOOP_INIT
%ENDM
SEG IOSPACE,START=0
CS8155 DS 1 ; COMMAND/STATUS REG OF 8155 IN I/O SPACE
PA8155 DS 1 ; PORT A OF 8155 IN I/O SPACE
PB8155 DS 1
PC8155 DS 1 ; PORT C OF 8155 IN I/O SPACE
TL8155 DS 1 ; TIMER LOW PART OF 8155 IN I/O SPACE
TH8155 DS 1 ; TIMER HIGH PART OF 8155 IN I/O SPACE
DEFSEG PA8355SEG,START=8,CLASS=IOSPACE
SEG PA8355SEG
PA8355 DS 1 ; PORT A OF 8355 IN I/O SPACE
PB8355 DS 1 ; PORT B OF 8355 IN I/O SPACE
DA8355 DS 1 ; DDR OF PORT A OF 8355 IN I/O SPACE
DB8355 DS 1 ; DDR OF PORT B OF 8355 IN I/O SPACE
;
;PROGRAMM
SEG CODE,CLASS=CODE,START=ROM
;
PROG: LXI SP,STPOINT
MVI A,0 ;ALL INPUT
OUT DB8355
DCR A
OUT DA8355 ;ALL OUTPUT
; вызов макрокоманд с параметрами
INIT1 STACKR,'.',STACKSIZE
INIT1 BUF1,'1',TEXTSIZE-1
INIT1 BUF2,'2',TEXTSIZE-1
INIT1 BUF3,'3',TEXTSIZE-1
;
; MAIN
;
; INPUT TO PORT A 8355
LXI H,BUF1
LXI D,BUF1+TEXTSIZE-1
LOOPIN:
IN PB8355
MOV M,A
INX H
CALL DEQH
JNZ LOOPIN
; DECODING
LXI H,BUF1
CALL KONSUM
LXI D,BUF2
MVI A,1
STA PASS1
LOOP1:
MOV A,M
SUB A-не SUB A,а ORA A
JZ ENDTEXT
CALL CODING
STAX D
INX H
INX D
JMP LOOPIN-не LOOPIN,а LOOP1
ENDTEXT:
LDAX D
LDA PASS1
ORA A
MVI A,0
STA PASS1
JZ HALT
PRODOLJ:
; ONCE MORE
LXI H,BUF2
LXI D,BUF3
JMP LOOP1
;
HALT:
LXI H,BUF3
CALL KONSUM
; OUTPUT FROM THE PORT B
LXI H,BUF2
MVI B,TEXTSIZE-1
LOOPOUT:
MOV A,M
OUT PA8355
INX H
DCR B
JNZ LOOPOUT
;
HLT
DEQH:
;
; ПП выполняет сравнение (вычитание) E-L,
; если байты не равны, то выход,
; иначе продолжение сравнений D-H.
; выход: Z=0, если DE = HL,
; Z=0, если DE <> HL
;
MOV A,D
SUB H
RNZ
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.