好久没写文章了,上次系统学习使用汇编语言的时间大概是在12年前,虽然工作也从事JAVA WEB应用系统方面的开发,但和汇编基本没交集,上大学时自己就对汇编语言和编译原理非常感兴趣,可惜当时限于自己的环境,没办法深入学习更进一步,现在虽然工作好多年了,但心中一直想着如何继续学习,然后能研究下单片机,嵌入式系统,最后在和炒的火热的物联网沾点关系。现在离职处于空窗期的我终于可以静下心来温习这基础中的基础-汇编语言了,还是从最原始的X86系列的汇编开始吧,其他的触类旁通,废话不多说,开始学习之路吧。
关于汇编语言
介于机器语言(0和1)、符号语言与高级语言(C/PASCAL)之间的一种初级语言,指令集合比较繁杂,但是对于我来说总有一种不可言的魅力。
计算机内部寄存器的那些事儿
主要分为下面4大类,后面针对每种进行详细介绍。
>>>> 数据寄存器【DATA REGISTER,简称DS】
>>>> 指针及变址寄存器【指针POINTER,DESTINATION INDEX变址寄存器】
>>>> 段寄存器【SEGMENT REGISTER】
>>>> 控制寄存器【CONTROL REGISTER】
第一类:数据寄存器
1、基础类
包括4个16位的寄存器(AX, BX, CX, DX)或者8个8位寄存器( AH, AL, BH, BL, CH, CL, DH, DL), 这些寄存器都可以用来暂时存放操作数, 运算结果以及其他信息, 但同时又具有某些专用用途
>>>> AX 数据累加器【Accumulator 】
算术运算中的主要寄存器, 在乘除运算中用来指定被除数和被除数, 也是乘, 除,运算后积和商的默认存储单元. 另外I/O指令均使用该寄存器与I/O设备传送信息
>>>> BX 基址寄存器【BASE REGISTER,简称BX】
指令寻址时常用做基址寄存器. 存入偏移量或偏移量的构成成分
>>>> CX 计算寄存器【COUNT REGISTER,简称CX】
在循环指令操作或串处理指令中隐含计数
>>>> DX 数据寄存器【DATA REGISTER,简称DX】
在双字节长运算是, 与AX构成32位操作数, DX为高16位. 在某些I/O指令中, DX被用来存放端口地址。
2、扩展通用寄存器
包括4个32位的寄存器(EAX, EBX, ECX, EDX)
EAX:通用寄存器。相对其他寄存器,在进行运算方面比较常用。
EBX:通用寄存器。通常作为内存偏移指针使用(相对于EAX、
ECX:通用寄存器。通常用于特定指令的计数。在保护模式中,
EDX:通用寄存器。在某些运算中作为EAX的溢出寄存器(
同AX分为AH&AL一样,上述寄存器包括对应的16-
第二类:指针及变址寄存器
1、基础类
16位的寄存器,用来存放16位的操作数或中间