当前位置:编程学习 > 汇编语言 >>

关于Win32汇编的问题?

补充:invoke LoadCursor,0,IDC_ARROW mov @stWndClass.hCursor,eax ;push hInstance ;pop @stWndClass.hInstance mov @stWndClass.hInstance,hInstance mov @stWndClass.cbSize,sizeof @stWndClass mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW mov @stWndClass.hbrBackground,COLOR_WINDOW + 1 mov @stWndClass.lpszClassName,offset szClassName mov @stWndClass.lpfnWndProc,offset _ProcWinMain invoke RegisterClassEx,addr @stWndClass 在上面的代码中,mov @stWndClass.hbrBackground,COLOR_WINDOW + 1 这条指令,为什么可以这样写,有这种寻址方式吗?
追问:首先谢谢你的解答!
我知道,COLOR_WINDOW + 1可以看做一个常数,但是mov  @stWndClass.hbrBackground,COLOR_WINDOW + 1指令中,@stWndClass.hbrBackground代表的是一个内存地址,mov    内存地址,常数,这样应该不对,mov指令中不是不允许两个操作数同时为内存吗?不知道我的理解那里有问题?请帮忙指正,谢谢!
答案:COLOR_WINDOW=5
COLOR_WINDOW 是一个常数(即用“equ”定义的),masm会直接计算COLOR_WINDOW + 1
的值,即5+1=6,再编译,你可以把它当成一个数看,因此,你甚至可以这样:
mov eax,4*5+COLOR_WINDOW
编译后代码的反编译应该是:
mov eax,19h
因为
4*5+5=25=19h
其他:常数不是内存操作数
这个数是在指令中的 

上一个:汇编,求一个一加到一百的程序,要求每句都有详细注释。重要是注释,要在未来汇编上能编译。
下一个:求8个有符号数的平均值。用mcs-51汇编语言怎么写?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,