我正在为一项硬件作业编程Linux引导程序,我知道我需要创建一个函数来从/向内存中读写一个字。我现在遇到了困难,无法确定自己是否走在正确的轨道上,希望能得到任何帮助。我会测试这些函数,但目前还不可能,因为我需要先构建核心功能,然后再把所有东西放在一起。我的老师从汇编语言编写并导出到C的get_byte(segment,offset)/put_byte(char,segment,offset)已经被验证可以工作。
unsigned short get_word(unsigned short segment, unsigned short offset)
{
unsigned short word, low, hi;
low = get_byte(segment, offset);
high = get_byte(segment, offset+1);
word = low+hi;
return word;
}
我不确定上面的是否正确。我知道需要将高位和低位组合起来,是添加还是简单地执行low&hi,然后返回结果?如果我完全错了,请让我知道。偏移量应该是无符号短整型还是整型?
int put_word(unsigned short word, unsigned short segment, unsigned short offset)
{
unsigned short low, hi;
low = word | offset;
hi = word | offset+1
put_byte(segment, low);
put_byte(segment, hi);
return 0;
}
我不知道上面的代码是否正确,但这是我最好的猜测。
有人知道解决方案或有什么提示吗?这些函数应该相当基础,但我卡住了,需要开始我的作业的真正部分。
更新(12:46):已修复put_byte(),如下所述,只接受两个参数是没有意义的,已修复。对于我的错误,我感到抱歉。