Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
1.0DA9 CB retf; back to caller with two parameters: DX and AX
ack_to_main_protection_loop_from_RO_routine:
4CBC C45E0E LES BX,[BP+0E]; reset pointer
4CBF 26895702 MOV ES:[BX+02],DX; save R_DX par [958C]
4CC3 268907 MOV ES:[BX],AX; save R_AX par [958A]
4CC6 0346FA ADD AX,[BP-06]; add to AX RE_SULT [9546]
:4CC9 1356FC ADC DX,[BP-04]; add to DX KEY_PAR [9548]
:4CCC C45E0E LES BX,[BP+0E]; reset pointer
:4CCF 26895702 MOV ES:[BX+02],DX; save R_DX+KEY_PAR [958C]
:4CD3 268907 MOV ES:[BX],AX; save R_AX+RE_SULT [958A]
:4CD6 FF0E8D5E DEC WORD PTR [5E8D]; down_slide SEC_+3
:4CDA 7D05 JGE 4CE1; no need to add
:4CDC 83068D5E0A ADD WORD PTR [5E8D],+0A; pamper adding 10
:4CE1 FF068F5E INC WORD PTR [5E8F]; up_slide FIR_+7
:4CE5 A18F5E MOV AX,[5E8F]; save upslided FIR_+7 in AX
:4CE8 3D0900 CMP AX,0009; is it over 9?
:4CEB 7E05 JLE 4CF2; no, go on
:4CED 832E8F5E0A SUB WORD PTR [5E8F],+0A; yes, pamper -10
:4CF2 FF0E975E DEC WORD PTR [5E97]; decrease loop counter
check_loop_counter:
:4CF6 833E975E03 CMP WORD PTR [5E97],+03; counter = 3?
:4CFB 7C03 JL 4D00; finish if counter under 3
:4CFD E961FF JMP 4C61; not yet, loop_next_count
loop_is_ended:
:4D00 C45E06 LES BX,[BP+06]; reset pointer to input
:4D03 268A4701 MOV AL,ES:[BX+01]; load 2nd number (2)
:4D07 98 CBW; only low
:4D08 05D0FF ADD AX,FFD0; clean it
:4D0B BA0A00 MOV DX,000A; DX = 10
:4D0E F7EA IMUL DX; AX = SEC_*10 = 14
:4D10 C45E06 LES BX,[BP+06]; reset pointer
:4D13 50 PUSH AX; save SEC_*10
:4D14 268A07 MOV AL,ES:[BX]; load 1st number (1)
:4D17 98 CBW; only low
:4D18 8BD0 MOV DX,AX; save in DX
:4D1A 58 POP AX; get SEC_*10
:4D1B 03C2 ADD AX,DX; sum SEC_*10+1st number
:4D1D 05D0FF ADD AX,FFD0; clean it
:4D20 99 CWD; only low
:4D21 C45E0A LES BX,[BP+0A]; get pointer to [9582]
:4D24 26895702 MOV ES:[BX+02],DX; save 1st (1) in [9584]
:4D28 268907 MOV ES:[BX],AX; save FINAL_SUM (15) [9582]
:4D2B 33D2 XOR DX,DX; DX = 0
:4D2D B80100 MOV AX,0001; FLAG TRUE!
:4D30 E9E6FE JMP 4C19; OK, you_are_a_nice_guy
EXIT:
:4D33 59 POP CX; pop everything and
:4D34 59 POP CX; return with flag
:4D35 1F POP DS; AX=TRUE if RegNum OK
:4D36 5D POP BP; with 1st # in [9584]
:4D37 4D DEC BP; with FINAL_SUM in [9582]
:4D38 CB RETF
Давайте пеpеведем пpедшевствующий код. И пpежде позицию в стpочке:4В86,
мы имеет пеpвый из длинного списка указатель стека LES BX,[BP+06]; этот
адpес указывает на начала вводимой стpоки, одной стоpоной смотpащей на "-",
Дата публикования: 2014-12-08; Прочитано: 241 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!