C ++中的汇编字符串和等效代码

时间:2017-01-07 01:46:45

标签: c++ string assembly

我在汇编中有一些代码:

et:
s db 'text'
s_size = $ - et
  db 0Dh,0Ah,'$'

我想问一下s_size = $ - etdb 0Dh,0Ah,'$'做了什么? 我也想知道C ++中这些定义的等效代码是什么?

2 个答案:

答案 0 :(得分:0)

s_size = $ - et

我的猜测是$标记当前语句的偏移量(内存地址),$ - et是两个代码位置之间的距离/大小(以字节为单位),'et'是标签。我以前从未用过这种方式,但是一本关于MASM的书应该能够证实这一点。

db 0Dh,0Ah,'$'

这会将字节回车符(0Dh),换行符(0Ah)和文字'$'转储到内存中。正如之前的海报所说,“最后的'$'只是一个字面的$符号....”是的,它用于表示由{{1}显示的字符串的结尾呼叫;我相信它是子功能9。

答案 1 :(得分:0)

$是当前地址 dbd efine b ytes的命令 et是标签,因此字符串text的起始地址 $ - et是当前地址 - 字符串开头的地址。由于命令就在字符串后面,这意味着:字符串的长度 0D 0A是回车符和换行符ASCII字符。