汇编语言学习(1)
基础的就跳过了,也就是一开始的16进制运算
我们简要复习一下基础内容
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。 在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。 在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。
也就是汇编语言经机器转换成二进制机器码让机器执行,汇编语言是最接近计算机的语言。
计算机CPU由寄存器,加法器,控制器和逻辑总线构成,常见的CPU有很多年前的8080和8086CPU
8080CPU是8bit的,一次能处理8位数据,也就是能够一次性处理,传输,暂时存储的信息的最大长度是8位的
8086CPU是16bit的,一次最多处理16位。
8086有20位地址总线,可以传送20位地址,如果从内部来看,只将地址从内部简单的发出,只能传送16位,8086CPU采用从内部用两个16位地址合成的方法(见数字电子技术基础(第七版))来形成一个20位的物理地址。
常用寄存器有AX,BX,CX,DX等等
一般寄存器里面有4个十六进制数,也就代表了16个二进制位。
比如25DC H就代表16进制的25DC,后面的H就是hex(十六进制)的意思。
一般寄存器里面还分低位和高位,比如25就是高位,用AH表示,而DC就是低位,用AL表示。
一些简单的汇编指令如
1 | ax=1111h; |
就代表将寄存器BX中的内容放到AX中。BX中的值不变。
我们看到
1B = 8bit也就是8个二进制数,最多2^8.
1KB = 1024B = 2^10 B = 2^13 b
1MB = 1024 KB = 2^10 * 2^10 B = 2^20 B
所以后面的
1GB = 2 ^30 B
如图是内存地址空间。BIOS代表basic input/output system是用来硬件和内存空间之间交互的,就像键盘输入,屏幕输出一样。
CPU内合成20位地址时,提供两个16位地址,一个称为段地址,一个称为偏移地址。
段地址和偏移地址被送进加法器。
加法器用
1 | 物理地址 = 段地址*16 + 偏移地址 |
段地址*16也被称为基础地址。
公式得到20位的地址,显然,段地址16之后就由4位变成5位了。5*4 = 20
上面利用纸条法来形象解释了CPU只能传递16位,用两个16位拼出了20位地址。(上图也是10进制加法的解释)。
其实8086PC机CPU在传递地址访问内存时,必须向内存提供两个16位地址,而且能让他看出来那个20位地址。这是为什么?
如果只提供一个20位地址,会出现什么情况?
对于
1 | 2160F H = 2000H + 160FH |
1 | PC机一般不说数据在2160F单元中,而是说在内存2000:160F单元中,或者说在内存2160:000F中。 |
先往后看着,太多了,记笔记下来太慢。