汇编对学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 

posted on 2012-12-13 14:55  人世间的金某人  阅读(178)  评论(0编辑  收藏  举报

导航