全球旧事资料 分类
2SHLS2D2T2D2T2DP0x0B4DP0x1B54B5B4B6B4B5B7B5B4B4B6B7B5B50x10B5B4DP0x2
D2T2
3、最后计算的结果放在(0x80000008)单元中,最后运行结果如下图所示。
由汇编语言程序可以看出,假设数分别用(a)高16位(b)低16位c高16位(d)低16位来代替,那么汇编语言实现的就是用下面的算法实现的:adbc1000hbd,因为寄存器的长度有所限制,所以在做乘法时,就把高位相乘(ac)的结果舍弃掉了。3、在第二个程序中,调用汇编函数,汇编函数调用c函数,这其中采用数据来实现参数的传递。(1)先从最后一个子函数开始,即
addarr2i
tarr1i
tarr2i
tarr3i
t
statici
taddarr2i
tarr1i
tarr2i
tarr3i
t
fori0i
iarr3arr1arr2
fretur

(2)实现了两个数组相加的子程序之后,下面就要编写汇编子函数了,这个子函数不仅是一个子函数,也是一个父函数,通过它来调用上一个addarr2函数,由于是汇编程序,所以其中的断点的保护就需要用指令来实现,这就要先搞清楚需要把那些寄存器压栈,最后还要把相应的寄存器出栈。这个函数的功能也是两个数组相加,即arr35arr45arr45通过地址来实现数据在函数中的传递。实现这个函数的程序如下:
global_addarr3text_addarr3mvks20x0005b0mvks10x002ca1mvkhs10x6000002ca1mvks10x0040a2mvkhs10x60000040a2loopldwd1a1a3ldwd1a2a4
opaddsub
opb0b
ope
d4l1a3a4a4s2b01b0stwd1a4a24s25loop开始做加法arr4首地址设置循环次数arr3首地址
(3)由于在调试上面两个程序时都需要观察结果,所以在最初调试addarr2子函数时就采用pri
tf函数输出的办法来观察最后计算的结果是否正确,当addarr3
f汉书编写完成后,再实现两个子函数的联调。最后得到mai
函数如下:
voidmai
addarr2arr1arr2arr3
addarr3arr3arr4fori0i
ipri
tf
好听全球资料 返回顶部