|
我没认真学过8086,我学的都是win32汇编,感觉楼主说的好像是针对16位(以下)来说的
# 汇编语言中的中断对应C语言的库函数
这个不理解,lz能不能解析一下?
C的库函数在调用的时候已经在内存里面了,汇编调用不就一个call过去吗?
怎么有中断的?
# 汇编没有参数概念!
16位以下我不知道有没有,但是win32是肯定有的
比如说一个api,要几个push参数再call,或者用宏invoke xxx后面接参数
为什么汇编没参数概念?参数是针对函数,而不是针对语言吧?!
而且在调用函数的时候参数一般都放在栈里面,然后用基栈指针ebp+4*n这样来调用参数
# 汇编中的各寄存器为C中的全局变量,每一条指令都有可能直接修改其值
在windows的pe结构中,全局变量是放在.data(已经初始化全局或者静态变量)或者是.bss(未初始化的变量).使用的时候是用寻址来调用,比如mov eax, dword ptr [00405000h]或者宏汇编的mov eax, offset szStr (其中szStr db 'Hello'),这样eax就是指向Hello全局字符串的指针了
不能说汇编中的寄存器,寄存器是cpu内的,汇编只是操作寄存器而已,而且在32位机中寄存器一般都不直接放全局变量,也没那么多寄存器去放全局变量.每个寄存器都有自己的用途
比如说eax是函数的返回值,ecx为循环变量,edx:eax是64位乘积,esp是栈指针,ebp为基栈指针等等
# 汇编不难,纯粹记忆..
这句话说的好,同意楼主的
汇编的确比C/C++容易多了
而且学了汇编再去学其他语言根本就不费吹灰之力 |
|