汇编问题,高手请进,散分100,给出示例代码者100分全给!!!
在扬季文的《80x86汇编语言程序设计教程》第335页有一句话:"重复前缀REP、
REPZ/REPE和REPNZ/REPNE,在仍采用16位地址偏移指针的情况下以CX作为重复计数器,在采用32位地址偏移的扩展情况下以ECX作为重复计数器"
这句话中提到的"32位地址偏移的扩展情况"(这在书中其它地方也常见到)具体是指什么,哪位前辈可以用代码举例吗?我想看看"REP MOVSD"在这两种情况(16/32)下编译出来的机器代码有什么区别?!
我希望前辈能给出两个程序,两个都调用"REP MOVSD"指令,但编译出来以后其机器代码不同:
例如:
1.
.386
CSEG SEGMENT USE16
ASSUME CS:CSEG
START:
MOV ECX, 3
LABEL1:
LOOPD LABEL1
CSEG ENDS
END START
2.
.386
CSEG SEGMENT USE32
ASSUME CS:CSEG
START:
MOV ECX, 3
LABEL1:
LOOPD LABEL1
CSEG ENDS
END START
请注意上面两个例子的区别:一个用"USE16",一个用"USE32"
分别编译后"LOOPD"那一行就会得到不同的机器指令
问题点数:0、回复次数:4Top
1 楼iceheart(冷酷的心)回复于 2005-01-02 20:42:37 得分 0
把MOV ECX, 3改成:
MOV ECX, 10003H
就有区别了Top
2 楼zxr56066909(zxr56066909)回复于 2005-01-02 20:54:37 得分 0
"把MOV ECX, 3改成:
MOV ECX, 10003H
就有区别了"
老大,我问的不是这个
Top
3 楼W32API()回复于 2005-01-03 08:54:15 得分 0
贴出编译后的二进制代码Top
4 楼tengjian1981(新的一年又来到)回复于 2005-01-04 17:28:05 得分 0
upTop




