谁帮我解决下归并排序程序的问题///TC环境

来源:百度知道 编辑:UC知道 时间:2024/06/28 05:03:01
#define MAXSIZE 100
#define N 10
typedef int keytype;
typedef struct{keytype key;}redtype;
typedef redtype Sqlist[N];
typedef struct{int key;
}element;
void merge(element SR[],element TR[],int i,int m,int n)
{int j,k,l;
for(j=m+1,k=i;i<=m&&j<=n;++k)
{if (LQ(SR[i].key,SR[j].key))TR[k]=SR[i++];
else TR[k]=SR[j++];
}
if(i<=m)
for(l=0;l<=m-1;l++)
TR[k+1]=SR[i+1];
if(j<=0)
for(l=0;l<=n-j;l++)
TR[k+1]=SR[j+1];
}

void msort(redtype SR[],redtype TR1[],int s,int t)
{
int m;
redtype TR2[MAXSIZE+1];
if(s==t)
TR1[s]=SR[s];
else
{m=(s+t)/2;
msort(SR,TR2,s,m);
msort(SR,TR2,m+1,t);
merge(TR2,TR1,s,m,t);
}
}
void mergesort(Sqlist &L)
{msort(L.r,L.r,l,L.length);
}

void main()
{sqlist L;
int i;

用MASM、TC2.0写一个简单的x86引导程序
--------------------------------------------------------------------------------

具体的操作过程在下边的 load.c 文件注释中有比较详细的说明。
目的:写一个引导程序和一个超简单的内核,引导成功后能在键盘上输入字符并显示
工具:masm5.0编译器,tc2.0,一个电脑(如果有virtual pc的话更可以,在上面做实验不损机子)。
所需知识:
我简单地说说电脑开机的过程吧,电脑开机后经过很复杂的过程,包括什么自检呀,bios驻入内存呀.... 最后bios把引导盘的0磁道1扇区的512字节放入内存0000:7c00开始的地方,然后把控制权交给引导程序,那一瞬间CS=0000,IP=7c00.(我想应该是这样),然后一切就可以进入你的掌握之中了。
我们现在用汇编要写的就是7c00之后的程序,把这个程序放在第一个扇区,叫做boot,这个程序的作用是把放在第二个扇区的kernel调入内存8000:0000处并跳到那里执行。
文件:boot.asm
;file:boot.asm
;load.exe 程序将下边代码生成的二进制文件写入A盘
;的0磁道1扇区;
;开机时BIOS引导程序会自动将这个扇区的内容加载进入内存
;的07c0H处并执行它;
code segment
assume cs:code
start: ;cs=0000,ip=7c00
mov ax,offset start
add ax,07c0h ;ax加上07c0h送给ds,
mov ds,ax ;设置数据段寄存器ds,
;使得ds:0000为内存地址的0000:7c00
mov si,offset msg