读书人

请帮忙实现几个函数多谢

发布时间: 2012-02-05 12:07:14 作者: rapoo

请帮忙实现几个函数,谢谢
1.
/*================================================================= 数 名 : メモリコピ xmemcpy_NF
能 : srcが指すfar域から、destが指すnear域へ、nバイトの
メモリコピを行う。
引数(I/O): (i) void near * dest: 送先nearポインタ
void far * src: 送元farポインタ unsigned short n: 送バイト数 0..65535

り : (o) void near *: destを返す。
考 : 域の重にわらず正常にコピする。
M16CのROM or RAMから、nearRAM へのデタ送に使用する。

函数名:内存COPY xmemcpy_NF
机能 :从src指针所指定的远地址领域到dest指针所指定的近地址领域N byte COPY
参数 : (i) void near * dest: 目标地址近指针
void far * src: 源地址远指针
unsigned short n:传送byte数 0~65535
返回值: o) void near *: dest目标地址近指针返回
备注 : 目标地址部分和源地址部分可能有重复.
从M16C的ROM或 RAM到nearRAM的数据COPY
//=================================================================
void near * xmemcpy_NF ( void near * dest, void far * src, unsigned short n )
{
}
2.
/*=================================================================
数 名 : メモリ比 xmemcmp
能 : メモリブロックsrc1とメモリブロックsrc2を、nバイト分だけ比。
  デタをバイト位( unsigned char )として比する。
引数(I/O): (i) void far * src1: 第1比メモリブロックのfarポインタ
void far * src2: 第2比メモリブロックのfarポインタ
unsigned short n: 比バイト

り : (o)src1 == src2:0を返す。
src1 < src2: <0
src1 > src2:> 0
考 :

函数名:内存比较xmemcmp
机能 :从src1指针所指定的远地址领域到src2指针所指定的远地址领域N byte比较
以byte为单位( unsigned char )比较.
参数 : (i) void far * src1: 第1个比较内存块的远地址指针
void far * src2: 第1个比较内存块的远地址指针
unsigned short n: byte数
返回值: o) src1 == src2:返回0
src1 < src2: <0
src1 > src2:> 0
备注 :

=================================================================*/

short xmemcmp ( const void far * src1, const void far * src2, unsigned short n )
{
}

3.
/*=================================================================
数 名 : メモリコピ xmemset_F
能 : sが示すfar域に、cに定されたデタをnバイト数分セットする。
引数(I/O): (i) void far * s: 定先メモリポインタ
char c: 定するデタ 0~255
unsigned short n: 定バイト数 0~65535
り : (o) なし
考 : メモリクリアなどに使用する。


farRAM。
ただし、nearRAMなら xmemset_N の方が高速かつ量。
Size: 38 byte
Cycle: 25 + 5 * ( n / 2 )(定バイト数が偶数の合)
Cycle: 26 + 5 * (( n - 1 ) / 2 )(定バイト数が奇数の合)
Cycle: 25 (定バイト数が1だった合)
 Cycle: 7
(定バイト数が0だった合)

函数名:内存设定xmemset_F
机能 :向s指针所指定的远地址的N byte领域里设定固定值c
参数 : (i) void far * s: 设定目标的地址指针
char c: 设定固定值0~255
unsigned short n: byte数
返回值: o) 没有
备注 :

================================================================*/
void xmemset_F ( void far * s, char c, unsigned short n )
{
}
4、
/*=================================================================
数 名:テブルスキャンジャンプ xtbl_scall_v
能:索分岐テブル造体を参照し、索コド "tbl_key "にした
数をコルする。
索は0xffを出するまで行われる。よって0xffを索さ
せるためには、最索位置に置くこと。
索コドが出できない合は、最索位置をコルする。
索コドが出されれば、数をコルする。
 り= 出した : 1
        しない: 0

引数(I/O): (i) unsigned char tbl_key : 索コド
り : (o) 出した合 = 1
    しない合 = 0
考 :
述例:
void func1(void){return(1);}
void func2(void){return(2);}
void func3(void){return(3);}忘れずに!
{3,func1}, {4,func2}, {0xff,func3}
a = xtbl_scall_v(8, tbl); ← func3が呼ばれる。 a = 0 になる。

函数名: 查表跳转xtbl_scall_v
机能 :查找表里边和tbl_key一致所对应的函数并调用该函数.
查表查到0XFF则停止, 因此表中 0XFF放在表的末尾.
如果在表中查不到和tbl_key一致的值,调用最终位置的空函数.
如果在表中查到和tbl_key一致的值,调用和该值对应的函数
参数 : (i) unsigned char tbl_key : 检搜码
表地址
返回值: o) 查到时返回1
没有查到时返回0
备注 : 例
void func1(void){return(1);}
void func2(void){return(2);}
void func3(void){return(3);}
{3,func1}, {4,func2}, {0xff,func3}


================================================================*/

short xtbl_scall_v( unsigned char tbl_key, (?) * scall_tbl )
{
}

5、
/*=================================================================
数 名 : テブルスキャン xtbl_scn
能 :  索分岐テブル造体を参照し、索コド "tbl_key "にした


デタ群のポインタを返す。
 索は0xffを出するまで行われる。よって0xffを索さ
せるためには、最索位置に置くこと。
索失は、最デタ群のポインタを返す。
引数(I/O): (i) unsigned char tbl_key : 索コド
void far *scn_tbl : スキャン用テブルのポインタ
rec_size : レコドバイトサイズ(デタ群(n)+1)
り : (o) 出した合 = デタ群へのポインタ。void型で返す。
しない合 = 最デタ群  〃   。  〃   。
考 :
述例 :char scn_tbl[]={ 5, 'a ', 'b ', 'c ', 'd ', '\0 ',
10, 'd ', 'e ', 'f ', 'g ', '\0 ',
0xFF, 'g ', 'h ', 'i ', 'j ', '\0 ' };

函数名: 表查找xtbl_scn
机能 :查找表里边和tbl_key对应的数据返回指向该数据的指针.
查表查到0XFF就停止, 因此请将0XFF放在表的末尾.
如果在表中查不到和tbl_key一致的值, 返回指向表尾数据的指针.
参数 : (i) unsigned char tbl_key : 检搜码
表地址
rec_size:数据块的长度
返回值: o) 如果在表中查到和tbl_key一致的值,返回指向对应数据的指针
如果在表中查不到和tbl_key一致的值, 返回指向表尾的指针
备注 : 例

================================================================*/
void far * xtbl_scn ( unsigned char tbl_key, void far * scn_tbl, unsigned short rec_size )
{
}


[解决办法]
有可能还要考虑兼容windows3.1
[解决办法]

。。。

memcpy
memset
memcmp

- -

读书人网 >C语言

热点推荐