32位机的一个存诸单元容量多大

iytbihc 2008-04-15 10:37:30
我用OD载入一个程序,进过单步步入,发现,执行push XX (XX代表一个立即数或寄存器或一字符串首地址),SP减4
我之前看的一本书上说,一个存诸单元是一个字节,那么我现在调试的东东应该是一个32位的,一个存诸单元4字节?
那个字符串有14个字符,一个字节存一个字符,可四个字节也存不了14个哈...问题出现在哪?
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-04-15
  • 打赏
  • 举报
回复
32位程序push或者pop一次就是32位(4字节),16位程序push或者pop一次是16位(2字节)。
push一个字符串变量,实际上是把字符串的指针(偏移量)放入栈中,不是把字符串的内容放进去。
Rex_love_Burger 2008-04-15
  • 打赏
  • 举报
回复
空格是$20,不是$00
Treazy 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iytbihc 的回复:]
引用 3 楼 zara 的回复:
一般地, 字符串以 00 字节作为结束标记字节. 有些函数需要将字符串的长度明确地作为参数传入

哈,这么说,字符串中,如果含有两个空格,那后面将会被忽略咯?
[/Quote]

空格?空格的ascii可不是0x00
0x00是作为字符串的结束符号的
iytbihc 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zara 的回复:]
一般地, 字符串以 00 字节作为结束标记字节. 有些函数需要将字符串的长度明确地作为参数传入
[/Quote]
哈,这么说,字符串中,如果含有两个空格,那后面将会被忽略咯?
zara 2008-04-15
  • 打赏
  • 举报
回复
一般地, 字符串以 00 字节作为结束标记字节. 有些函数需要将字符串的长度明确地作为参数传入
iytbihc 2008-04-15
  • 打赏
  • 举报
回复
如果压入的是字符串的首地址,那么如何定位字符串的长度?
zara 2008-04-15
  • 打赏
  • 举报
回复
push 指令, 这里缺省的是压栈 dword (4 字节), 但也是可以一次压栈 word 的 (2 字节). 对于字符串, 这里压入的应该是字符串的其实地址, 而不是字符串本身

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧