请帮忙实现几个函数,谢谢
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
- -