| 查看: 361 | 回复: 0 | |||
| 当前主题已经存档。 | |||
sdlj8051金虫 (著名写手)
|
[交流]
汇编语言和C语言字符串的区别
|
||
|
以前老是搞不清楚它们之间的区别,今天专门研究一下 如有什么错误,请大家指正。 汇编语言: szText db 'hello,world',0 mov eax,szText;这是错误的! mov al,szText;这是正确的,al='h' mov ebx,offset szText;ebx保存了"hello,world!",0字符串的首地址 mov cl,szText+1;cl='e' szText表示字符串的第一个字节 offset szText表示该字符串的地址 szText+1表示首地址+1的字节 C语言: char *s = "hello,world" ;//定义s这个指针变量(4字节)来保存字符串的地址 char str[] = "china" ;//str就是字符串首地址本身 如下: int main(void) { char *s = "hello,world" ; char str[] = "abc" ; __asm { mov eax,s//eax就是"hello,world"的地址 mov bl,byte ptr[eax] } } 在堆栈中的情况是 ---------- |00636261|--->此栈地址就是字符串的首地址 ---------- |xxxxxxxx|--->此栈地址就是s指针变量的地址,内部保存的是"hello,world"字 ---------- 符串的首地址 |EBP | ---------- 很明显,s在内存中是要占空间的(4 byte),而str就是地址本身,所以不占空间 以上是自己的一些理解,可能会有错误,欢迎大家更正&补充 [ Last edited by 幻影无痕 on 2006-10-17 at 10:18 ] |
» 猜你喜欢
依托企业入选了国家启明计划青年人才。有无高校可以引进的。
已经有5人回复
博士延得我,科研能力直往上蹿
已经有9人回复
遇见不省心的家人很难过
已经有23人回复
天津大学招2026.09的博士生,欢迎大家推荐交流(博导是本人)
已经有6人回复
AI 太可怕了,写基金时,提出想法,直接生成的文字比自己想得深远,还有科学性
已经有6人回复
有院领导为了换新车,用横向课题经费买了俩车
已经有9人回复
酰胺脱乙酰基
已经有13人回复
同年申请2项不同项目,第1个项目里不写第2个项目的信息,可以吗
已经有4人回复
有时候真觉得大城市人没有县城人甚至个体户幸福
已经有10人回复













回复此楼