рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рджрд╢рдорд▓рд╡ рдХрд╛рд░реНрдпрдХреНрд░рдо

1984 рдореЗрдВ, рд╕реНрдЯреАрд╡рди рд▓реЗрд╡реА рдХреА рдкрдВрде рдкреБрд╕реНрддрдХ, рд╣реИрдХрд░реНрд╕: рд╣реАрд░реЛрдЬ рдСрдл рдж рдХрдВрдкреНрдпреВрдЯрд░ рд░рд┐рд╡реЛрд▓реНрдпреВрд╢рди , рдХрд╛ рд╡рд┐рдореЛрдЪрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдПрдХ рд░реВрд╕реА рд░реВрд╕реА рдЕрдиреБрд╡рд╛рдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдмреАрдбрд╝рд╛ рдЙрдард╛рдпрд╛, рдЗрд╕рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореВрд▓ рдХреЛ рд░рдЦрд╛ (рд╡реИрд╕реЗ, рдФрд░ рдпрд╣ рдкрд╛рдк рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдЕрдзреНрдпрд╛рдп рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЛ рдПрдХ рджрд╢рдорд▓рд╡ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд░реВрдЯрд┐рди рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдореЗрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ (рдЖрдк рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ )ред рдРрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХрд┐рддрдирд╛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╕реАрдорд╛ рдХреНрдпрд╛ рд╣реИ?

рдЕрдЧрд╕реНрдд 2018 рдореЗрдВ, рдореИрдВрдиреЗ рд╕реЛрд╡рд┐рдпрдд рдкреНрд░реЛрд╕реЗрд╕рд░ 1801BM1 рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рдЯреАрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛ рдерд╛ (рдЗрд╕рдореЗрдВ рдкреАрдбреАрдкреА -11 рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ )ред рдмреАрдХреЗ 0011M рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП " рдЕрдЪреНрдЫрд╛ Apple " рдбреЗрдореЛ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдЯреАрдХ рд╕рдордп (рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрдХреНрд░ рдореЗрдВ) рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ ред рдореИрдВ рджрд╢рдорд▓рд╡ рдореЗрдВ рдорд╛рдк рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕рдмрд░реВрдЯреАрди рд▓рд┐рдЦрдиреА рдереА - рдкрд░реАрдХреНрд╖рдг рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереЗред

рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдореИрдВрдиреЗ рдХреА рдереА, рд╡рд╣ 10 рдХреА рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ TEN рд╕рд░рдгреА рдереАред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ R0 рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд▓реЗрддреА рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ NUMBER рдкрд░ рдПрдХ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдХреЛрдИ рд╡рд┐рднрд╛рдЬрди рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИ !

	MOV #NUMBER,R1	; pointer to output text string
	MOV #TEN,R5
1:	CMP (R5)+,R0 	; skip leading zeros
	BHI 1		; branch if higher, for 16-bit not signed
	MOV -(R5),R3
	BEQ 4		; if less then 10

2:	MOV #47.,R4	; 0 symbol in ASCII codepage - 1
3:	INC R4		; count digits
	SUB R3,R0
	BHIS 3		; branch if higher or same, for 16-bit not signed
	MOVB R4,(R1)+	; print R4

	ADD (R5)+,R0
	MOV (R5),R3
	BNE 2

4:	ADD #48.,R0	; 0 symbol in ASCII codepage
	MOVB R0,(R1)+	; print R0
	CLRB (R1) 	; end of text marker
	RET

TEN:	.WORD 10000.,1000.,100.,10.,0

рдкреАрдбреАрдкреА -11 рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рддрд░реНрдХреЛрдВ рдХреЛ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ (рдкрд╣рд▓реЗ рд╕реНрд░реЛрдд, рдлрд┐рд░ рд░рд┐рд╕реАрд╡рд░) рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд╢рд░реНрдд рд╢рд╛рдЦрд╛ рдХрдорд╛рдВрдб рдмреА рдЕрдХреНрд╖рд░ (рд╢рдмреНрдж рд╢рд╛рдЦрд╛ - рд╢рд╛рдЦрд╛) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рджрд┐рдирдЪрд░реНрдпрд╛ рдХрд╛ рдЖрдХрд╛рд░ 22 рд╢рдмреНрдж рд╣реИ (рдбреЗрдЯрд╛ рд╕рд╣рд┐рдд рдирд╣реАрдВ)ред

рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрдЪрд╛рдирдХ рд╕реНрдЯреАрдлрди рд▓реЗрд╡реА рдХреА рдХрд┐рддрд╛рдм рд╕реЗ рдХрд╣рд╛рдиреА рдпрд╛рдж рдЖрдИ: рд╣реИрдХрд░реНрд╕ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░рддреЗ рдереЗ, рдФрд░ рдкреАрдбреАрдкреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рднреАред рд╕рдЪ рд╣реИ, рдЙрдирдХреЗ рдкрд╛рд╕ рдкреАрдбреАрдкреА -1 рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рд╛рд▓ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдкреАрдбреАрдкреА -11 рдорд┐рд▓рд╛ред

рдЫрд╡рд┐

рдХрд┐рддрд╛рдм рдЦреЛрд▓рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдПрдХ рдмреЗрд╣рдж рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд░реНрдгрди рдорд┐рд▓рд╛ред MIT рдХреЗ рд╣реИрдХрд░реЛрдВ рдиреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛рдмрд╕ рдореБрдЭреЗ рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдкрд╕рдВрдж рд╣реИред рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реБрдЖ рдпрд╣ рдкрд╛рда рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдпрд╛ рддреЛ рдкреБрд╕реНрддрдХ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛, рдЙрд╕рдиреЗ рдмрд╕ рдЙрд╕ рд╣реИрдХрд┐рдВрдЧ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЪрд╢реНрдорджреАрджреЛрдВ рдХреЗ рд╣реЛрдВрдареЛрдВ рд╕реЗ рдЖрдо рд╢рдмреНрдж рд▓рд┐рдЦ рджрд┐рдПред

рдореБрдЭреЗ рдкреАрдбреАрдкреА -1 рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рдерд╛ ред рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╣реИрдВ: рдорд┐рдВрд╕реНрдХрд╛рдЗрдЯреНрд░реЙрди, рдореБрдВрдЪрд┐рдВрдЧ рд╡рд░реНрдЧ рдФрд░ рдЕрдиреНрдп рддрдерд╛рдХрдерд┐рдд "рдбрд┐рд╕реНрдкреНрд▓реЗ рд╣реИрдХреНрд╕" (рд╡реИрд╕реЗ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдм рддрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ - 60 рдХреЗ рджрд╢рдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ - рдПрдордЖрдИрдЯреА рд╣реИрдХрд░реНрд╕ рдиреЗ " рдбреЗрдореЛ " рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рдЕрд░реНрде рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) рдбрд┐рдореЛрд╕рд┐рди рдкрд░)ред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрдИ рд╕рд┐рд╕реНрдЯрдо рд░реВрдЯреАрди рд╣реИрдВ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрдИ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдлрд┐рд░, рдПрдХ рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░, рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдордХреЗрдбреАрдУрдПрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдмреАрдХреЗ 0010 рдФрд░ рдмреАрдХреЗ 0011 рдПрдо рдкрд░ рдХрд░рддрд╛ рд╣реВрдВред рдЕрд░реЗ рдЪрдорддреНрдХрд╛рд░! - рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрдиреЗ рдкрд░, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдкреБрд╕реНрддрдХ "рд╣реИрдХрд░реНрд╕" рд╕реЗ рдзреВрдорд┐рд▓ рд╡рд░реНрдгрди рдХреЗ рд╕рд╛рде рдЙрдкрдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИ:

	MOV #10.,R4
	CLR R2
1:	CLR R1
2:	SUB R4,R0 	;    10,    
	BLO 3
	INC R1 		;  -   
	BR 2
3:	ADD R4,R0
	ADD #48.,R0 	; ASCII-  0
	INC R2		;  -   
	MOVB R0,-(SP)
	MOV R1,R0 	;    -   
	BNE 1
	INC R2
	MOVB #32.,-(SP)	; ASCII- 
4:	MOVB (SP)+,R0
	CALL PRINT
	SOB R2,4	;     
	RET

рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╡рд░реНрдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдЯреАрдлрди рд▓реЗрд╡реА рдХреА рдкреБрд╕реНрддрдХ рдореЗрдВ рдерд╛, рдЬреЛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЗ рддрд╣рдд рдерд╛ "рд╡рд┐рдкрд░реАрдд рддрд░реАрдХреЗ рд╕реЗ рдзрд░реНрдорд╛рдиреНрддрд░рд┐рдд, рдФрд░ рдПрдХ рдЪрд╛рд▓рд╛рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рдорджрдж рд╕реЗ рдпрд╣ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред" рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рдмрд░реВрдЯреАрди рдХрд╛ рдЖрдХрд╛рд░ 23 рд╢рдмреНрдж рд╣реИ , рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХреА рддреБрд▓рдирд╛ рд╕реАрдзреЗ рдореЗрд░реЗ рд╕рдмрд░реВрдЯреАрди рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ: рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВред рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ MKDOS рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд░реАрдореЗрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЧрдардиред

рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдирдВрдмрд░ 10 рдХреЛ рдШрдЯрд╛рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░ рдЫреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд▓рд┐рдЦрдирд╛ред рд╕рдВрд╕рд╛рд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХрдИ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд╛рдж , рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рд╛:

	MOV #NUMBER,R1	; pointer to output text string
	CLRB -(R1)	; end of text marker
	MOV #10.,R4
1:	MOV #-1.,R5
2:	INC R5		; counter of 10s
	SUB R4,R0
	BHIS 2		; branch if higher or same
	ADD #58.,R0	; #10. + '0' ASCII code
	MOVB R0,-(R1)	; store R0 to text string
	MOV R5,R0	; let's count next how many 10s in number of 10s
	BNE 1
	RET		; returns text string pointer in R1

16 рд╢рдмреНрдж , рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдБрдЪ рдЧрдпрд╛ рд╣реИ (рдореИрдВрдиреЗ рд╕реЛрдЪрд╛), рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ - рдирд┐рд░реНрд╡рд╛рдг, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдЯреАрдлрди рд▓реЗрд╡реА рдиреЗ рднрд╛рд╡рдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдерд╛!

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рддрд░рдХреАрдмреЗрдВ рд▓рдЧрд╛рдИ рдЧрдИ рд╣реИрдВ:

  1. рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЯреЗрдХреНрд╕реНрдЯ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдкрд╛рда рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рднрд░рд╛ рд╣реИ - рдпрд╣ рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рдореЗрдВ рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдкрд╛рда рдореБрджреНрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
  2. , . (INC R5) 1. 0, , ?.. , 10 тАУ , . , . . тАУ . : 1 , , 1 ( ). , , . . -1.
  3. 10, , , . тАУ ( ). , тАУ . , , . ( 10 10 ) . : ASCII- 0, ! , , . ADD #58.,R0 (48+10).

рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ zx-pk.ru рдлреЛрд░рдо рдкрд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдмрд┐рдирд╛ рдмрд╣рд╕ рдХреЗ рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдкрд░рдВрдкрд░рд╛рдУрдВ рдкрд░ рдХреБрдЫ рднреА рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛)ред рд╕рдореБрджрд╛рдп рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдереА: "рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдбреАрдИрд╕реА рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛, рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╣реИред"

рдЦреИрд░, рдпрд╣рд╛рдВ DEC рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ , рдЬреЛ рдХрдВрдкрдиреА рдиреЗ PDP-11 рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ MIT рдХреЗ рдХреБрдЫ рд╣реИрдХрд░реНрд╕ рдХреЛ рдЗрд╕рдХреЗ рд░реИрдВрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ:

; RETURNS:
; R0 = 0
; R1 -> byte following last digit in converted number
CVBTOD:	MOV	R0,-(SP)	;SAVE THE NUMBER PASSED TO US
	CLR	R0		;SET FOR CRUDE DIVIDE BY 10.
10$:	INC	R0		;BUMP QUOTIENT
	SUB	#10.,(SP)	;REDUCE NUMBER BY 10.
	BHIS	10$		;IF SIGN DIDN'T CHANGE...
	ADD	#10.+48.,(SP)	;MAKE REMAINDER PRINTABLE
	DEC	R0		;REDUCE QUOTIENT
	BEQ	20$		;IF ZERO, TIME TO PRINT
	CALL	CVBTOD		;OTHERWISE, RECURSE !
20$:	MOVB	(SP)+,(R1)+	;STORE A CONVERTED DIGIT
	RETURN			;UNWIND THE RECURSION

14 рд╢рдмреНрдж , рдЕрдЪреНрдЫрд╛! рдпрд╛ рдирд╣реАрдВ? рдореИрдВ рд╣рд╛рд░ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдПрдХ рдХрд░реАрдм рджреЗрдЦреЛ:

  1. рд╡рд░реНрдг 0 рдХреЗ ASCII рдХреЛрдб рдФрд░ рд╕рдВрдЦреНрдпрд╛ 10 рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ 70 рдХреЗ рджрд╢рдХ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЪрд╛рд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдардВрдбрд╛ред
  2. рдХрд╛рд░реНрдпрдХреНрд░рдо рдЦреБрдж рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╣рддрд╛ рд╣реИ - рдПрдХ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди!
  3. тАУ , . тАУ .
  4. R1 . , , .
  5. , ! ?.. , . , zx-pk.ru MOV #NUMBER,R1 !

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдХрд╛рд░ 16 рд╢рдмреНрдж рд╣реИ ред рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд░реА рддрд░рд╣ред рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ 12 рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рддреЛ рдХреМрди рд╕рд╛ рдмреЗрд╣рддрд░ рд╣реИ?

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рд╕реНрдЯреЗрдХ рдХреЙрд▓ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ DEC рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реВрдк рдХреЗ рдЕрдВрджрд░ DEC R0 рдФрд░ CALL рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдХрд╛рд░рдг рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдЕрд▓реНрдкрд╡рд┐рдХрд╕рд┐рдд (MKDOS рд╕реЗ) рдирд┐рд░реНрджреЗрд╢ MOV # 10., R4 рдерд╛ - рдЗрд╕рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЙрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред

	MOV #NUMBER,R1	; pointer to output text string
	CLRB -(R1)	; end of text marker
1:	MOV #-1.,R5
2:	INC R5		; counter of 10s
	SUB #10.,R0
	BHIS 2		; branch if higher or same
	ADD #58.,R0	; #10. + '0' ASCII code
	MOVB R0,-(R1)	; store R0 to text string
	MOV R5,R0	; let's count next how many 10s in number of 10s
	BNE 1 		; loop if R0 is not zero
	RET		; returns text string pointer in R1

15 рд╢рдмреНрдж ред 11 рдирд┐рд░реНрджреЗрд╢ред рдЕрдм, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рд╕рдм рд╣реИред

рдЦреИрд░, рдореЗрд░реЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╡рд┐рдЪрд╛рд░ рдЦрддреНрдо рд╣реЛ рдЧрдП рд╣реИрдВред рдпрд╣ рдПрдХ рдкреНрд░реЗрд░рдгрд╛рджрд╛рдпрдХ рдерд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЬреБрдЖ, рдЪреБрдиреМрддреАред рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ PDP-1 рдХреЗ рд▓рд┐рдП 60 рдХреЗ рджрд╢рдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИрдХрд┐рдВрдЧ рдХреЗ рдЫрд╛рддреНрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ DEC рджрд╕ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмреАрд╕ рд╕рд╛рд▓ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ 2000 рдХреЗ рджрд╢рдХ рддрдХ рд╕реЛрд╡рд┐рдпрдд рдХрдВрдкреНрдпреВрдЯрд░ BK 0011M рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рд╡рд░реНрд╖ 2018 рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрджреГрдврд╝ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рдЪрд╛рд░рд┐рддреНрд░рд┐рдХ рд░реВрдк рд╕реЗ, рдХрдИ рд▓реЛрдЧ рдЗрд╕реЗ рдЕрд╕рдВрднрд╡ рдорд╛рдирддреЗ рдереЗред

рддреЛ, рдпрд╣рд╛рдБ рдкрд╡рд┐рддреНрд░ рдХрдВрдШреА рдмрдирд╛рдиреЗрд╡рд╛рд▓реЗ рдХреА рд░реЗрддреА (рд╕реНрдЯреАрдлрди рд▓реЗрд╡реА рдХреЗ рдЕрдиреБрд╕рд╛рд░) рд╣реИ, рдЬреЛ 60 рдХреЗ рджрд╢рдХ рдХреЗ рд╣реИрдХрд░реНрд╕ рдиреЗ рдкреАрдбреАрдкреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рджрд╢рдорд▓рд╡ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереАред рдпрд╛ ... рд╢рд╛рдпрдж рдХрдо рднреА рд╣реЛ?

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ: рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рджрд┐рди рдЖрдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрддрдиреА рдЬрд▓реНрджреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ :) рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ рдФрд░ рд╢рдмреНрдж рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ! рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ Mr_Rm рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ :

	MOV #NUMBER,R1	; pointer to output text string
	CLRB -(R1)	; end of text marker
1:	CLR R5
2:	INC R5		; counter of 10s +1
	SUB #10.,R0
	BHIS 2		; branch if higher or same
	ADD #58.,R0	; #10. + '0' ASCII code
	MOVB R0,-(R1)	; store R0 to text string
	MOV R5,R0	; let's count how many 10s in number of 10s
	SOB R0,1	; subtract 1 and loop if not zero
	RET		; returns text string pointer in R1

14 рд╢рдмреНрдж ред 11 рдирд┐рд░реНрджреЗрд╢ред
рдЪрд╛рд▓ рдпрд╣ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ, рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ R5 рдЪрдХреНрд░ рдХреЗ "рдЧрд▓рдд" рд╕рдВрдЧрдарди рдХреЗ рд╕рд╛рде, рдПрдХ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЕрдЪреНрдЫрд╛ рдЖрдЬреНрдЮрд╛ рджреЛ! рд╣рдо рдЗрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрдо рдХрд░ рджреЗрдВрдЧреЗред рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, R5 рдХреЛ R0 рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж BNE (рд╢рд╛рдЦрд╛ рдЕрдЧрд░ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ) рдХрдорд╛рдВрдб рдиреЗ R0 рдХреА рдЬрд╛рдБрдЪ рдХреА, рдФрд░ рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЪрдХреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред рдЕрдЧрд░ рдХреЗрд╡рд▓ рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ R0 рдХреЛ рдПрдХ рд╕реЗ рдХрдо рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ (рдЕрдЧрд░ рд╣рдореЗрдВ рд╢реВрдиреНрдп рдирд╣реАрдВ рдорд┐рд▓рд╛) рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬрд╛рдПрдВ ... рдПрдХ рдорд┐рдирдЯ рд░реБрдХреЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп SOB (рд╕рдмрдЯреНрд░реЗрдХреНрдЯ рд╡рди рдФрд░ рдмреНрд░рд╛рдВрдЪ) рдЪрдХреНрд░ рдХрдорд╛рдВрдб рд╣реИред рд╕рдЪ рд╣реИ, рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╡рд┐рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдпрд╣ рдПрдХ рдмрд╛рд░ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЪрдХреНрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рднрдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдк-рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджреЗрдЦреЗрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдирдП рдХреЛ рдХреИрд╕реЗ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЙрдкрдпреЛрдЧреА рдХрдбрд╝рд┐рдпрд╛рдБ:


All Articles