- UID
- 87089
- 性别
- 男
|
将下列C程序,转换到汇编
/*
main.c
*/
#include
// ====================
unsigned char buf[258], buf2[256];
unsigned char hdr[1078]; // 8bit BITMAP header size
// ====================
void medfilt(unsigned char *buf, unsigned char *buf2);
// ====================
int main()
{
int i;
FILE *fp = NULL, *fp2 = NULL;
fp = fopen("girl2.bmp", "rb");
if (! fp)
{
printf("Open image file fail!\n");
exit(-1);
}
fp2 = fopen("girl3.bmp", "wb");
if (! fp2)
{
fclose(fp);
printf("Open output image file fail!\n");
exit(-1);
}
// read bitmap header
fread(hdr, 1078, 1, fp);
fwrite(hdr, 1078, 1, fp2);
buf[0] = 0;
buf[257] = 0;
for (i=0; i<256; i++)
{
fread(buf+1, 1, 256, fp);
medfilt(buf, buf2);
fwrite(buf2, 1, 256, fp2);
}
fclose(fp);
fclose(fp2);
}
// main.c
---------------------------
/*
medfilt.c
*/
/*
1-D median filter
Parameters:
buf ----- input data
buf2 ---- output data
*/
void medfilt(unsigned char *buf, unsigned char *buf2)
{
int i;
unsigned char tmp;
unsigned char filt0, filt1, filt2;
for (i=1; i<=256; i++)
{
filt0 = buf[i-1];
filt1 = buf;
filt2 = buf[i+1];
if (filt0 >= filt1)
{
tmp = filt0;
filt0 = filt1;
filt1 = tmp;
}
if (filt0 >= filt2)
{
tmp = filt0;
filt0 = filt2;
filt2 = filt0;
}
if (filt1 >= filt2)
buf2[i-1] = filt2;
else
buf2[i-1] = filt1;
}
}
// medfilt.c |
|