Assemby byte ptr含义

时间:2017-12-14 23:41:24

标签: assembly x86

在' ecx'我有一些字符串,比如" abc"。

mov啊,byte ptr [ecx + 0]
mov al,byte ptr [ecx + 1]

它究竟做了什么?它就像在'啊'我有" a" char和in' al'我有" b"炭?

2 个答案:

答案 0 :(得分:2)

byte ptr表示内存操作数是指内存中的一个字节,而不是字或双字。通常,这可以省略,因为汇编程序可以从使用的寄存器中推断出操作数大小,但有一些指令如mov [eax],0,其中无法推断出大小,因此byte ptrword ptr或{ <1}}需要前缀。

答案 1 :(得分:1)

有些时候我们需要协助汇编程序翻译对内存中数据的引用。

byte ptr - &gt;它只是意味着你想从地址中获取一个字节。 如果它说word ptrdword ptr,您会从源索引中的地址获得一个单词或双字。

当您需要类似byte ptr示例的内容时,您将立即值移动到间接地址:

mov ebx, OFFSET some_symbol    ; or a pointer from another register
mov [ebx], 10

通常不允许这样做 - 汇编程序不知道您是要将10作为byteword,双字还是(在64位代码中) )四字。 You need to make it explicit,尺寸规格为:

mov byte ptr [ebx], 10  ; write 10 into a byte
mov word ptr [ebx], 10  ; write 10 into a word
mov dword ptr [ebx], 10 ; write 10 into a dword