汇编语言入门

时间:2021-02-21 01:09:51

 

                工欲善其事, 必先利其器。汇编语言是我们学习, 接口原理, 编译原理, 微机组成原理, 操作系统等多门有趣课程的基础。 然而不幸得是刚刚接触汇编, 就依然有了“抛弃凡尘, 魂归故里”的想法。     总是感觉, 好难, 好麻烦, 好多, 好虐心, 好虐脑。

 

               于是, 行百里者半九十!!!。 其实汇编没有想象的那么的难, 并且很有趣。 当然, 也没有想象的那么简单。

 

               首先学汇编, 绝不是为了写汇编。 而是深入的理解计算机的运行机制, 程序的机器级的表示, 计算机微处理器和指令的交互, 逆向工程, 代码优化(特别是嵌入式)等。

 

                  先推荐课本吧! 王爽的《汇编语言》。 这本书比较适合入门, 因为书中尽量的屏蔽了好多的深奥内容。 (即使是这样, 也还是不简单!)。然后是我们老师给我们推荐的书:

 

                  《80x86汇编语言程序设计教程》(杨季文)

                  《IBMPChb汇编语言》

                   天书夜读:从汇编语言到Windows核心编程

                   其实这几本书我都没看过。只读了课本 ---- 《汇编语言》王       

 

              好吧! 让我们一起愉快的学汇编吧!(其实是汇编快考试啦, 我把东西试着复习并整理了一下, 不过学汇编的路还有很长哦!)。

PS:     看过《汇编语言》然后看《深入理解计算机系统》中的第三章, 宛如 黄焖鸡+白米饭 的酸爽!!!

 

C1:基础知识(钟表理解 补码 各种硬件 )

C2:寄存器(物理地址 段)

C3:寄存器(内存访问)

C4:第一个程序

C5:【BX】和loop命令

C6:包含多个段的程序

C7:更灵活的定位地址的方法 //没好好学

AH&AL=AX(accumulator):累加寄存器

BH&BL=BX(base):基址寄存器

CH&CL=CX(count):计数寄存器

DH&DL=DX(data):数据寄存器

SP(Stack Pointer):堆栈指针寄存器

BP(Base Pointer):基址指针寄存器

SI(Source Index):源变址寄存器

DI(Destination Index):目的变址寄存器

IP(Instruction Pointer):指令指针寄存器

CS(Code Segment)代码段寄存器

DS(Data Segment):数据段寄存器

SS(Stack Segment):堆栈段寄存器

ES(Extra Segment):附加段寄存器 

FLAG  寄存器中存储的信息通常又被称作程序状态字(PSW) 
OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出,溢出时为1. 
SF sign Flag 符号标志 记录运算结果的符号,结果负时为1. 
ZF zero flag 零标志 运算结果等于0时为1,否则为0. 
CF carry flag 进位标志 最高有效位产生进位时为1,否则为0. 
AF auxiliary carry flag 辅助进位标志 运算时,第3位向第4位产生进位时为1,否则为0. 
PF parity flag 奇偶标志 运算结果操作数位为1的个数为偶数个时为1,否则为0. 
DF direcion flag 方向标志 用于串处理.DF=1时,每次操作后使SI和DI减小.DF=0时则增大. 
IF interrupt flag 中断标志 IF=1时,允许CPU响应可屏蔽中断,否则关闭中断. 
TF trap flag 陷阱标志 用于调试单步操作.
 
 
 
其他
 
psw: program status word  
tcon: timer control
ie: interrupt enable
scon: serial control
 
EA  --Effective Address:有效地址 ,即偏移地址。
 
SA--segment address
                            

                                8086寄存器用途汇总

寄存器

名称

用途

AX

主累加器

输入、输出操作;大多数算术操作。

BX

基址寄存器

扩展寻址的变址;与DI、SI组合作为专用寻址的基址寄存器;一般计算。

CX

计数寄存器

存储控制循环的重复次数、左右移位的次数;一般计算。

DX

数据寄存器

输入、输出操作;大值乘除法中与AX配对使用。

CS

代码段寄存器

程序代码段的起始地址,CS:IP指明当前指令地址。

SS

堆栈段寄存器

程序堆栈段的起始地址,SS:SP指明栈顶地址。

DS

数据段寄存器

程序数据段的起始地址。

ES

附加段寄存器

用于串操作中的存储器寻址。

IP

指令指针寄存器

程序当前指令的偏移地址,与CS配合使用。

SP

堆栈指针寄存器

程序堆栈栈顶的偏移值,与SS配合使用。

BP

基址指针寄存器

用于简化对参数的访问,可以和SS及DI、SI等配合使用。

SI

源变址寄存器

用于串处理操作,一般与DS联合使用。

DI

目的变址寄存器

用于串处理操作,一般与ES联合使用。

FP

标志寄存器

按位表示计算机的不同当前状态。