汇编语言

80x86汇编语言基础知识

1. 程序设计语言
 机器语言
 汇编语言:机器语言的符号化,与机器密切相关。
 (具体来讲,还有面向过程的语言,如C)
 高级语言
2.汇编语言的意义
 速度:对于同一个问题,用汇编语言设计出的程序能达到“运行速度最快”。
 空间:对于同一个问题,用汇编语言设计出的程序能达到“占用空间最少”。
 功能:汇编语言可以实现高级语言难以胜任甚至不能完成的任务。
 知识:学习汇编语言,有助于对计算机系统的理解、写出更好的程序。
数据表示
  数制的基本知识(必须掌握其转换计算)
 10进制
 (8进制)
 2进制
 16进制
 说明:
 前导0可以忽略,不影响取值。
 结尾用D(10进制数)、B(2进制数)、H(16进制数)。缺省为十进制数。

数据组织
 位(Bit):1个二进制位。
      计算机是在特定位数下工作的,如8位、16位、32位等。
 字节(Byte):8位。
      位编号从右到左为0~7,第0位为最低位,第7位为最高位。
 字(Word):16位。
      位编号从右到左为0~15,第0位为最低位,第15位为最高位。位0~7为低字节,位8~15为高字节。
 双字(Double Word):32位。
       位编号从右到左为0~31,第0位为最低位,第31位为最高位。位0~15为低字,位16~31为高字。

无符号数与带符号数 
1. 无符号数
   N位二进制数可以表示的无符号数范围为0~2N -1。例如,8位二进制数00H~0FFH表示0~255,16位二进制数0000H~0FFFFH表示0~65535。
?
2. 带符号数的补码表示
   补码的表示规则:
 以最高位作为符号位(0表示正数,1表示负数)。
 正数的补码是其本身。
 负数的补码是对其正数“各位求反、末位加1”后形成的。
   把“各位求反、末位加1”的操作称作求补。求补就是求相反数。
   N位二进制补码数可以表示的带符号数范围为-2N-1~2N-1 -1。例如,8位二进制数可以表示  -128~127,16位二进制数可以表示-32768~32767。
3.补码的特性
          求补
  [x]补         [-x]补
  [x + y]补 = [x]补 + [y]补
  [x - y]补 = [x]补 + [-y]补
 
说明:
 在计算机内部,补码减法是通过对减数求补后将减法转换为加法进行的。
 一个带符号数在不同位数下,其二进制补码表示可能是不同的。例如,8位数-1的补码表示是0FFH, 16位数-1的补码表示是0FFFFH。
4. 补码的物理意义
    考虑8位二进制数,其表示范围为0~255,即256 = 0。若将其想象为一个环,以0为基点,向顺时针方向移246个单位,则得246。然而,若按逆时针方向移动,则该位置就是-10。即
  -10 = 0F6H = 246
    因此,在8位二进制表示下,对于负数x(-128~-1)来说,存在下列等式:
  -x = 256 -�Ox�O
 
5. 符号扩展与零扩展
 符号扩展是将原符号位填入扩展的每一位,使得在带符号数意义下取值不变。
 零扩展是将0填入扩展的每一位,使得在无符号数意义下取值不变。
 
字符的ASCII码表示 
 ASCII码字符集采用一个字节表示字符。
 常用字符的ASCII码。
    数字'0'~'9':30H~39H
    字母'A'~'Z':41H~5AH
    字母'a'~'z':61H~7AH
    空格:20H
    回车CR:0DH
    换行LF:0AH
    空字符:0
 注意回车与换行的差别:
    CR用来控制光标回到当前行的最左端;LF用来移动光标到下一行,而所在列不变。
BCD码  
 压缩BCD码
      以4个二进制位表示1个十进制位,用0000B~1001B表示0~9。
   例如,十进制数6429的压缩BCD码表示为
 0110 0100 0010 1001 B(即6429H)
 非压缩BCD码
      以8个二进制位表示1个十进制位,低4位与压缩BCD码相同,高4位无意义。
   例如,十进制数6429的非压缩BCD码表示为
 xxxx0110 xxxx0100 xxxx0010 xxxx1001 B
   有时,要求非压缩BCD码的高4位为0,这时,6429的非压缩BCD码为06040209H。
   可以看出,数字字符 '0'~'9' 的ASCII码恰好是0~9的非压缩BCD码。

*注解  
 同一个二进制数可以表示多种含义,其具体含义由使用者解释。
    例如,二进制数00110000B,即30H,可以当作十进制数48的二进制表示,字符'0'的ASCII码,30的压缩BCD码,0的非压缩BCD码,等等。甚至将其当作现实世界的任一物理对象也未尝不可。
 带符号数的二进制补码表示与位数密切相关。
    例如0FFH,若作为8位带符号数,则表示-1;若作为16位带符号数,则表示255。再如0FFFFH,若作为16位带符号数,则表示-1;若作为32位带符号数,则表示65535。

基本位操作
1. 逻辑操作:AND、OR、XOR、NOT
 AND操作可以使某些位清0。
 OR操作可以使某些位置1。
 XOR操作可以使某些位取反。
2.移位与循环移位
 左移:最低位移入0。在不溢出的情况下,左移1位相当于乘以2。
 逻辑右移:最高位移入0。逻辑右移1位约等于无符号数除以2。
 算术右移:最高位不变。算术右移1位约等于带符号数除以2。
 循环左移与循环右移:从一端移出的位要移入到另一端。
  

你可能感兴趣的:(职场,休闲,汇编基础,80x86,计算机底层)