我在汇编中有一些代码:
et:
s db 'text'
s_size = $ - et
db 0Dh,0Ah,'$'
我想问一下s_size = $ - et
和db 0Dh,0Ah,'$'
做了什么?
我也想知道C ++中这些定义的等效代码是什么?
答案 0 :(得分:0)
s_size = $ - et
我的猜测是$
标记当前语句的偏移量(内存地址),$ - et
是两个代码位置之间的距离/大小(以字节为单位),'et'是标签。我以前从未用过这种方式,但是一本关于MASM的书应该能够证实这一点。
db 0Dh,0Ah,'$'
这会将字节回车符(0Dh),换行符(0Ah)和文字'$'转储到内存中。正如之前的海报所说,“最后的'$'只是一个字面的$符号....”是的,它用于表示由{{1}显示的字符串的结尾呼叫;我相信它是子功能9。
答案 1 :(得分:0)
$
是当前地址
db
是d
efine b
ytes的命令
et
是标签,因此字符串text
的起始地址
$ - et
是当前地址 - 字符串开头的地址。由于命令就在字符串后面,这意味着:字符串的长度
0D 0A
是回车符和换行符ASCII字符。