Assembly 将程序集转换为机器代码

Assembly 将程序集转换为机器代码,assembly,machine-code,intel-fpga,nios,Assembly,Machine Code,Intel Fpga,Nios,我正在修一门关于计算机组织和体系结构的课程。 我们有一些练习要做。其中之一是将汇编代码转换为机器指令 我一直在把movia转换成机器指令 我知道它由两个操作组成,orhi和addi 这是程序集中的代码: movia r8, 50000 练习说明r0是0x0,r8是0x8 因此,orhi应该是:orhi r8,r0,%hiadj(50000)而add应该是:addi r8,r8,%lo(50000) 我已将orhi发送至: 00000 01000 1100001101010000 11

我正在修一门关于计算机组织和体系结构的课程。 我们有一些练习要做。其中之一是将汇编代码转换为机器指令

我一直在把
movia
转换成机器指令

我知道它由两个操作组成,
orhi
addi

这是程序集中的代码:

movia r8, 50000 
练习说明
r0
0x0
r8
0x8

因此,
orhi
应该是:
orhi r8,r0,%hiadj(50000)
而add应该是:
addi r8,r8,%lo(50000)

我已将
orhi
发送至:

    00000 01000 1100001101010000 110100    
___________________r0____r8_______50000________0x34(opcode)
但是我必须在50000上使用
%hiadj
!我不知道该怎么做?我到处找了一下,但还没有找到足够清楚的答案


我对这个很陌生,但我真的很想理解!那么,您如何使用
%hiadj
?如果问题不清楚,很抱歉,但如果您愿意帮忙,我将尝试进一步解释。

%hiadj
是其操作数的16个最高有效位,如果16个最低有效位将由
movia
进行符号扩展,则会进行调整。在
50000
的情况下,16个最高有效位为
0
,并且没有符号扩展

所以
%hiadj(50000)
就是
0