我正在编写一个用于硬件分配的 Linux 引导程序,我知道我需要创建一个函数来从内存读取/写入一个单词。我无法确定我是否在正确的轨道上,任何帮助都会很棒。我会测试这些功能,但目前这对我来说是不可能的,因为我需要先构建核心功能,然后才能将所有东西放在一起。我得到了 get_byte(segment,offset)/put_byte(char,segment,offset) ,它们被我的老师从程序集编码并导出到 C 中验证为工作。
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;
}
我不确定上述是否正确。我知道 hi 和 low 需要结合起来,可以添加还是我应该简单地做 low & hi 然后返回结果?如果我完全不在基地,请告诉我。offset 是 unsigned short 还是 int 是否正确?
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(),如下所述,只接受两个参数是没有意义的,修复了它。我为我的错误道歉。