首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MOV与MOV ptr的差异

MOV与MOV ptr的差异
EN

Stack Overflow用户
提问于 2019-04-30 08:34:04
回答 2查看 2.2K关注 0票数 2

我不明白MOVMOV ptr之间的区别。

例如,在这个C代码中:

代码语言:javascript
复制
unsigned char x, y;
x = 2; 

组装的第二条线是:

代码语言:javascript
复制
`MOV x, 2`

但是这个C代码的第二行是:

代码语言:javascript
复制
tabbyte[0] = 15
unsigned char tabbyte[4]

在汇编中是:

代码语言:javascript
复制
MOV byte ptr tabbyte[0], 15

这两种装配指令有什么区别,什么时候应该使用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-30 09:01:16

  1. 指令字节PTR,WORD PTR,DWORD PTR 有时,我们需要帮助汇编程序将引用转换为内存中的数据。 例如,指令 将字节大小值存储在ESI指出的内存位置中。 建议移动8位数量,因为AL是8位寄存器. 当指令不引用操作数大小时, mov,5;错误:操作数必须具有指定的大小 要绕过这个实例,我们必须使用指针指令,例如 mov字节PTR ESI,5;存储8位值mov字PTR ESI,5;存储16位值mov DWORD PTR ESI,5;存储32位值。 这些指令要求操作数大小相同。 通常,PTR运算符强制将表达式视为指定类型的指针: .DATA num .CODE 0.CODE mov ax,WORD PTR num;从DWORD加载一个字大小值。

pointer.htm

票数 4
EN

Stack Overflow用户

发布于 2019-04-30 09:04:29

byte ptrword ptr等仅在操作数未暗示的情况下才需要指示要操作的大小。它是方括号([]),在MASM中是一个指示内存引用的裸符号。要使用MASM中变量的地址以offset作为前缀,对于NASM,只需省略方括号即可。

GNU与Intel语法模式在这方面的行为类似于MASM。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55916891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档