Module: D:\SOURCE\TMP\FASTMEM\fmtest.cpp Group: 'DGROUP' CONST,CONST2,_DATA,_BSS Segment: fmtest_TEXT PARA 00000546 bytes #include "fastmem.hpp" #include #include #define BLOCKSIZE 4096U void memcpytest() { static unsigned char buf1[BLOCKSIZE]; static unsigned char buf2[BLOCKSIZE]; 0000 void far memcpytest(): 0000 53 push bx 0001 51 push cx 0002 52 push dx 0003 56 push si 0004 57 push di 0005 55 push bp 0006 89 e5 mov bp,sp 0008 83 ec 14 sub sp,0014H clock_t starttime = clock(); 000b 9a 00 00 00 00 call far clock_ 0010 89 46 fc mov -4H[bp],ax 0013 89 56 fe mov -2H[bp],dx 0016 16 push ss 0017 07 pop es for(unsigned i=0; i<10000; i++) { 0018 31 db xor bx,bx memcpy8(buf1 ,buf2, BLOCKSIZE); 001a b9 00 10 L1 mov cx,1000H 001d be 00 00 mov si,offset char unsigned far void far memcpytest()::.0::buf2[] 0020 bf 00 00 mov di,offset char unsigned far void far memcpytest()::.0::buf1[] 0023 8c d2 mov dx,ss 0025 9a 00 00 00 00 call far memcpy8_ memcpy8(buf1+1,buf2+1,BLOCKSIZE-1); 002a b9 ff 0f mov cx,0fffH 002d be 01 00 mov si,offset char unsigned far void far memcpytest()::.0::buf2[]+1H 0030 bf 01 00 mov di,offset char unsigned far void far memcpytest()::.0::buf1[]+1H 0033 8c d2 mov dx,ss 0035 9a 00 00 00 00 call far memcpy8_ memcpy8(buf1+2,buf2+2,BLOCKSIZE-2); 003a b9 fe 0f mov cx,0ffeH 003d be 02 00 mov si,offset char unsigned far void far memcpytest()::.0::buf2[]+2H 0040 bf 02 00 mov di,offset char unsigned far void far memcpytest()::.0::buf1[]+2H 0043 8c d2 mov dx,ss 0045 9a 00 00 00 00 call far memcpy8_ memcpy8(buf1+3,buf2+3,BLOCKSIZE-3); 004a b9 fd 0f mov cx,0ffdH 004d be 03 00 mov si,offset char unsigned far void far memcpytest()::.0::buf2[]+3H 0050 bf 03 00 mov di,offset char unsigned far void far memcpytest()::.0::buf1[]+3H 0053 8c d2 mov dx,ss } 0055 43 inc bx 0056 9a 00 00 00 00 call far memcpy8_ 005b 81 fb 10 27 cmp bx,2710H 005f 72 b9 jb L1 clock_t endtime = clock(); 0061 9a 00 00 00 00 call far clock_ 0066 c7 46 f0 00 00 mov word ptr -10H[bp],0000H 006b c7 46 f2 00 00 mov word ptr -0eH[bp],0000H double seconds=double(endtime-starttime)/CLK_TCK; 0070 2b 46 fc sub ax,-4H[bp] 0073 1b 56 fe sbb dx,-2H[bp] 0076 89 46 ec mov -14H[bp],ax 0079 89 56 ee mov -12H[bp],dx 007c 9b df 6e ec fild qword ptr -14H[bp] 0080 9b 36 dc 0e 00 00 fmul qword ptr ss:L51 0086 9b dd 5e f4 fstp qword ptr -0cH[bp] printf("memcpy test: %f seconds\n", seconds); unsigned long bytes=(BLOCKSIZE*4-1-2-3)*10000UL; unsigned long dwords=bytes/4; 008a 90 nop 008b 9b wait 008c ff 76 fa push -6H[bp] 008f ff 76 f8 push -8H[bp] 0092 ff 76 f6 push -0aH[bp] 0095 ff 76 f4 push -0cH[bp] 0098 b8 00 00 mov ax,seg L55 009b 50 push ax 009c b8 00 00 mov ax,offset L55 009f 50 push ax 00a0 9a 00 00 00 00 call far printf_ printf("bytes/sec : %f\n",bytes/seconds); 00a5 9b d9 e8 fld1 00a8 9b dc 76 f4 fdiv qword ptr -0cH[bp] 00ac 9b dd 56 ec fst qword ptr -14H[bp] 00b0 9b 36 dc 0e 08 00 fmul qword ptr ss:L52 00b6 83 c4 0c add sp,000cH 00b9 83 ec 08 sub sp,0008H 00bc 89 e3 mov bx,sp 00be 9b 36 dd 1f fstp qword ptr ss:[bx] 00c2 b8 00 00 mov ax,seg L55 00c5 50 push ax 00c6 b8 19 00 mov ax,offset L56 00c9 50 push ax 00ca 90 nop 00cb 9b wait 00cc 9a 00 00 00 00 call far printf_ printf("dwords/sec : %f\n",dwords/seconds); 00d1 9b dd 46 ec fld qword ptr -14H[bp] 00d5 9b 36 dc 0e 10 00 fmul qword ptr ss:L53 00db 83 c4 0c add sp,000cH 00de 83 ec 08 sub sp,0008H 00e1 89 e3 mov bx,sp 00e3 9b 36 dd 1f fstp qword ptr ss:[bx] 00e7 b8 00 00 mov ax,seg L55 00ea 50 push ax 00eb b8 2a 00 mov ax,offset L57 00ee 50 push ax 00ef 90 nop 00f0 9b wait 00f1 9a 00 00 00 00 call far printf_ printf("nsec/dword : %f\n",seconds*1000000000.0/dwords); 00f6 9b dd 46 f4 fld qword ptr -0cH[bp] 00fa 9b 36 dc 0e 18 00 fmul qword ptr ss:L54 0100 9b 36 dc 36 10 00 fdiv qword ptr ss:L53 0106 83 c4 0c add sp,000cH 0109 83 ec 08 sub sp,0008H 010c 89 e3 mov bx,sp 010e b8 00 00 mov ax,seg L55 0111 50 push ax 0112 b8 3b 00 mov ax,offset L58 0115 50 push ax 0116 9b 36 dd 1f fstp qword ptr ss:[bx] 011a 90 nop 011b 9b wait 011c 9a 00 00 00 00 call far printf_ 0121 83 c4 0c add sp,000cH } union { unsigned long m32[32]; unsigned int m16[64]; unsigned char m8[128]; } m; unsigned safety[8]; 0124 89 ec mov sp,bp 0126 5d pop bp 0127 5f pop di 0128 5e pop si 0129 5a pop dx 012a 59 pop cx 012b 5b pop bx 012c cb retf 012d fc cld void disp(void) { 012e 53 void far disp() push bx 012f 51 push cx 0130 52 push dx 0131 56 push si 0132 57 push di 0133 be 4c 00 mov si,offset L59 0136 bf 00 00 mov di,seg L55 for(int b=0; b<128; b+=16) { for(int o=0; o<16; o++) printf("%02X",m.m8[b+o]); 0139 31 c9 xor cx,cx 013b eb 19 jmp L3 printf("\n"); 013d b8 00 00 L2 mov ax,seg L55 0140 50 push ax 0141 b8 51 00 mov ax,offset L60 0144 50 push ax } 0145 83 c1 10 add cx,0010H 0148 9a 00 00 00 00 call far printf_ 014d 83 c4 04 add sp,0004H 0150 81 f9 80 00 cmp cx,0080H 0154 7d 20 jge L5 0156 89 ca L3 mov dx,cx 0158 89 cb mov bx,cx 015a 83 c2 10 add dx,0010H 015d 36 8a 87 00 00 L4 mov al,ss:__a92h0m far m[bx] 0162 30 e4 xor ah,ah 0164 50 push ax 0165 57 push di 0166 56 push si 0167 43 inc bx 0168 9a 00 00 00 00 call far printf_ 016d 83 c4 06 add sp,0006H 0170 39 d3 cmp bx,dx 0172 74 c9 je L2 0174 eb e7 jmp L4 if(safety[0]) printf("bug!\n"); 0176 36 83 3e 00 00 00 L5 cmp word ptr ss:int unsigned far safety[],0000H 017c 74 10 je L6 017e b8 00 00 mov ax,seg L55 0181 50 push ax 0182 b8 53 00 mov ax,offset L61 0185 50 push ax 0186 9a 00 00 00 00 call far printf_ 018b 83 c4 04 add sp,0004H printf("\n"); 018e b8 00 00 L6 mov ax,seg L55 0191 50 push ax 0192 b8 59 00 mov ax,offset L62 0195 50 push ax 0196 9a 00 00 00 00 call far printf_ 019b 83 c4 04 add sp,0004H } 019e 5f pop di 019f 5e pop si 01a0 5a pop dx 01a1 59 pop cx 01a2 5b pop bx 01a3 cb retf void main(void) { 01a4 53 main_ push bx 01a5 51 push cx 01a6 52 push dx 01a7 56 push si 01a8 57 push di safety[0]=0; 01a9 36 c7 06 00 00 00 00 mov word ptr ss:int unsigned far safety[],0000H memset8(&m,0,sizeof(m)); memset8(m.m8 ,27,sizeof(m)-4); disp(); 01b0 b9 80 00 mov cx,0080H 01b3 bf 00 00 mov di,offset __a92h0m far m 01b6 8c d2 mov dx,ss 01b8 31 c0 xor ax,ax 01ba 8e c2 mov es,dx 01bc e3 30 jcxz L9 01be 88 c4 mov ah,al 01c0 89 c2 mov dx,ax 01c2 66 c1 e0 10 shl eax,10H 01c6 89 d0 mov ax,dx 01c8 fc cld 01c9 f7 c7 01 00 test di,0001H 01cd 74 04 je L7 01cf aa stosb 01d0 49 dec cx 01d1 74 1b je L9 01d3 f7 c7 02 00 L7 test di,0002H 01d7 74 06 je L8 01d9 aa stosb 01da 49 dec cx 01db 74 11 je L9 01dd aa stosb 01de 49 dec cx 01df 89 ca L8 mov dx,cx 01e1 c1 e9 02 shr cx,02H 01e4 f3 66 ab repe stosd 01e7 89 d1 mov cx,dx 01e9 83 e1 03 and cx,0003H 01ec f3 aa repe stosb 01ee b9 7c 00 L9 mov cx,007cH 01f1 b8 1b 00 mov ax,001bH 01f4 bf 00 00 mov di,offset __a92h0m far m 01f7 be 4c 00 mov si,offset L59 01fa e3 30 jcxz L12 01fc 88 c4 mov ah,al 01fe 89 c2 mov dx,ax 0200 66 c1 e0 10 shl eax,10H 0204 89 d0 mov ax,dx 0206 fc cld 0207 f7 c7 01 00 test di,0001H 020b 74 04 je L10 020d aa stosb 020e 49 dec cx 020f 74 1b je L12 0211 f7 c7 02 00 L10 test di,0002H 0215 74 06 je L11 0217 aa stosb 0218 49 dec cx 0219 74 11 je L12 021b aa stosb 021c 49 dec cx 021d 89 ca L11 mov dx,cx 021f c1 e9 02 shr cx,02H 0222 f3 66 ab repe stosd 0225 89 d1 mov cx,dx 0227 83 e1 03 and cx,0003H 022a f3 aa repe stosb 022c 31 ff L12 xor di,di 022e eb 19 jmp L14 0230 ba 00 00 L13 mov dx,seg L55 0233 52 push dx 0234 ba 51 00 mov dx,offset L60 0237 52 push dx 0238 83 c7 10 add di,0010H 023b 9a 00 00 00 00 call far printf_ 0240 83 c4 04 add sp,0004H 0243 81 ff 80 00 cmp di,0080H 0247 7d 23 jge L16 0249 89 f9 L14 mov cx,di 024b 89 fb mov bx,di 024d 83 c1 10 add cx,0010H 0250 36 8a 97 00 00 L15 mov dl,ss:__a92h0m far m[bx] 0255 30 f6 xor dh,dh 0257 52 push dx 0258 ba 00 00 mov dx,seg L55 025b 52 push dx 025c 56 push si 025d 43 inc bx 025e 9a 00 00 00 00 call far printf_ 0263 83 c4 06 add sp,0006H 0266 39 cb cmp bx,cx 0268 74 c6 je L13 026a eb e4 jmp L15 026c 36 83 3e 00 00 00 L16 cmp word ptr ss:int unsigned far safety[],0000H 0272 74 10 je L17 0274 ba 00 00 mov dx,seg L55 0277 52 push dx 0278 ba 53 00 mov dx,offset L61 027b 52 push dx 027c 9a 00 00 00 00 call far printf_ 0281 83 c4 04 add sp,0004H 0284 ba 00 00 L17 mov dx,seg L55 0287 52 push dx 0288 ba 59 00 mov dx,offset L62 memset8(&m,0,sizeof(m)); memset8(m.m8+1,27,sizeof(m)-4); disp(); 028b b9 80 00 mov cx,0080H 028e 52 push dx 028f bf 00 00 mov di,offset __a92h0m far m 0292 9a 00 00 00 00 call far printf_ 0297 83 c4 04 add sp,0004H 029a 8c d2 mov dx,ss 029c 31 c0 xor ax,ax 029e 8e c2 mov es,dx 02a0 e3 30 jcxz L20 02a2 88 c4 mov ah,al 02a4 89 c2 mov dx,ax 02a6 66 c1 e0 10 shl eax,10H 02aa 89 d0 mov ax,dx 02ac fc cld 02ad f7 c7 01 00 test di,0001H 02b1 74 04 je L18 02b3 aa stosb 02b4 49 dec cx 02b5 74 1b je L20 02b7 f7 c7 02 00 L18 test di,0002H 02bb 74 06 je L19 02bd aa stosb 02be 49 dec cx 02bf 74 11 je L20 02c1 aa stosb 02c2 49 dec cx 02c3 89 ca L19 mov dx,cx 02c5 c1 e9 02 shr cx,02H 02c8 f3 66 ab repe stosd 02cb 89 d1 mov cx,dx 02cd 83 e1 03 and cx,0003H 02d0 f3 aa repe stosb 02d2 b9 7c 00 L20 mov cx,007cH 02d5 b8 1b 00 mov ax,001bH 02d8 bf 01 00 mov di,offset __a92h0m far m+1H 02db e3 30 jcxz L23 02dd 88 c4 mov ah,al 02df 89 c2 mov dx,ax 02e1 66 c1 e0 10 shl eax,10H 02e5 89 d0 mov ax,dx 02e7 fc cld 02e8 f7 c7 01 00 test di,0001H 02ec 74 04 je L21 02ee aa stosb 02ef 49 dec cx 02f0 74 1b je L23 02f2 f7 c7 02 00 L21 test di,0002H 02f6 74 06 je L22 02f8 aa stosb 02f9 49 dec cx 02fa 74 11 je L23 02fc aa stosb 02fd 49 dec cx 02fe 89 ca L22 mov dx,cx 0300 c1 e9 02 shr cx,02H 0303 f3 66 ab repe stosd 0306 89 d1 mov cx,dx 0308 83 e1 03 and cx,0003H 030b f3 aa repe stosb 030d 31 ff L23 xor di,di 030f be 00 00 mov si,seg L55 0312 eb 19 jmp L25 0314 ba 00 00 L24 mov dx,seg L55 0317 52 push dx 0318 ba 51 00 mov dx,offset L60 031b 52 push dx 031c 83 c7 10 add di,0010H 031f 9a 00 00 00 00 call far printf_ 0324 83 c4 04 add sp,0004H 0327 81 ff 80 00 cmp di,0080H 032b 7d 23 jge L27 032d 89 f9 L25 mov cx,di 032f 89 fb mov bx,di 0331 83 c1 10 add cx,0010H 0334 36 8a 97 00 00 L26 mov dl,ss:__a92h0m far m[bx] 0339 30 f6 xor dh,dh 033b 52 push dx 033c 56 push si 033d ba 4c 00 mov dx,offset L59 0340 52 push dx 0341 43 inc bx 0342 9a 00 00 00 00 call far printf_ 0347 83 c4 06 add sp,0006H 034a 39 cb cmp bx,cx 034c 74 c6 je L24 034e eb e4 jmp L26 0350 36 83 3e 00 00 00 L27 cmp word ptr ss:int unsigned far safety[],0000H 0356 74 10 je L28 0358 ba 00 00 mov dx,seg L55 035b 52 push dx 035c ba 53 00 mov dx,offset L61 035f 52 push dx 0360 9a 00 00 00 00 call far printf_ 0365 83 c4 04 add sp,0004H 0368 ba 00 00 L28 mov dx,seg L55 036b 52 push dx 036c ba 59 00 mov dx,offset L62 memset8(&m,0,sizeof(m)); memset8(m.m8+2,27,sizeof(m)-4); disp(); 036f b9 80 00 mov cx,0080H 0372 52 push dx 0373 bf 00 00 mov di,offset __a92h0m far m 0376 9a 00 00 00 00 call far printf_ 037b 83 c4 04 add sp,0004H 037e 8c d2 mov dx,ss 0380 31 c0 xor ax,ax 0382 8e c2 mov es,dx 0384 e3 30 jcxz L31 0386 88 c4 mov ah,al 0388 89 c2 mov dx,ax 038a 66 c1 e0 10 shl eax,10H 038e 89 d0 mov ax,dx 0390 fc cld 0391 f7 c7 01 00 test di,0001H 0395 74 04 je L29 0397 aa stosb 0398 49 dec cx 0399 74 1b je L31 039b f7 c7 02 00 L29 test di,0002H 039f 74 06 je L30 03a1 aa stosb 03a2 49 dec cx 03a3 74 11 je L31 03a5 aa stosb 03a6 49 dec cx 03a7 89 ca L30 mov dx,cx 03a9 c1 e9 02 shr cx,02H 03ac f3 66 ab repe stosd 03af 89 d1 mov cx,dx 03b1 83 e1 03 and cx,0003H 03b4 f3 aa repe stosb 03b6 b9 7c 00 L31 mov cx,007cH 03b9 b8 1b 00 mov ax,001bH 03bc bf 02 00 mov di,offset __a92h0m far m+2H 03bf e3 30 jcxz L34 03c1 88 c4 mov ah,al 03c3 89 c2 mov dx,ax 03c5 66 c1 e0 10 shl eax,10H 03c9 89 d0 mov ax,dx 03cb fc cld 03cc f7 c7 01 00 test di,0001H 03d0 74 04 je L32 03d2 aa stosb 03d3 49 dec cx 03d4 74 1b je L34 03d6 f7 c7 02 00 L32 test di,0002H 03da 74 06 je L33 03dc aa stosb 03dd 49 dec cx 03de 74 11 je L34 03e0 aa stosb 03e1 49 dec cx 03e2 89 ca L33 mov dx,cx 03e4 c1 e9 02 shr cx,02H 03e7 f3 66 ab repe stosd 03ea 89 d1 mov cx,dx 03ec 83 e1 03 and cx,0003H 03ef f3 aa repe stosb 03f1 31 ff L34 xor di,di 03f3 be 00 00 mov si,seg L55 03f6 eb 19 jmp L36 03f8 ba 00 00 L35 mov dx,seg L55 03fb 52 push dx 03fc ba 51 00 mov dx,offset L60 03ff 52 push dx 0400 83 c7 10 add di,0010H 0403 9a 00 00 00 00 call far printf_ 0408 83 c4 04 add sp,0004H 040b 81 ff 80 00 cmp di,0080H 040f 7d 23 jge L38 0411 89 f9 L36 mov cx,di 0413 89 fb mov bx,di 0415 83 c1 10 add cx,0010H 0418 36 8a 97 00 00 L37 mov dl,ss:__a92h0m far m[bx] 041d 30 f6 xor dh,dh 041f 52 push dx 0420 56 push si 0421 ba 4c 00 mov dx,offset L59 0424 52 push dx 0425 43 inc bx 0426 9a 00 00 00 00 call far printf_ 042b 83 c4 06 add sp,0006H 042e 39 cb cmp bx,cx 0430 74 c6 je L35 0432 eb e4 jmp L37 0434 36 83 3e 00 00 00 L38 cmp word ptr ss:int unsigned far safety[],0000H 043a 74 10 je L39 043c ba 00 00 mov dx,seg L55 043f 52 push dx 0440 ba 53 00 mov dx,offset L61 0443 52 push dx 0444 9a 00 00 00 00 call far printf_ 0449 83 c4 04 add sp,0004H 044c ba 00 00 L39 mov dx,seg L55 044f 52 push dx 0450 ba 59 00 mov dx,offset L62 memset8(&m,0,sizeof(m)); memset8(m.m8+3,27,sizeof(m)-4); disp(); // memset16(&m,0,sizeof(m)/2); memset16(m.m8 ,0x2827,sizeof(m)/2-2); disp(); // memset16(&m,0,sizeof(m)/2); memset16(m.m8+1,0x2827,sizeof(m)/2-2); disp(); // memset16(&m,0,sizeof(m)/2); memset16(m.m8+2,0x2827,sizeof(m)/2-2); disp(); // memset16(&m,0,sizeof(m)/2); memset16(m.m8+3,0x2827,sizeof(m)/2-2); disp(); // memset16(&m,0,sizeof(m)/2); memset16(m.m8 ,0x2827,sizeof(m)/2-3); disp(); // memset16(&m,0,sizeof(m)/2); memset16(m.m8+1,0x2827,sizeof(m)/2-3); disp(); // memset16(&m,0,sizeof(m)/2); memset16(m.m8+2,0x2827,sizeof(m)/2-3); disp(); // memset16(&m,0,sizeof(m)/2); memset16(m.m8+3,0x2827,sizeof(m)/2-3); disp(); // memset32(&m,0,sizeof(m)/4); memset32(m.m8 ,0x28272625L,sizeof(m)/4-1); disp(); // memset32(&m,0,sizeof(m)/4); memset32(m.m8+1,0x28272625L,sizeof(m)/4-1); disp(); // memset32(&m,0,sizeof(m)/4); memset32(m.m8+2,0x28272625L,sizeof(m)/4-1); disp(); // memset32(&m,0,sizeof(m)/4); memset32(m.m8+3,0x28272625L,sizeof(m)/4-1); disp(); // memcpytest(); 0453 b9 80 00 mov cx,0080H 0456 52 push dx 0457 bf 00 00 mov di,offset __a92h0m far m 045a 9a 00 00 00 00 call far printf_ 045f 83 c4 04 add sp,0004H 0462 8c d2 mov dx,ss 0464 31 c0 xor ax,ax 0466 8e c2 mov es,dx 0468 e3 30 jcxz L42 046a 88 c4 mov ah,al 046c 89 c2 mov dx,ax 046e 66 c1 e0 10 shl eax,10H 0472 89 d0 mov ax,dx 0474 fc cld 0475 f7 c7 01 00 test di,0001H 0479 74 04 je L40 047b aa stosb 047c 49 dec cx 047d 74 1b je L42 047f f7 c7 02 00 L40 test di,0002H 0483 74 06 je L41 0485 aa stosb 0486 49 dec cx 0487 74 11 je L42 0489 aa stosb 048a 49 dec cx 048b 89 ca L41 mov dx,cx 048d c1 e9 02 shr cx,02H 0490 f3 66 ab repe stosd 0493 89 d1 mov cx,dx 0495 83 e1 03 and cx,0003H 0498 f3 aa repe stosb 049a b9 7c 00 L42 mov cx,007cH 049d b8 1b 00 mov ax,001bH 04a0 bf 03 00 mov di,offset __a92h0m far m+3H 04a3 e3 30 jcxz L45 04a5 88 c4 mov ah,al 04a7 89 c2 mov dx,ax 04a9 66 c1 e0 10 shl eax,10H 04ad 89 d0 mov ax,dx 04af fc cld 04b0 f7 c7 01 00 test di,0001H 04b4 74 04 je L43 04b6 aa stosb 04b7 49 dec cx 04b8 74 1b je L45 04ba f7 c7 02 00 L43 test di,0002H 04be 74 06 je L44 04c0 aa stosb 04c1 49 dec cx 04c2 74 11 je L45 04c4 aa stosb 04c5 49 dec cx 04c6 89 ca L44 mov dx,cx 04c8 c1 e9 02 shr cx,02H 04cb f3 66 ab repe stosd 04ce 89 d1 mov cx,dx 04d0 83 e1 03 and cx,0003H 04d3 f3 aa repe stosb 04d5 31 ff L45 xor di,di 04d7 be 00 00 mov si,seg L55 04da eb 19 jmp L47 04dc ba 00 00 L46 mov dx,seg L55 04df 52 push dx 04e0 ba 51 00 mov dx,offset L60 04e3 52 push dx 04e4 83 c7 10 add di,0010H 04e7 9a 00 00 00 00 call far printf_ 04ec 83 c4 04 add sp,0004H 04ef 81 ff 80 00 cmp di,0080H 04f3 7d 23 jge L49 04f5 89 f9 L47 mov cx,di 04f7 89 fb mov bx,di 04f9 83 c1 10 add cx,0010H 04fc 36 8a 97 00 00 L48 mov dl,ss:__a92h0m far m[bx] 0501 30 f6 xor dh,dh 0503 52 push dx 0504 56 push si 0505 ba 4c 00 mov dx,offset L59 0508 52 push dx 0509 43 inc bx 050a 9a 00 00 00 00 call far printf_ 050f 83 c4 06 add sp,0006H 0512 39 cb cmp bx,cx 0514 74 c6 je L46 0516 eb e4 jmp L48 0518 36 83 3e 00 00 00 L49 cmp word ptr ss:int unsigned far safety[],0000H 051e 74 10 je L50 0520 ba 00 00 mov dx,seg L55 0523 52 push dx 0524 ba 53 00 mov dx,offset L61 0527 52 push dx 0528 9a 00 00 00 00 call far printf_ 052d 83 c4 04 add sp,0004H 0530 ba 00 00 L50 mov dx,seg L55 0533 52 push dx 0534 ba 59 00 mov dx,offset L62 0537 52 push dx 0538 9a 00 00 00 00 call far printf_ 053d 83 c4 04 add sp,0004H } 0540 5f pop di 0541 5e pop si 0542 5a pop dx 0543 59 pop cx 0544 5b pop bx 0545 cb retf No disassembly errors ------------------------------------------------------------ Segment: CONST WORD 00000020 bytes 0000 7b 14 ae 47 e1 7a 84 3f L51 - {..G.z.? 0008 00 00 00 40 2b 86 a3 41 L52 - ...@+..A 0010 00 00 00 40 2b 86 83 41 L53 - ...@+..A 0018 00 00 00 00 65 cd cd 41 L54 - ....e..A No disassembly errors ------------------------------------------------------------ Segment: _BSS WORD 00002090 bytes No disassembly errors ------------------------------------------------------------ Segment: fmtest_DATA1 WORD 0000005b bytes 0000 6d 65 6d 63 70 79 20 74 L55 - memcpy t 0008 65 73 74 3a 20 25 66 20 - est: %f 0010 73 65 63 6f 6e 64 73 0a - seconds. 0018 00 - . 0019 62 79 74 65 73 2f 73 65 L56 - bytes/se 0021 63 20 20 3a 20 25 66 0a - c : %f. 0029 00 - . 002a 64 77 6f 72 64 73 2f 73 L57 - dwords/s 0032 65 63 20 3a 20 25 66 0a - ec : %f. 003a 00 - . 003b 6e 73 65 63 2f 64 77 6f L58 - nsec/dwo 0043 72 64 20 3a 20 25 66 0a - rd : %f. 004b 00 - . 004c 25 30 32 58 00 L59 - %02X. 0051 0a 00 L60 - .. 0053 62 75 67 21 0a 00 L61 - bug!.. 0059 0a 00 L62 - .. No disassembly errors ------------------------------------------------------------