123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- LMOD@ PROC FAR
- 000 001EEB B90200 MOV cx, 2
- 002 001EF3 55 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 L1
- 013 001F0A 0BD2 OR dx, dx
- 014 001F0C 7469 JE L2
- 015 001F0E 0BDB OR bx, bx
- 016 001F10 7465 JE L2
- 017 001F12 F7C70100 L1: TEST di, 1
- 018 001F16 751C JNE L3
- 019 001F18 0BD2 OR dx, dx
- 020 001F1A 790A JNS L4
- 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 L4: OR cx, cx
- 026 001F28 790A JNS L3
- 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 L3: 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 L5: 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 L6
- 042 001F4A 7704 JA L7
- 043 001F4C 3BF3 CMP si, bx
- 044 001F4E 7205 JB L6
- 045 001F50 2BF3 L7: SUB si, bx
- 046 001F52 1BFD SBB di, bp
- 047 001F54 40 INC ax
- 048 001F55 E2E7 L6: LOOP L5
- 049 001F57 5B POP bx
- 050 001F58 F7C30200 TEST bx, 2
- 051 001F5C 7406 JE L8
- 052 001F5E 8BC6 MOV ax, si
- 053 001F60 8BD7 MOV dx, di
- 054 001F62 D1EB SHR bx, 1
- 055 001F64 F7C30400 L8: TEST bx, 4
- 056 001F68 7407 JE L9
- 057 001F6A F7DA NEG dx
- 058 001F6C F7D8 NEG ax
- 059 001F6E 83DA00 SBB dx, 0
- 060 001F71 5F L9: POP di
- 061 001F72 5E POP si
- 062 001F73 5D POP bp
- 063 001F74 CA0800 RETF 8
- 064 L2: MOV tmp, dx:ax ;Synthetic inst
- 065 001F77 F7F3 DIV bx
- 066 MOD bx ;Synthetic inst
- 067 001F79 F7C70200 TEST di, 2
- 068 001F7D 7402 JE L10
- 069 001F7F 8BC2 MOV ax, dx
- 070 001F81 33D2 L10: XOR dx, dx
- 071 001F83 EBEC JMP L9
- LMOD@ ENDP
- 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
- 033 00042D 8B56FA L11: MOV dx, [bp-6]
- 034 000430 8B46F8 MOV ax, [bp-8]
- 035 000433 3B56FE CMP dx, [bp-2]
- 036 000436 7D03 JGE L12
- 038 000344 C746F60000 L13: MOV word ptr [bp-0Ah], 0
- 039 000349 C746F40100 MOV word ptr [bp-0Ch], 1
- 041 000411 837EF600 L14: CMP word ptr [bp-0Ah], 0
- 042 000415 7D03 JGE L15
- 044 000351 8B56EE L16: 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 L17
- 071 00039C 3B46F4 CMP ax, [bp-0Ch]
- 072 00039F 7505 JNE L17
- 073 0003A1 B80100 MOV ax, 1
- 075 0003A8 99 L18: 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 L19
- 087 0003C9 B80100 MOV ax, 1
- 089 0003D0 99 L20: 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 L21
- 102 0003F4 7F05 JG L22
- 103 0003F6 3B46F4 CMP ax, [bp-0Ch]
- 104 0003F9 7605 JBE L21
- 105 0003FB B80100 L22: MOV ax, 1
- 107 000402 99 L23: 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 L14 ;Synthetic inst
- 113 000400 33C0 L21: XOR ax, ax
- 114 JMP L23 ;Synthetic inst
- 115 0003CE 33C0 L19: XOR ax, ax
- 116 JMP L20 ;Synthetic inst
- 117 0003A6 33C0 L17: XOR ax, ax
- 118 JMP L18 ;Synthetic inst
- 119 00041A 7F09 L15: JG L24
- 120 00041C 837EF428 CMP word ptr [bp-0Ch], 28h
- 121 000420 7703 JA L24
- 123 000425 8346F801 L24: ADD word ptr [bp-8], 1
- 124 000429 8356FA00 ADC word ptr [bp-6], 0
- 125 JMP L11 ;Synthetic inst
- 126 00043B 7F08 L12: JG L25
- 127 00043D 3B46FC CMP ax, [bp-4]
- 128 000440 7703 JA L25
- 130 000445 FF76EE L25: 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
|