Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

DA8 5E pop si ; restore si



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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...