list.cod

来自「模拟电梯程序」· COD 代码 · 共 1,647 行 · 第 1/4 页

COD
1,647
字号
	TITLE	C:\Documents and Settings\Administrator\桌面\07412 4 LIFT\list.c
	.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
_DATA	SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA	ENDS
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
_BSS	SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS	ENDS
$$SYMBOLS	SEGMENT BYTE USE32 'DEBSYM'
$$SYMBOLS	ENDS
$$TYPES	SEGMENT BYTE USE32 'DEBTYP'
$$TYPES	ENDS
_TLS	SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS	ENDS
;	COMDAT ??_C@_0BA@FILM@?G?k?J?d?H?k?$LK?t?$LN?P?G?k?G?s?3?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_02JBML@?$CFc?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT ??_C@_0BH@CIGK@?J?d?H?k?$LE?m?N?s?0?G?k?V?X?P?B?J?d?H?k?$KB?$KD?6?$AA@
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
;	COMDAT _GetInput1@4
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _translatecalling
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _Storenode
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _Deletenode
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
;	COMDAT _FreeNote
_TEXT	SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT	ENDS
FLAT	GROUP _DATA, CONST, _BSS
	ASSUME	CS: FLAT, DS: FLAT, SS: FLAT
endif
_DATA	SEGMENT
COMM	_ControlCallPTR:DWORD
COMM	_ControlPausePTR:DWORD
COMM	_StatusFloor:DWORD
COMM	_GoalFloor:DWORD
COMM	_n3:DWORD
COMM	_hEggs:DWORD:064H
_DATA	ENDS
PUBLIC	_translatecalling
PUBLIC	_GetInput1@4
PUBLIC	??_C@_0BA@FILM@?G?k?J?d?H?k?$LK?t?$LN?P?G?k?G?s?3?$AA@ ; `string'
PUBLIC	??_C@_02JBML@?$CFc?$AA@				; `string'
EXTRN	__iob:BYTE
EXTRN	_fflush:NEAR
EXTRN	_printf:NEAR
EXTRN	_scanf:NEAR
EXTRN	__chkesp:NEAR
;	COMDAT ??_C@_0BA@FILM@?G?k?J?d?H?k?$LK?t?$LN?P?G?k?G?s?3?$AA@
; File c:\documents and settings\administrator\桌面\07412 4 lift\list.c
CONST	SEGMENT
??_C@_0BA@FILM@?G?k?J?d?H?k?$LK?t?$LN?P?G?k?G?s?3?$AA@ DB 0c7H, 0ebH, 0caH
	DB	0e4H, 0c8H, 0ebH, 0baH, 0f4H, 0bdH, 0d0H, 0c7H, 0ebH, 0c7H, 0f3H
	DB	':', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_02JBML@?$CFc?$AA@
CONST	SEGMENT
??_C@_02JBML@?$CFc?$AA@ DB '%c', 00H			; `string'
CONST	ENDS
;	COMDAT _GetInput1@4
_TEXT	SEGMENT
_calling$ = -4
_GetInput1@4 PROC NEAR					; COMDAT

; 19   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 44	 sub	 esp, 68			; 00000044H
  00006	53		 push	 ebx
  00007	56		 push	 esi
  00008	57		 push	 edi
  00009	8d 7d bc	 lea	 edi, DWORD PTR [ebp-68]
  0000c	b9 11 00 00 00	 mov	 ecx, 17			; 00000011H
  00011	b8 cc cc cc cc	 mov	 eax, -858993460		; ccccccccH
  00016	f3 ab		 rep stosd
$L52943:

; 20   :     char calling;
; 21   : 	while(1){

  00018	b8 01 00 00 00	 mov	 eax, 1
  0001d	85 c0		 test	 eax, eax
  0001f	74 39		 je	 SHORT $L52944

; 22   :           printf("请输入呼叫请求:"); 

  00021	68 00 00 00 00	 push	 OFFSET FLAT:??_C@_0BA@FILM@?G?k?J?d?H?k?$LK?t?$LN?P?G?k?G?s?3?$AA@ ; `string'
  00026	e8 00 00 00 00	 call	 _printf
  0002b	83 c4 04	 add	 esp, 4

; 23   : 		  scanf("%c",&calling);

  0002e	8d 4d fc	 lea	 ecx, DWORD PTR _calling$[ebp]
  00031	51		 push	 ecx
  00032	68 00 00 00 00	 push	 OFFSET FLAT:??_C@_02JBML@?$CFc?$AA@ ; `string'
  00037	e8 00 00 00 00	 call	 _scanf
  0003c	83 c4 08	 add	 esp, 8

; 24   : 		  translatecalling(calling);/*翻译命令*/

  0003f	8a 55 fc	 mov	 dl, BYTE PTR _calling$[ebp]
  00042	52		 push	 edx
  00043	e8 00 00 00 00	 call	 _translatecalling
  00048	83 c4 04	 add	 esp, 4

; 25   : 		  fflush(stdin);

  0004b	68 00 00 00 00	 push	 OFFSET FLAT:__iob
  00050	e8 00 00 00 00	 call	 _fflush
  00055	83 c4 04	 add	 esp, 4

; 26   : 	}

  00058	eb be		 jmp	 SHORT $L52943
$L52944:

; 27   : }

  0005a	5f		 pop	 edi
  0005b	5e		 pop	 esi
  0005c	5b		 pop	 ebx
  0005d	83 c4 44	 add	 esp, 68			; 00000044H
  00060	3b ec		 cmp	 ebp, esp
  00062	e8 00 00 00 00	 call	 __chkesp
  00067	8b e5		 mov	 esp, ebp
  00069	5d		 pop	 ebp
  0006a	c2 04 00	 ret	 4
_GetInput1@4 ENDP
_TEXT	ENDS
PUBLIC	_Storenode
;	COMDAT _translatecalling
_TEXT	SEGMENT
_command$ = 8
_direction$ = -4
_floor$ = -8
_translatecalling PROC NEAR				; COMDAT

; 33   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 4c	 sub	 esp, 76			; 0000004cH
  00006	53		 push	 ebx
  00007	56		 push	 esi
  00008	57		 push	 edi
  00009	8d 7d b4	 lea	 edi, DWORD PTR [ebp-76]
  0000c	b9 13 00 00 00	 mov	 ecx, 19			; 00000013H
  00011	b8 cc cc cc cc	 mov	 eax, -858993460		; ccccccccH
  00016	f3 ab		 rep stosd

; 34   :     int direction,floor;//direction=1外部有向上呼叫,direction=2外部有向下呼叫 ,direction=0内部呼叫.floor代表呼叫楼层*/  
; 35   :     switch(command)
; 36   :     {

  00018	0f be 45 08	 movsx	 eax, BYTE PTR _command$[ebp]
  0001c	89 45 f4	 mov	 DWORD PTR -12+[ebp], eax
  0001f	8b 4d f4	 mov	 ecx, DWORD PTR -12+[ebp]
  00022	83 e9 31	 sub	 ecx, 49			; 00000031H
  00025	89 4d f4	 mov	 DWORD PTR -12+[ebp], ecx
  00028	83 7d f4 48	 cmp	 DWORD PTR -12+[ebp], 72	; 00000048H
  0002c	0f 87 d0 01 00
	00		 ja	 $L52953
  00032	8b 45 f4	 mov	 eax, DWORD PTR -12+[ebp]
  00035	33 d2		 xor	 edx, edx
  00037	8a 90 00 00 00
	00		 mov	 dl, BYTE PTR $L53096[eax]
  0003d	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $L53097[edx*4]
$L52956:

; 37   :         /*内部呼叫*/
; 38   :         case '1':
; 39   :                direction=0;

  00044	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 40   :                floor=1;

  0004b	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 1

; 41   :                break;

  00052	e9 ab 01 00 00	 jmp	 $L52953
$L52957:

; 42   :         case '2':
; 43   :                direction=0;

  00057	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 44   :                floor=2;

  0005e	c7 45 f8 02 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 2

; 45   :                break;

  00065	e9 98 01 00 00	 jmp	 $L52953
$L52958:

; 46   :         case '3':
; 47   :                direction=0;

  0006a	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 48   :                floor=3;

  00071	c7 45 f8 03 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 3

; 49   :                break;

  00078	e9 85 01 00 00	 jmp	 $L52953
$L52959:

; 50   :         case '4':
; 51   :                direction=0;

  0007d	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 52   :                floor=4;

  00084	c7 45 f8 04 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 4

; 53   :                break;

  0008b	e9 72 01 00 00	 jmp	 $L52953
$L52960:

; 54   :         case '5':
; 55   :                direction=0;

  00090	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 56   :                floor=5;

  00097	c7 45 f8 05 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 5

; 57   :                break;

  0009e	e9 5f 01 00 00	 jmp	 $L52953
$L52961:

; 58   :         case '6':
; 59   :                direction=0;

  000a3	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 60   :                floor=6;

  000aa	c7 45 f8 06 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 6

; 61   :                break;

  000b1	e9 4c 01 00 00	 jmp	 $L52953
$L52962:

; 62   :         case '7':
; 63   :                direction=0;

  000b6	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 64   :                floor=7;

  000bd	c7 45 f8 07 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 7

; 65   :                break;

  000c4	e9 39 01 00 00	 jmp	 $L52953
$L52963:

; 66   :         case '8':
; 67   :                direction=0;

  000c9	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 68   :                floor=8;

  000d0	c7 45 f8 08 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 8

; 69   :                break;

  000d7	e9 26 01 00 00	 jmp	 $L52953
$L52964:

; 70   :         case '9':
; 71   :                direction=0;

  000dc	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 0

; 72   :                floor=9;

  000e3	c7 45 f8 09 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 9

; 73   :                break;

  000ea	e9 13 01 00 00	 jmp	 $L52953
$L52965:

; 74   :         /*外部呼叫  上行*/       
; 75   :                 
; 76   :         case 'q':
; 77   :                direction=1;                       

  000ef	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 1

; 78   :                floor=8;

  000f6	c7 45 f8 08 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 8

; 79   :                break;

  000fd	e9 00 01 00 00	 jmp	 $L52953
$L52966:

; 80   :         case 'w':
; 81   :                direction=1;                     

  00102	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 1

; 82   :                floor=7;

  00109	c7 45 f8 07 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 7

; 83   :                break;

  00110	e9 ed 00 00 00	 jmp	 $L52953
$L52967:

; 84   :         case 'e':
; 85   :                direction=1;                      

  00115	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 1

; 86   :                floor=6;

  0011c	c7 45 f8 06 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 6

; 87   :                break; 

  00123	e9 da 00 00 00	 jmp	 $L52953
$L52968:

; 88   :         case 'r':
; 89   :                direction=1;                      

  00128	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 1

; 90   :                floor=5;

  0012f	c7 45 f8 05 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 5

; 91   :                break;

  00136	e9 c7 00 00 00	 jmp	 $L52953
$L52969:

; 92   :         case 't':
; 93   :                direction=1;                     

  0013b	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _direction$[ebp], 1

; 94   :                floor=4;

  00142	c7 45 f8 04 00
	00 00		 mov	 DWORD PTR _floor$[ebp], 4

; 95   :                break;

  00149	e9 b4 00 00 00	 jmp	 $L52953

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?