把下面的 C 代码转换成汇编代码。数组 a 和 b 分别 存放在以 0x4000 和 0x5000 为起始 地址的存储区内,类 型为 long(即 32 位 ) 。 把编写的汇编语言进行编译连接, 并进 行调试。
for (i=0; i<8; i++)
{ a[i] = b[7-i];
}
没有规定哪种汇编?那就用x86汇编,最简单代码,意思一下好了...
假设ds已指向资料段
push ds
pop es ;对齐ds和es
mov edi,4000h ;a数组地址起点
mov esi,5000h+7*4 ;b数组地址结束
mov ecx,8 ;次数
next:
std ;反向
lodsd ;读入ds:esi入eax, esi自动减4(32bit双字,即4字节)
cld ;正向
stosd ;eax值写入es:edi, edi自动加4(32bit双字,即4字节)
loop next