| Alex_K |
5th January 2014 01:03 |
Моя программа вывода надписи из КМД и проверки некоторых регистров:
Code:
.TITLE TSKMD1
.MCALL .PRINT,.EXIT
START: .PRINT #VER
5$: BIT #100,@#177564
BNE 5$
10$: BIT #40,@#172140
BEQ 10$
MOV #35,@#172140
20$: TSTB @#172140
BPL 20$
MOV #KMDPRG,@#172142
30$: BIT #40,@#172140
BEQ 30$
BIT #100,FLG1
BNE 31$
.PRINT #NEXEC
.EXIT
31$: BIT #200,FLG
BEQ 32$
.PRINT #A3PR
32$: BIT #1,FLG1
BNE 40$
.PRINT #AD3NPR
BR 41$
40$: .PRINT #AD3PR
BIT #2,FLG1
BEQ 41$
.PRINT #AD3N7
41$: BIT #400,FLG
BEQ 33$
.PRINT #A7PR
33$: BIT #4,FLG1
BNE 42$
.PRINT #AD7NPR
BR 43$
42$: .PRINT #AD7PR
BIT #10,FLG1
BEQ 43$
.PRINT #AD7N7
43$: .EXIT
FLG1: .WORD 0
VER: .ASCIZ /TEST KMD WINDOW ver.1/
NEXEC: .ASCIZ <16>/pODPROGRAMMA W kmd NE ZAPU]ENA/<17>
AD3PR: .ASCIZ <16>/aDRES 177564(/<17>/WINDOW/<16>/=3) PRISUTSTWUET/<17>
AD3NPR: .ASCIZ <16>/aDRES 177564(/<17>/WINDOW/<16>/=3) NE PRISUTSTWUET/<17>
AD7PR: .ASCIZ <16>/aDRES 17777564(/<17>/WINDOW/<16>/=377) PRISUTSTWUET/<17>
AD7NPR: .ASCIZ <16>/aDRES 17777564(/<17>/WINDOW/<16>/=377) NE PRISUTSTWUET/<17>
AD3N7: .ASCIZ <16>/bIT 7(gp) W 177564 NE USTANOWLEN/<17>
AD7N7: .ASCIZ <16>/bIT 7(gp) W 17777564 NE USTANOWLEN/<17>
A3PR: .ASCIZ <16>/aDRES 160000(/<17>/WINDOW/<16>/=3) PRISUTSTWUET/<17>
A7PR: .ASCIZ <16>/aDRES 17760000(/<17>/WINDOW/<16>/=377) PRISUTSTWUET/<17>
.EVEN
KMDPRG: MOV #20000,R0
MOV #KMDPR1+40000,R1
MOV #<KMDEND-KMDPR1>/2,R2
1$: MOV (R1)+,(R0)+
SOB R2,1$
JMP @#20000
KMDPR1: MOV @#177102,SAVRD
MOV 74(R3),SAV4
MOV #<TR4-KMDPR1+20000>,74(R3)
BIS #100,FLG
MOV #<3*400+3>,@#177102
TST @#60000
BCS 1$
BIS #200,FLG
1$: TST @#77564
BCS 10$
BIS #1,FLG
MOV #2,R2
MOV #<HEL3-KMDPR1+20000>,R0
CALL PRWND
10$: MOV #<377*400+377>,@#177102
TST @#60000
BCS 2$
BIS #400,FLG
2$: TST @#77564
BCS 20$
BIS #4,FLG
MOV #10,R2
MOV #<HEL377-KMDPR1+20000>,R0
CALL PRWND
20$: MOV SAVRD,@#177102
MOV SAV4,74(R3)
MOV FLG,@#FLG1+40000
RETURN
PRWND: MOV #10000,R1
1$: TSTB @#77564
BMI 2$
SOB R1,1$
BIS R2,FLG
RETURN
2$: MOVB (R0)+,@#77566
BNE PRWND
RETURN
TR4: BIS #1,@SP
RTI
SAV4: .BLKW 1
SAVRD: .BLKW 1
FLG: .WORD 0
HEL3: .ASCIZ /Hello from KMD, WINDOW=3/<15><12>
HEL377: .ASCIZ /Hello from KMD, WINDOW=377/<15><12>
.EVEN
KMDEND:
.END START
|