在汇编器中将数据从指针写入局部变量(另一个指针)

发布于 2025-01-19 06:55:54 字数 641 浏览 1 评论 0原文

replace PROC
    enter 8, 0
    min_i equ [bp - 2]
    min equ [bp - 4]
    max_i equ [bp - 6]
    max equ [bp - 8]

    mov bx,offset ptr_arr

    mov [min_i],[bx]
    mov [max_i],[bx]

    ...

    leave
    ret
replace ENDP

该程序使用矩阵,ptr_arr 存储第一行的偏移量。
bx 中,我想移动到 min_imax_i 的偏移量,但程序无法编译。编译器写入错误a2023指令操作数必须有大小
我尝试使用 mov [min_i],WORD ptr bx,但在调试中看起来像 mov [bp - 2],bx 而没有取消对 bx 的引用>我需要的。
是否可以在 1 行中完成此操作,而无需将 bx 传输到缓冲区并从那里读取。
我在 ms-dos 上使用 masm。在dosbox中使用masm+link编译。

replace PROC
    enter 8, 0
    min_i equ [bp - 2]
    min equ [bp - 4]
    max_i equ [bp - 6]
    max equ [bp - 8]

    mov bx,offset ptr_arr

    mov [min_i],[bx]
    mov [max_i],[bx]

    ...

    leave
    ret
replace ENDP

The program works with matrices and ptr_arr stores the offsets of the first row.
In bx there is an offset that I want to move to min_i and max_i, but the program does not compile. Compiler writes error a2023 instruction operand must have size.
I tried using mov [min_i],WORD ptr bx, but in debug is looks like mov [bp - 2],bx without dereference for bxwhich I need.
Is it possible to do this in 1 line without transferring bx to the buffer and reading from there.
I'm using masm for ms-dos. Compiling with masm+link in dosbox.

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

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

发布评论

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

评论(1

葬心 2025-01-26 06:55:54

在ASM中,无法从内存到内存(从指针到指针)在一个指令中中。更多信息在这里 x86汇编指针

In asm isn't possible to copy from memory to memory(from pointer to pointer) in one instruction. More info here x86 Assembly pointers

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