============================================================================================================================================== OFFSET 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ---------------------------------------------------------------------------------------------------------------------------------------------- 00000000 0D 0A 3B 20 4E 61 6D 65 20 20 20 20 20 20 20 20 20 20 67 65 74 73 65 67 20 2D 2D 20 47 65 74 20 ♪◙; Name getseg -- Get 00000020 63 75 72 72 65 6E 74 20 53 65 67 6D 65 6E 74 20 56 61 6C 75 65 73 0D 0A 3B 0D 0A 3B 0D 0A 3B 20 current Segment Values♪◙;♪◙;♪◙; 00000040 53 79 6E 6F 70 73 69 73 20 20 20 20 20 20 67 65 74 73 65 67 28 70 63 73 2C 20 70 64 73 2C 20 70 Synopsis getseg(pcs, pds, p 00000060 65 73 2C 20 70 73 73 2C 20 70 73 69 2C 20 70 64 69 2C 20 70 73 70 2C 20 70 66 6C 61 67 29 3B 0D es, pss, psi, pdi, psp, pflag);♪ 00000080 0A 3B 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6E 73 69 67 6E 65 64 20 2A 63 73 ◙;♪◙; unsigned *cs 000000A0 20 50 6F 69 6E 74 65 72 20 74 6F 20 77 68 65 72 65 20 63 6F 64 65 20 73 65 67 6D 65 6E 74 20 61 Pointer to where code segment a 000000C0 64 64 72 65 73 73 20 67 6F 65 73 20 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6E ddress goes ♪◙; un 000000E0 73 69 67 6E 65 64 20 2A 64 73 20 50 6F 69 6E 74 65 72 20 74 6F 20 64 61 74 61 20 73 65 67 6D 65 signed *ds Pointer to data segme 00000100 6E 74 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6E 73 69 67 6E 65 64 20 2A 65 73 nt♪◙; unsigned *es 00000120 20 50 6F 69 6E 74 65 72 20 74 6F 20 65 78 74 72 61 20 73 65 67 6D 65 6E 74 0D 0A 3B 20 20 20 20 Pointer to extra segment♪◙; 00000140 20 20 20 20 20 20 20 20 20 20 20 75 6E 73 69 67 6E 65 64 20 2A 73 73 20 50 6F 69 6E 74 65 72 20 unsigned *ss Pointer 00000160 74 6F 20 73 74 61 63 6B 20 73 65 67 6D 65 6E 74 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 to stack segment♪◙; 00000180 20 20 75 6E 73 69 67 6E 65 64 20 2A 73 69 20 50 6F 69 6E 74 65 72 20 74 6F 20 73 69 20 72 65 67 unsigned *si Pointer to si reg 000001A0 69 73 74 65 72 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6E 73 69 67 6E 65 64 20 ister♪◙; unsigned 000001C0 2A 64 69 20 50 6F 69 6E 74 65 72 20 74 6F 20 64 69 20 72 65 67 69 73 74 65 72 0D 0A 3B 20 20 20 *di Pointer to di register♪◙; 000001E0 20 20 20 20 20 20 20 20 20 20 20 20 75 6E 73 69 67 6E 65 64 20 2A 73 70 20 50 6F 69 6E 74 65 72 unsigned *sp Pointer 00000200 20 74 6F 20 73 70 20 72 65 67 69 73 74 65 72 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 to sp register♪◙; 00000220 20 75 6E 73 69 67 6E 65 64 20 2A 66 6C 61 67 20 52 65 74 75 72 6E 73 20 66 6C 61 67 0D 0A 3B 0D unsigned *flag Returns flag♪◙;♪ 00000240 0A 3B 0D 0A 3B 20 52 65 74 75 72 6E 73 20 20 20 20 20 20 20 63 73 20 20 20 20 20 20 20 20 20 20 ◙;♪◙; Returns cs 00000260 20 20 20 20 76 61 6C 75 65 20 6F 66 20 43 6F 64 65 20 73 65 67 6D 65 6E 74 0D 0A 3B 20 20 20 20 value of Code segment♪◙; 00000280 20 20 20 20 20 20 20 20 20 20 20 64 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6C 75 65 ds value 000002A0 20 6F 66 20 44 61 74 61 20 73 65 67 6D 65 6E 74 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 of Data segment♪◙; 000002C0 20 20 65 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6C 75 65 20 6F 66 20 45 78 74 72 61 es value of Extra 000002E0 20 73 65 67 6D 65 6E 74 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 73 20 20 20 20 segment♪◙; ss 00000300 20 20 20 20 20 20 20 20 20 20 76 61 6C 75 65 20 6F 66 20 53 74 61 63 6B 20 73 65 67 6D 65 6E 74 value of Stack segment 00000320 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 20 20 20 20 20 20 20 20 20 20 20 20 ♪◙; si 00000340 20 20 76 61 6C 75 65 20 6F 66 20 53 49 20 72 65 67 69 73 74 65 72 20 2A 2A 2A 2A 4E 4F 54 20 52 value of SI register ****NOT R 00000360 45 4C 49 41 42 4C 45 2A 2A 2A 2A 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 20 ELIABLE****♪◙; di 00000380 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6C 75 65 20 6F 66 20 44 49 20 72 65 67 69 73 74 65 value of DI registe 000003A0 72 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 20 20 20 20 20 20 20 20 20 20 20 r♪◙; sp 000003C0 20 20 20 76 61 6C 75 65 20 6F 66 20 53 74 61 63 6B 20 50 6F 69 6E 74 65 72 0D 0A 3B 20 20 20 20 value of Stack Pointer♪◙; 000003E0 20 20 20 20 20 20 20 20 20 20 20 66 6C 61 67 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6C 75 65 flag value 00000400 20 6F 66 20 46 6C 61 67 73 20 72 65 67 69 73 74 65 72 0D 0A 3B 20 20 20 20 20 20 20 20 20 20 20 of Flags register♪◙; 00000420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 3B 20 20 20 20 20 20 20 ♪◙; 00000440 0D 0A 3B 20 20 20 20 20 20 20 0D 0A 0D 0A 0D 0A 70 67 72 6F 75 70 20 20 67 72 6F 75 70 20 20 20 ♪◙; ♪◙♪◙♪◙pgroup group 00000460 20 70 72 6F 67 0D 0A 70 72 6F 67 20 20 20 20 73 65 67 6D 65 6E 74 20 20 62 79 74 65 20 70 75 62 prog♪◙prog segment byte pub 00000480 6C 69 63 20 27 50 52 4F 47 27 20 3B 20 43 6F 6D 62 69 6E 65 20 77 69 74 68 20 43 20 27 50 52 4F lic 'PROG' ; Combine with C 'PRO 000004A0 47 27 20 70 72 6F 67 72 61 6D 20 73 65 67 6D 65 6E 74 0D 0A 20 20 20 20 20 20 20 20 61 73 73 75 G' program segment♪◙ assu 000004C0 6D 65 20 20 20 63 73 3A 70 67 72 6F 75 70 0D 0A 20 20 20 20 20 20 20 20 70 75 62 6C 69 63 20 20 me cs:pgroup♪◙ public 000004E0 20 67 65 74 73 65 67 0D 0A 67 65 74 73 65 67 20 70 72 6F 63 20 20 20 20 20 6E 65 61 72 0D 0A 20 getseg♪◙getseg proc near♪◙ 00000500 20 20 20 20 20 20 20 70 75 73 68 20 20 20 20 20 62 70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 push bp 00000520 20 20 20 3B 20 53 61 76 65 20 74 68 65 20 66 72 61 6D 65 20 70 6F 69 6E 74 65 72 0D 0A 20 20 20 ; Save the frame pointer♪◙ 00000540 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 62 70 2C 73 70 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 mov bp,sp♪◙ mov 00000560 20 20 20 20 20 20 73 69 2C 5B 62 70 20 2B 20 30 34 5D 20 20 20 20 20 20 20 3B 20 47 65 74 20 74 si,[bp + 04] ; Get t 00000580 68 65 20 76 61 6C 75 65 73 20 66 6F 72 20 74 68 65 20 72 65 67 69 73 74 65 72 73 0D 0A 20 20 20 he values for the registers♪◙ 000005A0 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 61 78 2C 5B 73 69 5D 0D 0A 20 20 20 20 20 20 20 20 6D mov ax,[si]♪◙ m 000005C0 6F 76 20 20 20 20 20 20 73 69 2C 5B 62 70 20 2B 20 30 36 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F ov si,[bp + 06]♪◙ mo 000005E0 76 20 20 20 20 20 20 62 78 2C 20 5B 73 69 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 v bx, [si]♪◙ mov 00000600 20 20 73 69 2C 5B 62 70 20 2B 20 30 38 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 si,[bp + 08]♪◙ mov 00000620 20 63 78 2C 20 5B 73 69 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 73 69 2C 5B cx, [si]♪◙ mov si,[ 00000640 62 70 20 2B 20 31 30 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 64 78 2C 5B 73 bp + 10]♪◙ mov dx,[s 00000660 69 5D 0D 0A 3B 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D i]♪◙;=========================== 00000680 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================================ 000006A0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 ===================♪◙ mov 000006C0 20 61 78 2C 20 63 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 47 65 74 20 76 61 ax, cs ;Get va 000006E0 6C 75 65 20 6F 66 20 63 6F 64 65 20 73 65 67 6D 65 6E 74 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 lue of code segment♪◙ mov 00000700 20 62 78 2C 20 64 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 64 61 74 61 20 73 bx, ds ;data s 00000720 65 67 6D 65 6E 74 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 63 78 2C 20 65 73 20 20 20 20 20 20 egment♪◙ mov cx, es 00000740 20 20 20 20 20 20 20 20 20 20 20 20 3B 65 78 74 72 61 20 73 65 67 6D 65 6E 74 0D 0A 20 20 20 20 ;extra segment♪◙ 00000760 20 20 20 20 6D 6F 76 20 64 78 2C 20 73 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mov dx, ss 00000780 3B 73 74 61 63 6B 20 73 65 67 6D 65 6E 74 0D 0A 0D 0A 0D 0A 3B 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ;stack segment♪◙♪◙♪◙;=========== 000007A0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================================ 000007C0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================================ 000007E0 3D 3D 3D 0D 0A 0D 0A 75 72 65 74 3A 20 20 20 6D 6F 76 20 20 20 20 20 20 62 70 2C 73 70 20 20 20 ===♪◙♪◙uret: mov bp,sp 00000800 20 20 20 20 20 20 20 20 20 20 20 3B 20 4E 6F 77 20 72 65 63 6F 76 65 72 20 74 68 65 20 76 61 6C ; Now recover the val 00000820 75 65 73 20 6F 66 20 74 68 65 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 73 69 2C ues of the♪◙ mov si, 00000840 5B 62 70 20 2B 20 30 34 5D 20 20 20 20 20 20 20 3B 20 70 61 72 61 6D 65 74 65 72 73 0D 0A 20 20 [bp + 04] ; parameters♪◙ 00000860 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 5B 73 69 5D 2C 61 78 0D 0A 20 20 20 20 20 20 20 20 mov [si],ax♪◙ 00000880 6D 6F 76 20 20 20 20 20 20 73 69 2C 20 5B 62 70 20 2B 20 30 36 5D 0D 0A 20 20 20 20 20 20 20 20 mov si, [bp + 06]♪◙ 000008A0 6D 6F 76 20 20 20 20 20 20 5B 73 69 5D 2C 20 62 78 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 mov [si], bx♪◙ mov 000008C0 20 20 20 20 73 69 2C 20 5B 62 70 20 2B 20 30 38 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 si, [bp + 08]♪◙ mov 000008E0 20 20 20 20 5B 73 69 5D 2C 20 63 78 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 73 [si], cx♪◙ mov s 00000900 69 2C 20 5B 62 70 20 2B 20 31 30 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 5B i, [bp + 10]♪◙ mov [ 00000920 73 69 5D 2C 20 64 78 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 73 69 2C 20 5B 62 si], dx♪◙ mov si, [b 00000940 70 20 2B 20 31 32 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 5B 73 69 5D 2C 20 p + 12]♪◙ mov [si], 00000960 73 69 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 73 69 2C 20 5B 62 70 20 2B 20 31 si♪◙ mov si, [bp + 1 00000980 34 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 5B 73 69 5D 2C 20 64 69 0D 0A 20 4]♪◙ mov [si], di♪◙ 000009A0 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 73 69 2C 20 5B 62 70 20 2B 20 31 36 5D 0D 0A 20 mov si, [bp + 16]♪◙ 000009C0 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 5B 73 69 5D 2C 20 73 70 0D 0A 20 20 20 20 20 20 mov [si], sp♪◙ 000009E0 20 20 6D 6F 76 20 20 20 20 20 20 61 6C 2C 20 30 30 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 7A mov al, 00 ;z 00000A00 65 72 6F 20 6F 75 74 20 61 6C 0D 0A 20 20 20 20 20 20 20 20 6C 61 68 66 20 20 20 20 20 20 20 20 ero out al♪◙ lahf 00000A20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 6C 6F 61 64 20 66 6C 61 67 20 69 6E 74 6F 20 ;load flag into 00000A40 61 68 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 73 69 2C 20 5B 62 70 20 2B 20 31 ah♪◙ mov si, [bp + 1 00000A60 38 5D 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 5B 73 69 5D 2C 20 61 78 0D 0A 0D 8]♪◙ mov [si], ax♪◙♪ 00000A80 0A 0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20 20 20 20 61 78 2C 30 20 20 20 20 20 20 20 20 ◙♪◙ mov ax,0 00000AA0 20 20 20 20 20 20 20 3B 20 4E 6F 20 65 72 72 6F 72 0D 0A 0D 0A 71 75 69 74 3A 20 20 20 70 6F 70 ; No error♪◙♪◙quit: pop 00000AC0 20 20 20 20 20 20 62 70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 20 47 65 74 20 74 bp ; Get t 00000AE0 68 65 20 6F 72 69 67 69 6E 61 6C 20 66 72 61 6D 65 20 70 6F 69 6E 74 65 72 2E 0D 0A 20 20 20 20 he original frame pointer.♪◙ 00000B00 20 20 20 20 72 65 74 0D 0A 67 65 74 73 65 67 20 65 6E 64 70 0D 0A 70 72 6F 67 20 20 20 20 65 6E ret♪◙getseg endp♪◙prog en 00000B20 64 73 0D 0A 20 20 20 20 20 20 20 20 65 6E 64 0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ds♪◙ end♪◙............... 00000B40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 00000B60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................