注册 登录
编程论坛 汇编论坛

《琢石成器》一个比较菜问题

当阳桥 发布于 2010-05-01 21:10, 1276 次点击

最近买了本《琢石成器》开始学习汇编,发现有个小小问题麻烦大侠们解答一下。mov语句规定两个操作数至少有一个通用寄存器,但在firstwindow中有几句mov语句如:
mov @stWndClass.cbSize,sizeof WNDCLASSEX
mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
mov @stWndClass.lpfnWndProc,offset _ProcWinMain
mov @stWndClass.hbrBackground,COLOR_WINDOW + 1
mov @stWndClass.lpszClassName,offset szClassName
均没发现有通用寄存器如EAX、EBX、ECX、EDX出现在mov语句中。在百度搜索也没搜索到结果,请大侠们解答一下。先感谢了!!
6 回复
#2
zklhp2010-05-01 21:39
mov语句规定两个操作数至少有一个通用寄存器

你的论据是错的 没这条规定
#3
zklhp2010-05-01 21:42
你baidu mov看看

传送指令MOV(Move)把一个字节、字或双字的操作数从源位置传送到目的位置,源操作数的内容不变。可以实现立即数到通用寄存器或主存的传送,通用寄 存器与通用寄存器、主存或段寄存器之间的传送,主存与段寄存器之间的传送。该操作属于复制性质,不属于搬家性质。
#4
zklhp2010-05-01 22:11
百度的词条真烂

我完善了一下 呵呵
#5
当阳桥2010-05-01 23:12
非常感谢,呵呵.......
; 注册窗口类
;********************************************************************
        invoke    LoadCursor,0,IDC_ARROW
        mov    @stWndClass.hCursor,eax
        push    hInstance
        pop    @stWndClass.hInstance
        mov    @stWndClass.cbSize,sizeof WNDCLASSEX
        mov    @stWndClass.style,CS_HREDRAW or CS_VREDRAW
        mov    @stWndClass.lpfnWndProc,offset _ProcWinMain
        mov    @stWndClass.hbrBackground,COLOR_WINDOW + 1
        mov    @stWndClass.lpszClassName,offset szClassName
        invoke    RegisterClassEx,addr @stWndClass
红色那两条语句就要用push及pop给@stWndClass.hInstance赋值,如是mov @stWndClass.hInstance,hInstance就出错了。
这又怎么解释呢?

[ 本帖最后由 当阳桥 于 2010-5-1 23:15 编辑 ]
#6
你们都要疼我哦2010-05-01 23:53
不能为2个内存变量。 mov @stWndClass.hInstance,hInstance 这是2个内存变量,所以会出错。

而那段初始化的mov 你分辨一下 是否都是内存变量?
#7
当阳桥2010-05-02 02:31
明白了,太感谢了。非常感谢
呵呵............
1