243 lines
11 KiB
Plaintext
243 lines
11 KiB
Plaintext
main PROC NEAR
|
|
000 0002FA 55 PUSH bp
|
|
001 0002FB 8BEC MOV bp, sp
|
|
002 0002FD 83EC14 SUB sp, 14h
|
|
003 000300 8D46FC LEA ax, [bp-4]
|
|
004 000303 50 PUSH ax
|
|
005 000304 B89401 MOV ax, 194h
|
|
006 000307 50 PUSH ax
|
|
007 000308 E85D15 CALL near ptr scanf
|
|
008 00030B 59 POP cx
|
|
009 00030C 59 POP cx
|
|
010 00030D FF76FE PUSH word ptr [bp-2]
|
|
011 000310 FF76FC PUSH word ptr [bp-4]
|
|
012 000313 B89801 MOV ax, 198h
|
|
013 000316 50 PUSH ax
|
|
014 000317 E8C50C CALL near ptr printf
|
|
015 00031A 83C406 ADD sp, 6
|
|
016 00031D 8D46EC LEA ax, [bp-14h]
|
|
017 000320 50 PUSH ax
|
|
018 000321 B8B201 MOV ax, 1B2h
|
|
019 000324 50 PUSH ax
|
|
020 000325 E84015 CALL near ptr scanf
|
|
021 000328 59 POP cx
|
|
022 000329 59 POP cx
|
|
023 00032A 8D46F0 LEA ax, [bp-10h]
|
|
024 00032D 50 PUSH ax
|
|
025 00032E B8B601 MOV ax, 1B6h
|
|
026 000331 50 PUSH ax
|
|
027 000332 E83315 CALL near ptr scanf
|
|
028 000335 59 POP cx
|
|
029 000336 59 POP cx
|
|
030 000337 C746FA0000 MOV word ptr [bp-6], 0
|
|
031 00033C C746F80100 MOV word ptr [bp-8], 1
|
|
032 000341 E9E900 JMP L1
|
|
|
|
033 00042D 8B56FA L1: MOV dx, [bp-6]
|
|
034 000430 8B46F8 MOV ax, [bp-8]
|
|
035 000433 3B56FE CMP dx, [bp-2]
|
|
036 000436 7D03 JGE L2
|
|
037 000438 E909FF JMP L3
|
|
|
|
038 000344 C746F60000 L3: MOV word ptr [bp-0Ah], 0
|
|
039 000349 C746F40100 MOV word ptr [bp-0Ch], 1
|
|
040 00034E E9C000 JMP L4
|
|
|
|
041 000411 837EF600 L4: CMP word ptr [bp-0Ah], 0
|
|
042 000415 7D03 JGE L5
|
|
043 000417 E937FF JMP L6
|
|
|
|
044 000351 8B56EE L6: MOV dx, [bp-12h]
|
|
045 000354 8B46EC MOV ax, [bp-14h]
|
|
046 000357 0346F0 ADD ax, [bp-10h]
|
|
047 00035A 1356F2 ADC dx, [bp-0Eh]
|
|
048 00035D 0346F4 ADD ax, [bp-0Ch]
|
|
049 000360 1356F6 ADC dx, [bp-0Ah]
|
|
050 000363 8956EE MOV [bp-12h], dx
|
|
051 000366 8946EC MOV [bp-14h], ax
|
|
052 000369 8B56EE MOV dx, [bp-12h]
|
|
053 00036C 8B46EC MOV ax, [bp-14h]
|
|
054 00036F D1FA SAR dx, 1
|
|
055 000371 D1D8 RCR ax, 1
|
|
056 000373 8956F2 MOV [bp-0Eh], dx
|
|
057 000376 8946F0 MOV [bp-10h], ax
|
|
058 000379 33D2 XOR dx, dx
|
|
059 00037B B80A00 MOV ax, 0Ah
|
|
060 00037E 52 PUSH dx
|
|
061 00037F 50 PUSH ax
|
|
062 000380 FF76F2 PUSH word ptr [bp-0Eh]
|
|
063 000383 FF76F0 PUSH word ptr [bp-10h]
|
|
064 000386 9AEB1D1000 CALL far ptr LMOD@
|
|
065 00038B 8956EE MOV [bp-12h], dx
|
|
066 00038E 8946EC MOV [bp-14h], ax
|
|
067 000391 8B56F2 MOV dx, [bp-0Eh]
|
|
068 000394 8B46F0 MOV ax, [bp-10h]
|
|
069 000397 3B56F6 CMP dx, [bp-0Ah]
|
|
070 00039A 750A JNE L7
|
|
071 00039C 3B46F4 CMP ax, [bp-0Ch]
|
|
072 00039F 7505 JNE L7
|
|
073 0003A1 B80100 MOV ax, 1
|
|
074 0003A4 EB02 JMP L8
|
|
|
|
075 0003A8 99 L8: CWD
|
|
076 0003A9 8956EE MOV [bp-12h], dx
|
|
077 0003AC 8946EC MOV [bp-14h], ax
|
|
078 0003AF 8B56EE MOV dx, [bp-12h]
|
|
079 0003B2 8B46EC MOV ax, [bp-14h]
|
|
080 0003B5 0B46F4 OR ax, [bp-0Ch]
|
|
081 0003B8 0B56F6 OR dx, [bp-0Ah]
|
|
082 0003BB 8956F2 MOV [bp-0Eh], dx
|
|
083 0003BE 8946F0 MOV [bp-10h], ax
|
|
084 0003C1 8B46F0 MOV ax, [bp-10h]
|
|
085 0003C4 0B46F2 OR ax, [bp-0Eh]
|
|
086 0003C7 7505 JNE L9
|
|
087 0003C9 B80100 MOV ax, 1
|
|
088 0003CC EB02 JMP L10
|
|
|
|
089 0003D0 99 L10: CWD
|
|
090 0003D1 8956EE MOV [bp-12h], dx
|
|
091 0003D4 8946EC MOV [bp-14h], ax
|
|
092 0003D7 8B56EE MOV dx, [bp-12h]
|
|
093 0003DA 8B46EC MOV ax, [bp-14h]
|
|
094 0003DD 0346F4 ADD ax, [bp-0Ch]
|
|
095 0003E0 1356F6 ADC dx, [bp-0Ah]
|
|
096 0003E3 8956F2 MOV [bp-0Eh], dx
|
|
097 0003E6 8946F0 MOV [bp-10h], ax
|
|
098 0003E9 8B56F2 MOV dx, [bp-0Eh]
|
|
099 0003EC 8B46F0 MOV ax, [bp-10h]
|
|
100 0003EF 3B56F6 CMP dx, [bp-0Ah]
|
|
101 0003F2 7C0C JL L11
|
|
102 0003F4 7F05 JG L12
|
|
103 0003F6 3B46F4 CMP ax, [bp-0Ch]
|
|
104 0003F9 7605 JBE L11
|
|
|
|
105 0003FB B80100 L12: MOV ax, 1
|
|
106 0003FE EB02 JMP L13
|
|
|
|
107 000402 99 L13: CWD
|
|
108 000403 8956EE MOV [bp-12h], dx
|
|
109 000406 8946EC MOV [bp-14h], ax
|
|
110 000409 8346F401 ADD word ptr [bp-0Ch], 1
|
|
111 00040D 8356F600 ADC word ptr [bp-0Ah], 0
|
|
112 JMP L4 ;Synthetic inst
|
|
|
|
113 000400 33C0 L11: XOR ax, ax
|
|
114 JMP L13 ;Synthetic inst
|
|
|
|
115 0003CE 33C0 L9: XOR ax, ax
|
|
116 JMP L10 ;Synthetic inst
|
|
|
|
117 0003A6 33C0 L7: XOR ax, ax
|
|
118 JMP L8 ;Synthetic inst
|
|
|
|
119 00041A 7F09 L5: JG L14
|
|
120 00041C 837EF428 CMP word ptr [bp-0Ch], 28h
|
|
121 000420 7703 JA L14
|
|
122 000422 E92CFF JMP L6
|
|
|
|
123 000425 8346F801 L14: ADD word ptr [bp-8], 1
|
|
124 000429 8356FA00 ADC word ptr [bp-6], 0
|
|
125 JMP L1 ;Synthetic inst
|
|
|
|
126 00043B 7F08 L2: JG L15
|
|
127 00043D 3B46FC CMP ax, [bp-4]
|
|
128 000440 7703 JA L15
|
|
129 000442 E9FFFE JMP L3
|
|
|
|
130 000445 FF76EE L15: PUSH word ptr [bp-12h]
|
|
131 000448 FF76EC PUSH word ptr [bp-14h]
|
|
132 00044B B8BA01 MOV ax, 1BAh
|
|
133 00044E 50 PUSH ax
|
|
134 00044F E88D0B CALL near ptr printf
|
|
135 000452 83C406 ADD sp, 6
|
|
136 000455 8BE5 MOV sp, bp
|
|
137 000457 5D POP bp
|
|
138 000458 C3 RET
|
|
|
|
main ENDP
|
|
|
|
LMOD@ PROC FAR
|
|
000 001EEB B90200 MOV cx, 2
|
|
001 001EEE EB03 JMP L16
|
|
|
|
002 001EF3 55 L16: PUSH bp
|
|
003 001EF4 56 PUSH si
|
|
004 001EF5 57 PUSH di
|
|
005 001EF6 8BEC MOV bp, sp
|
|
006 001EF8 8BF9 MOV di, cx
|
|
007 001EFA 8B460A MOV ax, [bp+0Ah]
|
|
008 001EFD 8B560C MOV dx, [bp+0Ch]
|
|
009 001F00 8B5E0E MOV bx, [bp+0Eh]
|
|
010 001F03 8B4E10 MOV cx, [bp+10h]
|
|
011 001F06 0BC9 OR cx, cx
|
|
012 001F08 7508 JNE L17
|
|
013 001F0A 0BD2 OR dx, dx
|
|
014 001F0C 7469 JE L18
|
|
015 001F0E 0BDB OR bx, bx
|
|
016 001F10 7465 JE L18
|
|
|
|
017 001F12 F7C70100 L17: TEST di, 1
|
|
018 001F16 751C JNE L19
|
|
019 001F18 0BD2 OR dx, dx
|
|
020 001F1A 790A JNS L20
|
|
021 001F1C F7DA NEG dx
|
|
022 001F1E F7D8 NEG ax
|
|
023 001F20 83DA00 SBB dx, 0
|
|
024 001F23 83CF0C OR di, 0Ch
|
|
|
|
025 001F26 0BC9 L20: OR cx, cx
|
|
026 001F28 790A JNS L19
|
|
027 001F2A F7D9 NEG cx
|
|
028 001F2C F7DB NEG bx
|
|
029 001F2E 83D900 SBB cx, 0
|
|
030 001F31 83F704 XOR di, 4
|
|
|
|
031 001F34 8BE9 L19: MOV bp, cx
|
|
032 001F36 B92000 MOV cx, 20h
|
|
033 001F39 57 PUSH di
|
|
034 001F3A 33FF XOR di, di
|
|
035 001F3C 33F6 XOR si, si
|
|
|
|
036 001F3E D1E0 L21: SHL ax, 1
|
|
037 001F40 D1D2 RCL dx, 1
|
|
038 001F42 D1D6 RCL si, 1
|
|
039 001F44 D1D7 RCL di, 1
|
|
040 001F46 3BFD CMP di, bp
|
|
041 001F48 720B JB L22
|
|
042 001F4A 7704 JA L23
|
|
043 001F4C 3BF3 CMP si, bx
|
|
044 001F4E 7205 JB L22
|
|
|
|
045 001F50 2BF3 L23: SUB si, bx
|
|
046 001F52 1BFD SBB di, bp
|
|
047 001F54 40 INC ax
|
|
|
|
048 001F55 E2E7 L22: LOOP L21
|
|
049 001F57 5B POP bx
|
|
050 001F58 F7C30200 TEST bx, 2
|
|
051 001F5C 7406 JE L24
|
|
052 001F5E 8BC6 MOV ax, si
|
|
053 001F60 8BD7 MOV dx, di
|
|
054 001F62 D1EB SHR bx, 1
|
|
|
|
055 001F64 F7C30400 L24: TEST bx, 4
|
|
056 001F68 7407 JE L25
|
|
057 001F6A F7DA NEG dx
|
|
058 001F6C F7D8 NEG ax
|
|
059 001F6E 83DA00 SBB dx, 0
|
|
|
|
060 001F71 5F L25: POP di
|
|
061 001F72 5E POP si
|
|
062 001F73 5D POP bp
|
|
063 001F74 CA0800 RETF 8
|
|
065 001F77 F7F3 DIV bx
|
|
067 001F79 F7C70200 TEST di, 2
|
|
068 001F7D 7402 JE L26
|
|
069 001F7F 8BC2 MOV ax, dx
|
|
|
|
070 001F81 33D2 L26: XOR dx, dx
|
|
071 001F83 EBEC JMP L25
|
|
|
|
LMOD@ ENDP
|
|
|