天天看点

汇编对学C语言的帮助(尚未完成)

首先先说明,在汇编中没有定义变量,跟变量有相同作用的是cpu寄存器,一般寄存器我现在看到的都是跟地址打交道,运算寄存器部分在计算机组成原理部分,汇编没讲 然后说明,在c语言中变量名其实就是地址,一般在c语言我们是传递变量的值,但是在编译器中我们变量名就是内存单元的别名 (1)寻址方式对数据类型的理解 汇编寻址方式(一): mov ax, [0] 是寻址的基础方式 汇编寻址方式(二): mov ax, [bx]   汇编寻址方式(三): mov ax, [bx + idata] 可转换为格式: [bx].idata <==> 结构体 idata[bx]  <==> 数组 汇编寻址方式(四): mov ax, [bx + si] 可转换为格式: [bx][si]   <==> 二维数组 汇编寻址方式(五): mov ax, [bx + si + idata] 可转换为格式: [bx].idata[si]  <==> 结构体中数组元素 举例: struct Student {    float number;    char name[10];    char sex; }; struct Student stu = {99, "xiaoming", 'M'} 在内存中   (2)对栈的理解 汇编中有ss:sp,栈段寄存器,call和ref指令配合对函数调用的理解,push ax和pop ax的保存寄存器内容   (3)变量含义 变量就是数据标号,代表着几块内存单元,在高级语言中是通过变量与内存通信   (4)代码块,作用域 { }中内容在c语言中是一个segment/ends,变量   (5)对函数调用的理解 函数调用三部曲:1)数据入栈:保存实参、函数地址 2)开辟内存空间 3)jmp ip 调用结束三部曲:1)保存结果 2)释放内存空间 3)数据出栈:pop ax, pop ip 

转载于:https://www.cnblogs.com/rz-jin/archive/2012/12/13/2816370.html