程序集 INVOKE A 过程

发布于 2024-12-18 14:32:16 字数 485 浏览 1 评论 0原文

我试图在汇编中调用一个简单的过程,但我无法让它正常工作。

我确实在数据段中定义了原型,

    mySearch PROTO,
map: PTR BYTE,
char: BYTE

然后我在 END main 之前有该过程(在 main.asm 中),

   mySearch PROC, string: PTR BYTE, char: BYTE
     ret
    mySearch ENDP

我将该过程调用为:

mov ebx, LENGTHOF msg1
INVOKE mySearch , ADDR myString, ebx

如果我丢失了第二个参数

字符:字节

我的程序可以编译。所以,我的问题是,我不明白如何将字符传递给我的程序。

I am trying to invoke a simple procedure in assembly, but I cannot get it to work properly.

I do have the prototype defined in the data segment as

    mySearch PROTO,
map: PTR BYTE,
char: BYTE

Then I have the procedure right before the END main (in main.asm)

   mySearch PROC, string: PTR BYTE, char: BYTE
     ret
    mySearch ENDP

I am invoking the procedure as:

mov ebx, LENGTHOF msg1
INVOKE mySearch , ADDR myString, ebx

IF I lose the second parameter

char: BYTE

My program compiles. So, my problem is, i dont understand how to pass a character to my procedure.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜警司 2024-12-25 14:32:16

PROTO 或 PROC 后面不应有任何“,”。
所以它应该看起来像:

mySearch PROTO map: PTR BYTE, char: BYTE



mySearch PROC string: PTR BYTE, char: BYTE
 ret
mySearch ENDP

There should not be any ',' after PROTO or PROC.
So it should look like:

mySearch PROTO map: PTR BYTE, char: BYTE



mySearch PROC string: PTR BYTE, char: BYTE
 ret
mySearch ENDP
谁许谁一生繁华 2024-12-25 14:32:16

对于调用过程,您最好将参数移入

寄存器

或者你可以

它们推入堆栈

For calling procedure you better should move arguments in

registers

OR you may

push

them on stack.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文