当前位置:编程学习 > 网站相关 >>

[20cn讲座]跟我学汇编:第零讲 预备知识

第零讲 预备知识

1 一个汇编程序的编译过程是怎么样的。
  1)首先你需要找一个编辑器,编辑器用任何“纯文本”编辑器都可以。比如记事本。编好以后保存到汇编目录中。扩展名为asm,比如myfirst.asm。但这里建议你找一个能显示出当前行的编译器。这样出错后排错很容易。
  2)然后在DOS下进入D:Masm目录中,输入“masm myfirst.asm",如果有错系统会提示出错的行位置和出错原因。
  3)然后再输入“link myfirst.obj”,即可看到当前目录下有一个myfirst.exe程序。

2 宏汇编和汇编有什么区别吗?
  二者的区别在于前者提供宏,后者不提供。后者已找不到了,所以你可以认为二者没有区别。

3 机器语言、汇编语言、高级语言的关系
  最早的计算机采用机器语言,这种语言直接用二进制数表示,通过直接输入二进制数,插拔电路板等实现,这种“编程”很容易出错,每个命令都是通过查命令表实现,既然是通过“查表”实现的,那当然也可以让计算机来代替人查表实现了。于是就产生了汇编语言,所以不管别人怎么定义机、汇语言,我就认为,二者是等价。后来人们发现,用汇编语言编某一功能的时候,连续一段代码都是相同或相似,于是就考虑用一句语言来代替这一段汇编语言,于是就产生了高级语言。因此,所有高级语言都能转化成汇编语言,而所以汇编语言又可转化成机器语言。反之,所有机器语言可以转成汇编语言(因为二者等价)。但并不是所以汇编语言都能转成高级语言。

4 计算机的组成
  通常都把计算机定义成五部分:运算器、控制器、存储器、输入系统、输出系统。
  为了简单其间,我们如此理解:运算器+控制器=CPU。存储器=内存(暂不包括外存,永不包括CACHE)。输入系统=键盘(不包括鼠标),输入系统=显示器(不包括打印机,绘图仪)。

5 寄存器和内存的区别
  寄存器在CPU中。内存在内存条中。前者的速度比后者快100倍左右。后面的程序要求每条指定要么没有内存数据,要么在有一个寄存器的参与下有一个内存数据。(也就是说,不存在只访问内存的指令)。

6 汇编语言的计数
  与生活中的计数不一样,汇编中的计数是从0开始的。比如16个计数,则是从0~15,而不是生活中的1~16。这一点看起来简单,真运算起来就不是件容易的事了,不信等着瞧。

7 进制问题
  又与生活中不一样的地方是进制。切记下面的常识:
  *)计算机内部存储都用二进制。
  *)我们的汇编源程序默认都用十进制。(除非你指明类型)
  *)我们用的调试程序debug默认的都是十六进制。(无法指明其他类型)
  其中十六进制的十六个个位数依次是:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。

8 进制转换
  一个比较简单的方法是查表法。
  十进制 十六进制 二进制
      0      0      0000
      1      1      0001
      2      2      0010
      3      3      0011
      4      4      0100
      5      5      0101
      6      6      0110
      7      7      0111
      8      8      1000
      9      9      1001
      10    A      1010
      11    B      1011
      12    C      1100
      13    D      1101
      14    E      1110
      15    F      1111
 
  好了,结合6,7,8三条。大家来算一个“题”。某一组数据显示时,每个数据占了四个位置,
每行共十六个。问:十六进制的13位置在哪里(第几行,第几列)。
  格式如下:m m m m n n n n o o o o p p p p 注:之所以没用ABC是怕与上面十六进制弄混。
            r r r r s s s s t t t t u u u u
            ........
补充:综合编程 , 安全编程 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,