汇编masm你如何减去2个文本框

时间:2013-04-26 15:14:58

标签: windows assembly masm

我有2个带有数字的文本框。如何减去它们并将结果放在第三个文本框中。

我试过这个

.data

gettext1            DB 100 DUP(?)
gettext2           DB 100 DUP(?)
gettext3            DB 100 DUP(?)

.code

LOCAL pmem1  :DWORD

        invoke GetDlgItemText,hWin,MeasuredlengthXtextbox,esi,100

    invoke GetDlgItemText,hWin,MeasuredlengthYtextbox,edi,100

    sub esi,edi 

    mov pmem1,esi   

    invoke lstrcpy,addr gettext1,pmem1

    invoke SetDlgItemText,hWin,ResultlengthXtextbox,addr gettext3

当我尝试使用此代码时,它在文本框中没有显示任何内容

感谢

1 个答案:

答案 0 :(得分:1)

首先,GetDlgItemText的第三个参数是指向保存字符串的缓冲区的指针。寄存器不起作用。您需要使用缓冲区的地址加载esi和edi,例如gettext1和gettext2。

其次,您无法添加字符串。您在屏幕上看到的数字1实际上不是数字,而是数字的ASCII版本。

您需要获取文本,转换为数字,减去,然后转换回字符串以与SetDlgItemText一起使用。

为了让您的生活更轻松,只需使用GetDlgItemInt将数字字符串转换为数字并返回eax,然后使用SetDlgItemInt