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 + -
显示快捷键?