c코드 덤프한건데 8086어셈블리로 100%복구할방법없을까요?
ifndef ??version
?debug macro
endm
$comm macro name,dist,size,count
comm dist name:BYTE:count*size
endm
else
$comm macro name,dist,size,count
comm dist name[size]:BYTE:count
endm
endif
?debug S "second.c"
?debug C E96D077D37087365636F6E642E63
?debug C E90018521815433A5C54435C494E434C5544455C737464696F2E68
?debug C E90018521815433A5C54435C494E434C5544455C5F646566732E68
?debug C E90018521815433A5C54435C494E434C5544455C5F6E756C6C2E68
?debug C E90018521816433A5C54435C494E434C5544455C737472696E672E+
?debug C 68
_TEXT segment byte public 'CODE'
_TEXT ends
DGROUP group _DATA,_BSS
assume cs:_TEXT,ds:DGROUP
_DATA segment word public 'DATA'
d@ label byte
d@w label word
_DATA ends
_BSS segment word public 'BSS'
b@ label byte
b@w label word
_BSS ends
_TEXT segment byte public 'CODE'
;
; void main() {
;
assume cs:_TEXT
_main proc near
push bp
mov bp,sp
sub sp,7638
push si
push di
;
; typedef struct memo* point;
; typedef struct memo {
; int regi , count;
; char operand0[4], operand1[4] ;
; char opcode[3] ;
; point link0 , link1 ;
; } memo ;
; char use_opcode[3] , use_operand[8] ;
; int add , count=0, decimal=1, sum=0;
;
mov word ptr [bp-16],0
mov word ptr [bp-18],1
mov word ptr [bp-20],0
;
; int number , i , j ;
; int mar , mbr , pc ;
; char ir[3] , re;
; memo memory[400] ;
; point temp1, temp2;
; for( i = 0 ; i < 400 ; i++ ) {
;
xor si,si
jmp short @1@114
@1@58:
;
; memory[i].count = 0 ;
;
mov ax,si
mov dx,19
imul dx
lea dx,word ptr [bp-7636]
add ax,dx
mov bx,ax
mov word ptr [bx],0
inc si
@1@114:
cmp si,400
jl short @1@58
@1@142:
;
;
; }
; while(1) {
; // print();
; scanf("%d",&number) ;
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@
push ax
call near ptr _scanf
pop cx
pop cx
;
; switch(number) {
;
mov ax,word ptr [bp-22]
cmp ax,1
je short @1@282
cmp ax,2
jne @@0
jmp @1@3978
@@0:
jmp @1@4482
@1@282:
;
; case 1 :
;
;
;
; // print1();
; while(1) {
; printf("명령어는 메모리 100. 200 까지 사용가능\n");
;
mov ax,offset DGROUP:s@+3
push ax
call near ptr _printf
pop cx
;
; printf("명령어 메모리 주소 입 력 : " );
;
mov ax,offset DGROUP:s@+43
push ax
call near ptr _printf
pop cx
;
; scanf( "%d" , &add );
;
lea ax,word ptr [bp-14]
push ax
mov ax,offset DGROUP:s@+71
push ax
call near ptr _scanf
pop cx
pop cx
;
; if ( add == -1 ) {
;
cmp word ptr [bp-14],65535
jne short @1@338
;
; break ;
;
jmp @1@3950
@1@338:
;
; }
; if ( add < 100 || add > 200 ) {
;
cmp word ptr [bp-14],100
jl short @1@394
cmp word ptr [bp-14],200
jle short @1@422
@1@394:
;
; continue ;
;
jmp @1@3922
@1@422:
;
; }
; printf( "명령어 입력 : ");
;
mov ax,offset DGROUP:s@+74
push ax
call near ptr _printf
pop cx
;
; scanf( "%s" , use_opcode);
;
lea ax,word ptr [bp-4]
push ax
mov ax,offset DGROUP:s@+89
push ax
call near ptr _scanf
pop cx
pop cx
;
; // 0O --------------------------------------.
; if( strcmp(use_opcode , "00" ) == 0) {
;
mov ax,offset DGROUP:s@+92
push ax
lea ax,word ptr [bp-4]
push ax
call near ptr _strcmp
pop cx
pop cx
or ax,ax
je @@1
jmp @1@1234
@@1:
;
; strcpy(memory[add].opcode , use_opcode) ;
;
lea ax,word ptr [bp-4]
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
call near ptr _strcpy
pop cx
pop cx
;
; printf("MOV R1,302<=이런 형식 으로 입력해 주세요.\n") ;
;
mov ax,offset DGROUP:s@+95
push ax
call near ptr _printf
pop cx
;
; printf("MOV ") ;
;
mov ax,offset DGROUP:s@+138
push ax
call near ptr _printf
pop cx
;
; scanf("%s" , use_operand);
;
lea ax,word ptr [bp-12]
push ax
mov ax,offset DGROUP:s@+143
push ax
call near ptr _scanf
pop cx
pop cx
;
; if ( strstr(use_operand ,"r0") !=0 || strstr(use_operand ,"R0") !=0 )
;
mov ax,offset DGROUP:s@+146
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@506
mov ax,offset DGROUP:s@+149
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@534
@1@506:
;
; {
; memory[add].link0 = &memory[301] ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
lea dx,word ptr [bp-1919]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp @1@814
@1@534:
;
; else if ( strstr(use_operand ,"r1") !=0 || strstr(use_operand ,"R1") !=0 )
;
mov ax,offset DGROUP:s@+152
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@590
mov ax,offset DGROUP:s@+155
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@618
@1@590:
;
; {
; memory[add].link0 = &memory[302] ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
lea dx,word ptr [bp-1900]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp @1@814
@1@618:
;
; else if ( strstr(use_operand ,"r2") !=0 || strstr(use_operand ,"R2") !=0 )
;
mov ax,offset DGROUP:s@+158
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@674
mov ax,offset DGROUP:s@+161
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@702
@1@674:
;
; {
; memory[add].link0 = &memory[303] ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
lea dx,word ptr [bp-1881]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp short @1@814
@1@702:
;
; else if ( strstr(use_operand ,"r3") !=0 || strstr(use_operand ,"R3") !=0 )
;
mov ax,offset DGROUP:s@+164
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@758
mov ax,offset DGROUP:s@+167
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@786
@1@758:
;
; {
; memory[add].link0 = &memory[304] ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
lea dx,word ptr [bp-1862]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp short @1@814
@1@786:
;
;
; else {
; printf(" 레지스터가 없습니 다. \n") ;
;
mov ax,offset DGROUP:s@+170
jmp @1@3166
@1@814:
;
; continue ;
; }
;
; sum=0;
;
mov word ptr [bp-20],0
;
;
; for( i=5; i>2 ; i--, decimal *= 10)
;
mov si,5
jmp short @1@898
@1@842:
;
; {
; sum = sum+ (( use_operand[i] -'0')*decimal);
;
mov al,byte ptr [bp+si-12]
cbw
add ax,65488
imul word ptr [bp-18]
mov dx,word ptr [bp-20]
add dx,ax
mov word ptr [bp-20],dx
dec si
mov dx,10
mov ax,word ptr [bp-18]
imul dx
mov word ptr [bp-18],ax
@1@898:
cmp si,2
jg short @1@842
;
; }
;
; decimal = 1;
;
mov word ptr [bp-18],1
;
;
;
; if( memory[sum].count == 0)
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7636]
add ax,dx
mov bx,ax
cmp word ptr [bx],0
jne short @1@982
;
; {
; printf("%d번지의 값을 입력 하세오 :", sum);
;
push word ptr [bp-20]
mov ax,offset DGROUP:s@+195
push ax
call near ptr _printf
pop cx
pop cx
;
; scanf("%d", &number);
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+223
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; memory[sum].regi = number;
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7638]
add ax,dx
mov dx,word ptr [bp-22]
mov bx,ax
mov word ptr [bx],dx
;
;
; memory[sum].count++;
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7636]
add ax,dx
mov bx,ax
inc word ptr [bx]
@1@982:
;
;
; }
;
;
; memory[add].link1 = &memory[sum];
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7638]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
mov bx,ax
pop ax
mov word ptr [bx],ax
;
;
;
; for(i=0; i<2; i++)
;
xor si,si
jmp short @1@1066
@1@1010:
;
; {
; memory[add].operand0[i] = use_operand[i];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
add ax,si
lea dx,word ptr [bp-7634]
add ax,dx
mov dl,byte ptr [bp+si-12]
mov bx,ax
mov byte ptr [bx],dl
inc si
@1@1066:
cmp si,2
jl short @1@1010
;
; }
; memory[add].link1 = &memory[sum];
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7638]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
mov bx,ax
pop ax
mov word ptr [bx],ax
;
;
; for(i=0; i<2; i++)
;
xor si,si
jmp short @1@1178
@1@1122:
;
; {
; memory[add].operand1[j] = use_operand[i];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
add ax,word ptr [bp-24]
lea dx,word ptr [bp-7630]
add ax,dx
mov dl,byte ptr [bp+si-12]
mov bx,ax
mov byte ptr [bx],dl
inc si
@1@1178:
cmp si,2
jl short @1@1122
;
; }
; memory[add].operand1[3] = NULL;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7627]
add ax,dx
mov bx,ax
mov byte ptr [bx],0
@1@1234:
;
; }
;
;
; if( strcmp(use_opcode, "01" ) == 0)
;
mov ax,offset DGROUP:s@+226
push ax
lea ax,word ptr [bp-4]
push ax
call near ptr _strcmp
pop cx
pop cx
or ax,ax
je @@2
jmp @1@2186
@@2:
;
; {
; strcpy(memory[add].opcode, use_opcode);
;
lea ax,word ptr [bp-4]
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
call near ptr _strcpy
pop cx
pop cx
;
; printf("MOV 320.r0 <=FORMAT\n");
;
mov ax,offset DGROUP:s@+229
push ax
call near ptr _printf
pop cx
;
; printf("MOV");
;
mov ax,offset DGROUP:s@+250
push ax
call near ptr _printf
pop cx
;
; scanf("%s", use_operand);
;
lea ax,word ptr [bp-12]
push ax
mov ax,offset DGROUP:s@+254
push ax
call near ptr _scanf
pop cx
pop cx
;
;
;
; sum=0;
;
mov word ptr [bp-20],0
;
;
;
; for(i=2 ;i>=0; i--, decimal *= 10)
;
mov si,2
jmp short @1@1346
@1@1290:
;
; {
; sum=sum+((use_operand[i]-'0')*decimal);
;
mov al,byte ptr [bp+si-12]
cbw
add ax,65488
imul word ptr [bp-18]
mov dx,word ptr [bp-20]
add dx,ax
mov word ptr [bp-20],dx
dec si
mov dx,10
mov ax,word ptr [bp-18]
imul dx
mov word ptr [bp-18],ax
@1@1346:
or si,si
jge short @1@1290
;
; }
;
;
; decimal=1;
;
mov word ptr [bp-18],1
;
;
; for(i=0; i<3; i++)
;
xor si,si
jmp short @1@1458
@1@1402:
;
; {
; memory[add].operand0[i] = use_operand[i];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
add ax,si
lea dx,word ptr [bp-7634]
add ax,dx
mov dl,byte ptr [bp+si-12]
mov bx,ax
mov byte ptr [bx],dl
inc si
@1@1458:
cmp si,3
jl short @1@1402
;
; }
;
; memory[add].operand0[3] = NULL;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7631]
add ax,dx
mov bx,ax
mov byte ptr [bx],0
;
;
; for(i=4, j=0; i<6; i++, j++)
;
mov si,4
mov word ptr [bp-24],0
jmp short @1@1570
@1@1514:
;
; {
; memory[add].operand1[j] = use_operand[i];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
add ax,word ptr [bp-24]
lea dx,word ptr [bp-7630]
add ax,dx
mov dl,byte ptr [bp+si-12]
mov bx,ax
mov byte ptr [bx],dl
inc si
inc word ptr [bp-24]
@1@1570:
cmp si,6
jl short @1@1514
;
; }
;
;
; memory[add].operand1[2] = NULL;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7628]
add ax,dx
mov bx,ax
mov byte ptr [bx],0
;
; memory[add].link0 = & memory[sum];
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7638]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
mov bx,ax
pop ax
mov word ptr [bx],ax
;
;
; if( strstr(use_operand, "r0" ) !=0 || strstr(use_operand, "R0") != 0)
;
mov ax,offset DGROUP:s@+257
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@1654
mov ax,offset DGROUP:s@+260
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@1738
@1@1654:
;
; {
; memory[add].link1 = &memory[301];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
lea dx,word ptr [bp-1919]
mov bx,ax
mov word ptr [bx],dx
;
;
; if(memory[301]. count == 0)
;
cmp word ptr [bp-1917],0
jne short @1@1710
;
; {
; printf("R0의 값을 입력 하세요 :");
;
mov ax,offset DGROUP:s@+263
push ax
call near ptr _printf
pop cx
;
; scanf("%d", &number);
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+287
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; memory[301].regi = number;
;
mov ax,word ptr [bp-22]
mov word ptr [bp-1919],ax
;
; memory[301].count++;
;
inc word ptr [bp-1917]
@1@1710:
;
; }
; }
;
jmp @1@2186
@1@1738:
;
;
;
; else if( strstr(use_operand, "r1" ) !=0 || strstr(use_operand, "R1") != 0)
;
mov ax,offset DGROUP:s@+290
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@1794
mov ax,offset DGROUP:s@+293
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@1878
@1@1794:
;
; {
; memory[add].link1 = &memory[302];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
lea dx,word ptr [bp-1900]
mov bx,ax
mov word ptr [bx],dx
;
;
; if(memory[302]. count == 0)
;
cmp word ptr [bp-1898],0
jne short @1@1850
;
; {
; printf("R1의 값을 입력 하세요 :");
;
mov ax,offset DGROUP:s@+296
push ax
call near ptr _printf
pop cx
;
; scanf("%d", &number);
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+320
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; memory[302].regi = number;
;
mov ax,word ptr [bp-22]
mov word ptr [bp-1900],ax
;
; memory[302].count++;
;
inc word ptr [bp-1898]
@1@1850:
;
; }
; }
;
jmp @1@2186
@1@1878:
;
;
;
; else if( strstr(use_operand, "r2" ) !=0 || strstr(use_operand, "R2") != 0)
;
mov ax,offset DGROUP:s@+323
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@1934
mov ax,offset DGROUP:s@+326
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@2018
@1@1934:
;
; {
; memory[add].link1 = &memory[303];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
lea dx,word ptr [bp-1881]
mov bx,ax
mov word ptr [bx],dx
;
;
; if(memory[303]. count == 0)
;
cmp word ptr [bp-1879],0
jne short @1@1990
;
; {
; printf("R2의 값을 입력 하세요 :");
;
mov ax,offset DGROUP:s@+329
push ax
call near ptr _printf
pop cx
;
; scanf("%d", &number);
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+353
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; memory[303].regi = number;
;
mov ax,word ptr [bp-22]
mov word ptr [bp-1881],ax
;
; memory[303].count++;
;
inc word ptr [bp-1879]
@1@1990:
;
; }
; }
;
jmp short @1@2186
@1@2018:
;
;
; else if( strstr(use_operand, "r3" ) !=0 || strstr(use_operand, "R3") != 0)
;
mov ax,offset DGROUP:s@+356
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@2074
mov ax,offset DGROUP:s@+359
push ax
lea ax,word ptr [bp-12]
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@2158
@1@2074:
;
; {
; memory[add].link1 = &memory[304];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
lea dx,word ptr [bp-1862]
mov bx,ax
mov word ptr [bx],dx
;
;
; if(memory[304]. count == 0)
;
cmp word ptr [bp-1860],0
jne short @1@2130
;
; {
; printf("R3의 값을 입력 하세요 :");
;
mov ax,offset DGROUP:s@+362
push ax
call near ptr _printf
pop cx
;
; scanf("%d", &number);
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+386
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; memory[304].regi = number;
;
mov ax,word ptr [bp-22]
mov word ptr [bp-1862],ax
;
; memory[304].count++;
;
inc word ptr [bp-1860]
@1@2130:
;
; }
; }
;
jmp short @1@2186
@1@2158:
;
;
;
;
;
; else {
; printf("없는 레지스터 입니다 \n");
;
mov ax,offset DGROUP:s@+389
jmp @1@3166
@1@2186:
;
; continue;
; }
; }
;
;
;
; // 입력이 10일떄
;
; if(strcmp(use_opcode, "10") == 0)
;
mov ax,offset DGROUP:s@+412
push ax
lea ax,word ptr [bp-4]
push ax
call near ptr _strcmp
pop cx
pop cx
or ax,ax
je @@3
jmp @1@3306
@@3:
;
; {
; strcpy(memory[add].opcode, use_opcode);
;
lea ax,word ptr [bp-4]
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
call near ptr _strcpy
pop cx
pop cx
;
;
; printf("ADD R1, R2 <= 이런 형식으로 입력해 주세요 \n");
;
mov ax,offset DGROUP:s@+415
push ax
call near ptr _printf
pop cx
;
; printf("ADD");
;
mov ax,offset DGROUP:s@+459
push ax
call near ptr _printf
pop cx
;
; scanf("%s", use_operand);
;
lea ax,word ptr [bp-12]
push ax
mov ax,offset DGROUP:s@+463
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; for(i=0; i<2; i++)
;
xor si,si
jmp short @1@2298
@1@2242:
;
; {
; memory[add].operand0[i]=use_operand[i];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
add ax,si
lea dx,word ptr [bp-7634]
add ax,dx
mov dl,byte ptr [bp+si-12]
mov bx,ax
mov byte ptr [bx],dl
inc si
@1@2298:
cmp si,2
jl short @1@2242
;
; }
; memory[add].operand0[2] = NULL;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7632]
add ax,dx
mov bx,ax
mov byte ptr [bx],0
;
; for(i=3, j=0; i<5; i++, j++)
;
mov si,3
mov word ptr [bp-24],0
jmp short @1@2410
@1@2354:
;
; {
; memory[add].operand1[j]=use_operand[i];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
add ax,word ptr [bp-24]
lea dx,word ptr [bp-7630]
add ax,dx
mov dl,byte ptr [bp+si-12]
mov bx,ax
mov byte ptr [bx],dl
inc si
inc word ptr [bp-24]
@1@2410:
cmp si,5
jl short @1@2354
;
; }
; memory[add].operand1[2]=NULL;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7628]
add ax,dx
mov bx,ax
mov byte ptr [bx],0
;
;
; if( strstr( memory[add].operand0, "r0" ) != 0 || strstr( memory[add].operand0, "R0" ) !=0)
;
mov ax,offset DGROUP:s@+466
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@2494
mov ax,offset DGROUP:s@+469
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@2522
@1@2494:
;
; {
; memory[add].link0 = & memory[301];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
lea dx,word ptr [bp-1919]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp @1@2802
@1@2522:
;
;
; else if( strstr(memory[add].operand0, "r1") !=0 || strstr(memory[add].operand0, "R1") !=0)
;
mov ax,offset DGROUP:s@+472
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@2578
mov ax,offset DGROUP:s@+475
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@2606
@1@2578:
;
; {
; memory[add].link0= &memory[302];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
lea dx,word ptr [bp-1900]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp @1@2802
@1@2606:
;
;
;
; else if( strstr(memory[add].operand0, "r2") !=0 || strstr(memory[add].operand0, "R2") !=0)
;
mov ax,offset DGROUP:s@+478
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@2662
mov ax,offset DGROUP:s@+481
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@2690
@1@2662:
;
; {
; memory[add].link0= &memory[303];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
lea dx,word ptr [bp-1881]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp short @1@2802
@1@2690:
;
;
; else if( strstr(memory[add].operand0, "r3") !=0 || strstr(memory[add].operand0, "R3") !=0)
;
mov ax,offset DGROUP:s@+484
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@2746
mov ax,offset DGROUP:s@+487
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@2774
@1@2746:
;
; {
; memory[add].link0= &memory[304];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
lea dx,word ptr [bp-1862]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp short @1@2802
@1@2774:
;
;
; else
; {
; printf("없는 레지스터 입니다 \n");
;
mov ax,offset DGROUP:s@+490
jmp @1@3166
@1@2802:
;
; continue;
; }
;
; if( strstr( memory[add].operand1, "r0" ) !=0 || strstr( memory[add].operand1, "R0") !=0)
;
mov ax,offset DGROUP:s@+513
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@2858
mov ax,offset DGROUP:s@+516
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@2886
@1@2858:
;
; {
; memory[add].link1 = &memory[301];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
lea dx,word ptr [bp-1919]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp short @1@2970
@1@2886:
;
;
; else if( strstr( memory[add].operand1, "r1" ) !=0 || strstr( memory[add].operand1, "R1") !=0)
;
mov ax,offset DGROUP:s@+519
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@2942
mov ax,offset DGROUP:s@+522
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@2970
@1@2942:
;
; {
; memory[add].link1 = &memory[302];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
lea dx,word ptr [bp-1900]
mov bx,ax
mov word ptr [bx],dx
@1@2970:
;
; }
;
; if( strstr( memory[add].operand1, "r2" ) !=0 || strstr( memory[add].operand1, "R2") !=0)
;
mov ax,offset DGROUP:s@+525
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@3026
mov ax,offset DGROUP:s@+528
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@3054
@1@3026:
;
; {
; memory[add].link1 = &memory[303];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
lea dx,word ptr [bp-1881]
mov bx,ax
mov word ptr [bx],dx
@1@3054:
;
; }
;
; if( strstr( memory[add].operand1, "r3" ) !=0 || strstr( memory[add].operand1, "R3") !=0)
;
mov ax,offset DGROUP:s@+531
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne short @1@3110
mov ax,offset DGROUP:s@+534
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
je short @1@3138
@1@3110:
;
; {
; memory[add].link1 = &memory[304];
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
lea dx,word ptr [bp-1862]
mov bx,ax
mov word ptr [bx],dx
;
; }
;
jmp short @1@3194
@1@3138:
;
;
; else {
; printf("없는 레지스터 입니다 \n");
;
mov ax,offset DGROUP:s@+537
@1@3166:
push ax
call near ptr _printf
pop cx
;
; continue;
;
jmp @1@3922
@1@3194:
;
; }
;
; temp1 = memory[add].link0;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
mov bx,ax
mov di,word ptr [bx]
;
; temp2 = memory[add].link1;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
mov bx,ax
mov ax,word ptr [bx]
mov word ptr [bp-38],ax
;
;
; if( temp1->count == 0)
;
cmp word ptr [di+2],0
jne short @1@3250
;
; {
; printf("%s의 값을 입력 하세요 :", memory[add].operand0 );
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
mov ax,offset DGROUP:s@+560
push ax
call near ptr _printf
pop cx
pop cx
;
; scanf("%d", &number);
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+584
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; temp1->regi = number ;
;
mov ax,word ptr [bp-22]
mov word ptr [di],ax
;
;
; temp1->count++ ;
;
inc word ptr [di+2]
@1@3250:
;
;
; }
;
;
; if ( temp2->count == 0 )
;
mov bx,word ptr [bp-38]
cmp word ptr [bx+2],0
jne short @1@3306
;
; {
; printf("%s의 값을 입력 하세요 : " ,
;
;
; memory[add].operand1 );
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7630]
add ax,dx
push ax
mov ax,offset DGROUP:s@+587
push ax
call near ptr _printf
pop cx
pop cx
;
;
; scanf("%d" , &number);
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+616
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; temp2->regi = number ;
;
mov bx,word ptr [bp-38]
mov ax,word ptr [bp-22]
mov word ptr [bx],ax
;
;
; temp2->count++ ;
;
mov bx,word ptr [bp-38]
inc word ptr [bx+2]
@1@3306:
;
;
;
; }
;
; }
;
;
;
; if( strcmp(use_opcode , "11" ) == 0 )
;
mov ax,offset DGROUP:s@+619
push ax
lea ax,word ptr [bp-4]
push ax
call near ptr _strcmp
pop cx
pop cx
or ax,ax
je @@4
jmp @1@3922
@@4:
;
; {
; strcpy(memory[add].opcode , use_opcode) ;
;
lea ax,word ptr [bp-4]
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
call near ptr _strcpy
pop cx
pop cx
;
; printf("ADD 302.201<= 이런 형식으로 입력해 주세요.\n");
;
mov ax,offset DGROUP:s@+622
push ax
call near ptr _printf
pop cx
;
; printf("ADD ") ;
;
mov ax,offset DGROUP:s@+666
push ax
call near ptr _printf
pop cx
;
; scanf("%s" , use_operand) ;
;
lea ax,word ptr [bp-12]
push ax
mov ax,offset DGROUP:s@+671
push ax
call near ptr _scanf
pop cx
pop cx
;
; sum = 0 ;
;
mov word ptr [bp-20],0
;
; for( i = 2 ; i >= 0 ; i-- , decimal *= 10 )
;
mov si,2
jmp short @1@3418
@1@3362:
;
; {
; sum = sum + ((use_operand[i]-'0')*decimal) ;
;
mov al,byte ptr [bp+si-12]
cbw
add ax,65488
imul word ptr [bp-18]
mov dx,word ptr [bp-20]
add dx,ax
mov word ptr [bp-20],dx
dec si
mov dx,10
mov ax,word ptr [bp-18]
imul dx
mov word ptr [bp-18],ax
@1@3418:
or si,si
jge short @1@3362
;
; }
;
; decimal = 1;
;
mov word ptr [bp-18],1
;
;
; if ( memory[sum].count == 0 )
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7636]
add ax,dx
mov bx,ax
cmp word ptr [bx],0
jne short @1@3502
;
; {
; printf("%d번지의 값을 입력 하세요 : ", sum);
;
push word ptr [bp-20]
mov ax,offset DGROUP:s@+674
push ax
call near ptr _printf
pop cx
pop cx
;
; scanf("%d" , &number) ;
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+703
push ax
call near ptr _scanf
pop cx
pop cx
;
; memory[sum].regi = number;
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7638]
add ax,dx
mov dx,word ptr [bp-22]
mov bx,ax
mov word ptr [bx],dx
;
; memory[sum].count++ ;
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7636]
add ax,dx
mov bx,ax
inc word ptr [bx]
@1@3502:
;
; }
; memory[add].link0 = &memory[sum] ;
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7638]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
mov bx,ax
pop ax
mov word ptr [bx],ax
;
;
; sum = 0 ;
;
mov word ptr [bp-20],0
;
;
; for( i = 6 ; i> 3 ; i-- , decimal *= 10 ) {
;
mov si,6
jmp short @1@3586
@1@3530:
;
;
; //-----------------------------12페이지---------------
;
; sum = sum + ((use_operand[i]-'0')*decimal) ;
;
mov al,byte ptr [bp+si-12]
cbw
add ax,65488
imul word ptr [bp-18]
mov dx,word ptr [bp-20]
add dx,ax
mov word ptr [bp-20],dx
dec si
mov dx,10
mov ax,word ptr [bp-18]
imul dx
mov word ptr [bp-18],ax
@1@3586:
cmp si,3
jg short @1@3530
;
;
; }
; decimal = 1;
;
mov word ptr [bp-18],1
;
;
;
;
; if ( memory[sum].count == 0 ) {
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7636]
add ax,dx
mov bx,ax
cmp word ptr [bx],0
jne short @1@3670
;
;
; printf("%d번지의 값을 입력 하세요 : ", sum);
;
push word ptr [bp-20]
mov ax,offset DGROUP:s@+706
push ax
call near ptr _printf
pop cx
pop cx
;
; scanf("%d" , &number);
;
lea ax,word ptr [bp-22]
push ax
mov ax,offset DGROUP:s@+735
push ax
call near ptr _scanf
pop cx
pop cx
;
;
;
; memory[sum].regi = number ;
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7638]
add ax,dx
mov dx,word ptr [bp-22]
mov bx,ax
mov word ptr [bx],dx
;
;
; memory[sum].count++ ;
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7636]
add ax,dx
mov bx,ax
inc word ptr [bx]
@1@3670:
;
;
; }
;
; memory[add].link1 = &memory[sum] ;
;
mov ax,word ptr [bp-20]
mov dx,19
imul dx
lea dx,word ptr [bp-7638]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
mov bx,ax
pop ax
mov word ptr [bx],ax
;
;
;
;
;
; for( i = 0 ; i < 3 ; i++ ) {
;
xor si,si
jmp short @1@3754
@1@3698:
;
; memory[add].operand0[i] = use_operand[i] ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
add ax,si
lea dx,word ptr [bp-7634]
add ax,dx
mov dl,byte ptr [bp+si-12]
mov bx,ax
mov byte ptr [bx],dl
inc si
@1@3754:
cmp si,3
jl short @1@3698
;
;
;
; }
;
;
; memory[add].operand0[3] = NULL ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7631]
add ax,dx
mov bx,ax
mov byte ptr [bx],0
;
;
;
;
; for( i = 4 , j = 0 ; i < 7 ; i++ ,j++ ) {
;
mov si,4
mov word ptr [bp-24],0
jmp short @1@3866
@1@3810:
;
;
; memory[add].operand1[j] = use_operand[i] ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
add ax,word ptr [bp-24]
lea dx,word ptr [bp-7630]
add ax,dx
mov dl,byte ptr [bp+si-12]
mov bx,ax
mov byte ptr [bx],dl
inc si
inc word ptr [bp-24]
@1@3866:
cmp si,7
jl short @1@3810
;
;
;
; }
;
;
; memory[add].operand1[3] = NULL;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7627]
add ax,dx
mov bx,ax
mov byte ptr [bx],0
@1@3922:
jmp @1@282
@1@3950:
;
;
;
; }
; }
;
;
; break ; //케이스1 종료
;
jmp @1@4482
@1@3978:
;
;
;
;
; case 2:
; printf( "pc값을 입력해주세요 : ") ;
;
mov ax,offset DGROUP:s@+738
push ax
call near ptr _printf
pop cx
;
; scanf( "%d" , &add );
;
lea ax,word ptr [bp-14]
push ax
mov ax,offset DGROUP:s@+761
push ax
call near ptr _scanf
pop cx
pop cx
@1@4006:
;
;
; while(1)
; {
; if ( strstr( memory[add].opcode , "00" ) != 0)
;
mov ax,offset DGROUP:s@+764
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne @@5
jmp @1@4062
@@5:
;
; {
; temp1 = memory[add].link0 ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
mov bx,ax
mov di,word ptr [bx]
;
; temp2 = memory[add].link1 ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
mov bx,ax
mov ax,word ptr [bx]
mov word ptr [bp-38],ax
;
; temp1->regi = temp2->regi ;
;
mov bx,word ptr [bp-38]
mov ax,word ptr [bx]
mov word ptr [di],ax
;
;
; pc = add;
;
mov ax,word ptr [bp-14]
mov word ptr [bp-30],ax
;
; mar= pc;
;
mov ax,word ptr [bp-30]
mov word ptr [bp-26],ax
;
; mbr = temp1-> regi;
;
mov ax,word ptr [di]
mov word ptr [bp-28],ax
;
; strcpy( ir , memory[add].opcode) ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
lea ax,word ptr [bp-34]
push ax
call near ptr _strcpy
pop cx
pop cx
;
; //------------------------13페이지
; printf(" %s\n %s = %d\n" , memory[add].opcode ,
;
;
; memory[add].operand0 , temp1->regi );
;
push word ptr [di]
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
mov ax,offset DGROUP:s@+767
push ax
call near ptr _printf
add sp,8
;
;
; printf(" pc<- %d\n mar<- %d\n mbr<- %d\n ir<-%s\n pc-< %d\n", pc, mar, mbr , ir, ++pc);
;
inc word ptr [bp-30]
mov ax,word ptr [bp-30]
push ax
lea ax,word ptr [bp-34]
push ax
push word ptr [bp-28]
push word ptr [bp-26]
push word ptr [bp-30]
mov ax,offset DGROUP:s@+781
push ax
call near ptr _printf
add sp,12
;
;
; }
;
jmp @1@4230
@1@4062:
;
;
; else if( strstr ( memory[add].opcode , "01" ) !=0 ) {
;
mov ax,offset DGROUP:s@+829
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne @@6
jmp @1@4118
@@6:
;
;
; temp1= memory[add].link0 ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
mov bx,ax
mov di,word ptr [bx]
;
; temp2= memory[add].link1 ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
mov bx,ax
mov ax,word ptr [bx]
mov word ptr [bp-38],ax
;
; temp1->regi = temp2->regi ;
;
mov bx,word ptr [bp-38]
mov ax,word ptr [bx]
mov word ptr [di],ax
;
;
; pc = add;
;
mov ax,word ptr [bp-14]
mov word ptr [bp-30],ax
;
; mar= pc;
;
mov ax,word ptr [bp-30]
mov word ptr [bp-26],ax
;
;
; mbr = temp1-> regi;
;
mov ax,word ptr [di]
mov word ptr [bp-28],ax
;
;
; strcpy( ir , memory[add].opcode) ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
lea ax,word ptr [bp-34]
push ax
call near ptr _strcpy
pop cx
pop cx
;
;
;
; printf(" %s\n %s번지 = %d\n" , memory[add].opcode ,
;
;
;
; memory[add].operand0 ,temp1->regi );
;
push word ptr [di]
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
mov ax,offset DGROUP:s@+832
push ax
call near ptr _printf
add sp,8
;
;
;
; printf(" pc<- %d\n mar<- %d\n mbr<- %d\n ir<-%s\n pc<- %d\n" , pc , mar , mbr , ir , ++pc);
;
inc word ptr [bp-30]
mov ax,word ptr [bp-30]
push ax
lea ax,word ptr [bp-34]
push ax
push word ptr [bp-28]
push word ptr [bp-26]
push word ptr [bp-30]
mov ax,offset DGROUP:s@+850
push ax
call near ptr _printf
add sp,12
;
;
;
; }
;
jmp @1@4230
@1@4118:
;
;
;
;
; else if ( strstr( memory[add].opcode , "10" ) !=0 ) {
;
mov ax,offset DGROUP:s@+898
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne @@7
jmp @1@4174
@@7:
;
; temp1 = memory[add].link0 ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
mov bx,ax
mov di,word ptr [bx]
;
; temp2 = memory[add].link1 ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
mov bx,ax
mov ax,word ptr [bx]
mov word ptr [bp-38],ax
;
;
; temp1->regi += temp2->regi ;
;
mov bx,word ptr [bp-38]
mov ax,word ptr [bx]
add word ptr [di],ax
;
;
;
; pc = add;
;
mov ax,word ptr [bp-14]
mov word ptr [bp-30],ax
;
; mar= pc;
;
mov ax,word ptr [bp-30]
mov word ptr [bp-26],ax
;
;
; mbr = temp1-> regi;
;
mov ax,word ptr [di]
mov word ptr [bp-28],ax
;
; strcpy( ir , memory[add].opcode) ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
lea ax,word ptr [bp-34]
push ax
call near ptr _strcpy
pop cx
pop cx
;
;
; printf(" %s\n %s번지 = %d\n" , memory[add].opcode ,
;
;
;
; memory[add].operand0 ,temp1->regi );
;
push word ptr [di]
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
mov ax,offset DGROUP:s@+901
push ax
call near ptr _printf
add sp,8
;
;
;
; printf(" pc<- %d\n mar<- %d\n mbr<- %d\n ir<-%s\n pc<- %d\n" , pc , mar , mbr , ir , ++pc);
;
inc word ptr [bp-30]
mov ax,word ptr [bp-30]
push ax
lea ax,word ptr [bp-34]
push ax
push word ptr [bp-28]
push word ptr [bp-26]
push word ptr [bp-30]
mov ax,offset DGROUP:s@+919
push ax
call near ptr _printf
add sp,12
;
;
;
; }
;
jmp @1@4230
@1@4174:
;
;
;
;
; else if( strstr( memory[add].opcode , "11" ) !=0 ) {
;
mov ax,offset DGROUP:s@+967
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
call near ptr _strstr
pop cx
pop cx
or ax,ax
jne @@8
jmp @1@4230
@@8:
;
; temp1= memory[add].link0 ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7623]
add ax,dx
mov bx,ax
mov di,word ptr [bx]
;
; temp2= memory[add].link1 ;
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7621]
add ax,dx
mov bx,ax
mov ax,word ptr [bx]
mov word ptr [bp-38],ax
;
; temp1->regi += temp2->regi ;
;
mov bx,word ptr [bp-38]
mov ax,word ptr [bx]
add word ptr [di],ax
;
; pc = add;
;
mov ax,word ptr [bp-14]
mov word ptr [bp-30],ax
;
; mar= pc;
;
mov ax,word ptr [bp-30]
mov word ptr [bp-26],ax
;
;
;
; //-----------------------------14페이지 -----------------------------------------------
;
; mbr = temp1->regi;
;
mov ax,word ptr [di]
mov word ptr [bp-28],ax
;
; strcpy( ir , memory[add].opcode);
;
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
lea ax,word ptr [bp-34]
push ax
call near ptr _strcpy
pop cx
pop cx
;
;
; printf(" %s\n %s번지 = %d\n" , memory[add].opcode ,memory[add].operand0 ,temp1 ->regi );
;
push word ptr [di]
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7634]
add ax,dx
push ax
mov ax,word ptr [bp-14]
mov dx,19
imul dx
lea dx,word ptr [bp-7626]
add ax,dx
push ax
mov ax,offset DGROUP:s@+970
push ax
call near ptr _printf
add sp,8
;
; printf(" pc<- %d\n mar<- %d\n mbr<- %d\n ir<-%s\n pc<- %d\n" , pc , mar , mbr , ir , ++pc);
;
inc word ptr [bp-30]
mov ax,word ptr [bp-30]
push ax
lea ax,word ptr [bp-34]
push ax
push word ptr [bp-28]
push word ptr [bp-26]
push word ptr [bp-30]
mov ax,offset DGROUP:s@+988
push ax
call near ptr _printf
add sp,12
@1@4230:
;
;
; }
; add++ ;
;
inc word ptr [bp-14]
;
;
; printf("다음 명령어 실행 : c\n" );
;
mov ax,offset DGROUP:s@+1035
push ax
call near ptr _printf
pop cx
;
; printf(" 중지 : e\n" );
;
mov ax,offset DGROUP:s@+1057
push ax
call near ptr _printf
pop cx
;
; printf("값을 입력해 주세요 : ");
;
mov ax,offset DGROUP:s@+1079
push ax
call near ptr _printf
pop cx
;
; scanf("%s" , &re);
;
lea ax,word ptr [bp-35]
push ax
mov ax,offset DGROUP:s@+1101
push ax
call near ptr _scanf
pop cx
pop cx
;
;
; if ( re =='c') {
;
cmp byte ptr [bp-35],99
jne short @1@4314
;
; continue ;
;
jmp short @1@4426
;
; }
;
jmp short @1@4426
@1@4314:
;
; else if (re =='e') {
;
cmp byte ptr [bp-35],101
jne short @1@4398
;
; break;
;
jmp short @1@4454
;
; }
;
jmp short @1@4426
@1@4398:
;
;
; else {
;
; printf("잘못 입력했습니다.\n");
;
mov ax,offset DGROUP:s@+1104
push ax
call near ptr _printf
pop cx
;
;
; break;
;
jmp short @1@4454
@1@4426:
jmp @1@4006
@1@4454:
;
;
; }
; }
;
;
; break;
;
jmp short @1@4482
@1@4482:
jmp @1@142
;
;
; }
;
; }
;
; }
;
pop di
pop si
mov sp,bp
pop bp
ret
_main endp
?debug C E9
_TEXT ends
_DATA segment word public 'DATA'
s@ label byte
db '%d'
db 0
db -72
db -19
db -73
db -55
db -66
db -18
db -76
db -62
db ' '
db -72
db -34
db -72
db -16
db -72
db -82
db ' 100. 200 '
db -79
db -18
db -63
db -10
db ' '
db -69
db -25
db -65
db -21
db -80
db -95
db -76
db -55
db 10
db 0
db -72
db -19
db -73
db -55
db -66
db -18
db ' '
db -72
db -34
db -72
db -16
db -72
db -82
db ' '
db -63
db -42
db -68
db -46
db ' '
db -64
db -44
db ' '
db -73
db -62
db ' : '
db 0
db '%d'
db 0
db -72
db -19
db -73
db -55
db -66
db -18
db ' '
db -64
db -44
db -73
db -62
db ' : '
db 0
db '%s'
db 0
db '00'
db 0
db 'MOV R1,302<='
db -64
db -52
db -73
db -79
db ' '
db -57
db -4
db -67
db -60
db ' '
db -64
db -72
db -73
db -50
db ' '
db -64
db -44
db -73
db -62
db -57
db -40
db ' '
db -63
db -42
db -68
db -68
db -65
db -28
db '.'
db 10
db 0
db 'MOV '
db 0
db '%s'
db 0
db 'r0'
db 0
db 'R0'
db 0
db 'r1'
db 0
db 'R1'
db 0
db 'r2'
db 0
db 'R2'
db 0
db 'r3'
db 0
db 'R3'
db 0
db ' '
db -73
db -71
db -63
db -10
db -67
db -70
db -59
db -51
db -80
db -95
db ' '
db -66
db -8
db -67
db -64
db -76
db -49
db ' '
db -76
db -39
db '. '
db 10
db 0
db '%d'
db -71
db -8
db -63
db -10
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -64
db ' :'
db 0
db '%d'
db 0
db '01'
db 0
db 'MOV 320.r0 <=FORMAT'
db 10
db 0
db 'MOV'
db 0
db '%s'
db 0
db 'r0'
db 0
db 'R0'
db 0
db 'R0'
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -28
db ' :'
db 0
db '%d'
db 0
db 'r1'
db 0
db 'R1'
db 0
db 'R1'
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -28
db ' :'
db 0
db '%d'
db 0
db 'r2'
db 0
db 'R2'
db 0
db 'R2'
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -28
db ' :'
db 0
db '%d'
db 0
db 'r3'
db 0
db 'R3'
db 0
db 'R3'
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -28
db ' :'
db 0
db '%d'
db 0
db -66
db -8
db -76
db -62
db ' '
db -73
db -71
db -63
db -10
db -67
db -70
db -59
db -51
db ' '
db -64
db -44
db -76
db -49
db -76
db -39
db ' '
db 10
db 0
db '10'
db 0
db 'ADD R1, R2 <= '
db -64
db -52
db -73
db -79
db ' '
db -57
db -4
db -67
db -60
db -64
db -72
db -73
db -50
db ' '
db -64
db -44
db -73
db -62
db -57
db -40
db ' '
db -63
db -42
db -68
db -68
db -65
db -28
db ' '
db 10
db 0
db 'ADD'
db 0
db '%s'
db 0
db 'r0'
db 0
db 'R0'
db 0
db 'r1'
db 0
db 'R1'
db 0
db 'r2'
db 0
db 'R2'
db 0
db 'r3'
db 0
db 'R3'
db 0
db -66
db -8
db -76
db -62
db ' '
db -73
db -71
db -63
db -10
db -67
db -70
db -59
db -51
db ' '
db -64
db -44
db -76
db -49
db -76
db -39
db ' '
db 10
db 0
db 'r0'
db 0
db 'R0'
db 0
db 'r1'
db 0
db 'R1'
db 0
db 'r2'
db 0
db 'R2'
db 0
db 'r3'
db 0
db 'R3'
db 0
db -66
db -8
db -76
db -62
db ' '
db -73
db -71
db -63
db -10
db -67
db -70
db -59
db -51
db ' '
db -64
db -44
db -76
db -49
db -76
db -39
db ' '
db 10
db 0
db '%s'
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -28
db ' :'
db 0
db '%d'
db 0
db '%s'
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -28
db ' : '
db 0
db '%d'
db 0
db '11'
db 0
db 'ADD 302.201<= '
db -64
db -52
db -73
db -79
db ' '
db -57
db -4
db -67
db -60
db -64
db -72
db -73
db -50
db ' '
db -64
db -44
db -73
db -62
db -57
db -40
db ' '
db -63
db -42
db -68
db -68
db -65
db -28
db '.'
db 10
db 0
db 'ADD '
db 0
db '%s'
db 0
db '%d'
db -71
db -8
db -63
db -10
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -28
db ' : '
db 0
db '%d'
db 0
db '%d'
db -71
db -8
db -63
db -10
db -64
db -57
db ' '
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db ' '
db -57
db -49
db -68
db -68
db -65
db -28
db ' : '
db 0
db '%d'
db 0
db 'pc'
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db -57
db -40
db -63
db -42
db -68
db -68
db -65
db -28
db ' : '
db 0
db '%d'
db 0
db '00'
db 0
db ' %s'
db 10
db ' %s = %d'
db 10
db 0
db ' pc<- %d'
db 10
db ' mar<- %d'
db 10
db ' mbr<- %d'
db 10
db ' ir<-%s'
db 10
db ' pc-< %d'
db 10
db 0
db '01'
db 0
db ' %s'
db 10
db ' %s'
db -71
db -8
db -63
db -10
db ' = %d'
db 10
db 0
db ' pc<- %d'
db 10
db ' mar<- %d'
db 10
db ' mbr<- %d'
db 10
db ' ir<-%s'
db 10
db ' pc<- %d'
db 10
db 0
db '10'
db 0
db ' %s'
db 10
db ' %s'
db -71
db -8
db -63
db -10
db ' = %d'
db 10
db 0
db ' pc<- %d'
db 10
db ' mar<- %d'
db 10
db ' mbr<- %d'
db 10
db ' ir<-%s'
db 10
db ' pc<- %d'
db 10
db 0
db '11'
db 0
db ' %s'
db 10
db ' %s'
db -71
db -8
db -63
db -10
db ' = %d'
db 10
db 0
db ' pc<- %d'
db 10
db ' mar<- %d'
db 10
db ' mbr<- %d'
db 10
db ' ir<-%s'
db 10
db ' pc<- %d'
db 10
db 0
db -76
db -39
db -64
db -67
db ' '
db -72
db -19
db -73
db -55
db -66
db -18
db ' '
db -67
db -57
db -57
db -32
db ' : c'
db 10
db 0
db ' '
db -63
db -33
db -63
db -10
db ' : e'
db 10
db 0
db -80
db -86
db -64
db -69
db ' '
db -64
db -44
db -73
db -62
db -57
db -40
db ' '
db -63
db -42
db -68
db -68
db -65
db -28
db ' : '
db 0
db '%s'
db 0
db -64
db -33
db -72
db -8
db ' '
db -64
db -44
db -73
db -62
db -57
db -33
db -67
db -64
db -76
db -49
db -76
db -39
db '.'
db 10
db 0
_DATA ends
_TEXT segment byte public 'CODE'
_TEXT ends
public _main
extrn _strstr:near
extrn _strcpy:near
extrn _strcmp:near
extrn _scanf:near
extrn _printf:near
_s@ equ s@
end
댓글 달기