gpt4 book ai didi

assembly - 如果汇编代码指令等同于机器代码指令,我不明白这些汇编代码和机器代码的差异

转载 作者:行者123 更新时间:2023-12-02 08:01:49 24 4
gpt4 key购买 nike

有人说汇编语言=机器语言,只是我们在汇编语言中使用了助记符。

读完Petzold的《CODE》后,我仍然无法理解其中一些汇编代码是如何翻译成机器代码的。

例如(来自Tutorials Point 的组装类(class)):

_start:             ;tells linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write

section .data
msg db 'Hello, world!', 0xa ;our dear string

据我所知,msg 包含“Hello, world!”并且它已转移到 ECX 中。

但据我所知,在 x86 中 ECX 只能存储 32 位。

那么我们如何移动“Hello, world!” - 哪个超过 32 位 - 进入 ECX?

那部分的等价物是什么

section .data
msg db 'Hello, world!', 0xa ;our dear string

用机器代码?

最佳答案

使用msg db,您可以定义包含字节字符串序列的地址。使用 mov ecx, msg 您只加载此地址而不是其内容。然后就可以通过加载[ecx]、[ecx+1]等来加载字符串。

.data 定义程序部分。 .text通常包含机器代码,.data可修改程序代码。可以有更多,例如异常处理标签等。

关于assembly - 如果汇编代码指令等同于机器代码指令,我不明白这些汇编代码和机器代码的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com