Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
4BF8 8BD0 MOV DX,AX; #10 in DX
:4BFA 58 POP AX; sum is back
:4BFB 03C2 ADD AX,DX; 1+2+8+4+5+6+7+9+10
:4BFD 0550FE ADD AX,FE50; clean sum to 0-51
:4C00 BB0A00 MOV BX,000A; BX holds 10
:4C03 99 CWD; only AL
:4C04 F7FB IDIV BX; remainder in DX
:4C06 C45E06 LES BX,[BP+06]; reset pointer
:4C09 268A4702 MOV AL,ES:[BX+02]; load now # 3
:4C0D 98 CBW; only low
:4C0E 05D0FF ADD AX,FFD0; clean # 3 to 0-9
:4C11 3BD0 CMP DX,AX; remainder = pampered #3?
:4C13 7407 JZ 4C1C; yes, go on good guy
:4C15 33D2 XOR DX,DX; no! beggar off! Zero DX
:4C17 33C0 XOR AX,AX; and FLAG_AX = FALSE
:4C19 E91701 JMP 4D33; go to EXIT
let's_go_on_if_first_check_passed:
:4C1C C45E06 LES BX,[BP+06]; reset pointer
:4C1F 268A4701 MOV AL,ES:[BX+01]; now load #2 anew
:4C23 98 CBW; only low
:4C24 05D7FF ADD AX,FFD7; pamper adding +3
:4C27 A38D5E MOV [5E8D],AX; save SEC_+3
:4C2A 3D0900 CMP AX,0009; was it < 9? (no A-F)
:4C2D 7E05 JLE 4C34; ok, no 0xletter
:4C2F 832E8D5E0A SUB WORD PTR [5E8D],+0A; 0-5 if A-F
:4C34 C45E06 LES BX,[BP+06]; reset pointer
:4C37 268A07 MOV AL,ES:[BX]; load 1st input number
:4C3A 98 CBW; only low
:4C3B 05C9FF ADD AX,FFC9; pamper adding +7
:4C3E A38F5E MOV [5E8F],AX; save it in FIR_+7
:4C41 0BC0 OR AX,AX; if #1 > 7
:4C43 7D05 JGE 4C4A; no need to add 0xA
:4C45 83068F5E0A ADD WORD PTR [5E8F],+0A; FIR_+7 + 0xA
now_we_have_the_sliders_let's_prepare_for_loop:
:4C4A C45E0E LES BX,[BP+0E]; Set pointer to E
:4C4D 26C747020000 MOV WORD PTR ES:[BX+02],0000; 0 flag
:4C53 26C7070000 MOV WORD PTR ES:[BX],0000; 0 flag
:4C58 C706975E0900 MOV WORD PTR [5E97],0009; counter=9
:4C5E E99500 JMP 4CF6; Jmp check_counter
loop_8_times:
:4C61 C45E06 LES BX,[BP+06]; reset pointer
:4C64 031E975E ADD BX,[5E97]; add running counter
:4C68 268A07 MOV AL,ES:[BX]; load # counter+1
:4C6B 98 CBW; only low
:4C6C 50 PUSH AX; save 10th number
:4C6D A18D5E MOV AX,[5E8D]; ld SEC_+3 down_slider
:4C70 BA0A00 MOV DX,000A; BX holds 0xA
:4C73 F7EA IMUL DX; SEC_+3 * 0xA
:4C75 03068F5E ADD AX,[5E8F]; plus FIR_+7 up_slider
:4C79 BAA71E MOV DX,1EA7; fixed segment
:4C7C 8BD8 MOV BX,AX; BX = Lkup_val=(SEC_+3*10+FIR_+7)
:4C7E 8EC2 MOV ES,DX; ES = 1EA7
:4C80 268A870000 MOV AL,ES:[BX+0000]; ld 1EA7:[Lkup_val]
:4C85 98 CBW; only low: KEY_PAR
:4C86 8BD0 MOV DX,AX; save KEY_PAR in DX
:4C88 58 POP AX; repops 10th number
:4C89 03C2 ADD AX,DX; RE_SULT=KEY_PAR+#10
:4C8B 05D0FF ADD AX,FFD0; polish RE_SULT
:4C8E 99 CWD; only low: RE_SULT
:4C8F 8956FC MOV [BP-04],DX; save here KEY_PAR [9548]
:4C92 8946FA MOV [BP-06],AX; save here RE_SULT [9546]
:4C95 0BD2 OR DX,DX; KEY_PAR < 0?
:4C97 7C0F JL 4CA8; yes: KEY_PAR < 0
:4C99 7F05 JG 4CA0; no: KEY_PAR > 0
:4C9B 3D0900 CMP AX,0009; KEY_PAR = 0
:4C9E 7608 JBE 4CA8; no pampering if RE_SULT < 9
:4CA0 836EFA0A SUB WORD PTR [BP-06],+0A; else pamper
:4CA4 835EFC00 SBB WORD PTR [BP-04],+00; and SBB [9548]
:4CA8 C45E0E LES BX,[BP+0E]; reset pointer to E
:4CAB 268B4F02 MOV CX,ES:[BX+02]; charge CX [958C]
:4CAF 268B1F MOV BX,ES:[BX]; charge BX slider [958A]
:4CB2 33D2 XOR DX,DX; clear DX to zero
:4CB4 B80A00 MOV AX,000A; 10 in AX
:4CB7 9A930D2720 CALL 2027:0D93; call following RO_routine
Дата публикования: 2014-12-08; Прочитано: 193 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!