8086汇编 学习1
汇编语言
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
机器语言到汇编语言
-
机器语言是机器指令的集合、是一台机器可以正确执行的命令、由一串二进制数表示,例 01010000。
-
汇编语言
- 汇编语言的主体是汇编指令
- 汇编指令和机器指令的差别在于指令的表示方法上
- 汇编指令是机器指令便于记忆的书写格式
- 汇编指令是机器指令的助记符
-
机器指令与汇编指令对比
机器指令: 1000100111011000 操作:将寄存器BX的内容送到AX中 汇编指令:MOV AX, BX
寄存器
8086寄存器组都是16位的寄存器
根据用途分为
- 数据寄存器
- 地址寄存器
- 段寄存器
- 控制寄存器
寄存器
- 数据寄存器
数据寄存器中每个俱存其又可以分为2个8位的寄存器
分别为AH,AL,BH,BL,CH,CL,DH,DL.
H表示高字节(高8位)寄存器
L表示低字节(低8位)寄存器
例如:用 AX 寄存器存放一个字 1234H,表示为 (AX)=1234H,即高字节 12 放在 AH,低字节 34 放在 AL 中。 - 地址寄存器
地址寄存器包括指针和变址寄存器(SP,BP,SI,DI)四个16位的寄存器
可以用来存放存储器操作数的偏移地址,也可以作为通用寄存器使用 - 段寄存器
8086CPU有4个16位的段寄存器- CS代码段寄存器
- DS数据段寄存器
- ES附加段寄存器
- SS堆栈段寄存器
- 控制寄存器
控制寄存器包括IP和FLAGS(又称为PSW程序状态字)两个16位寄存器,用于控制程序的执行
IP指令指针寄存器,用于存放代码段中的偏移地址,指出当前正在执行指令的下一条指令所在单元的偏移地址
FLAGS标志寄存器中的某位代表CPU的1个标志,表示出CPU的某种执行状态,最低位为D0,最高位为D15。
寻址方式
- 数据寻址:访问所需要的数据(操作数)
- 指令寻址:一条指令执行后,确定执行的下一条指令的位置
汇编指令由操作码字段和操作数字段构成
对于双操作指令,第一个操作数称为目的操作数,表示操作后的结果;第二个操作数称为源操作数,表示来源操作数。
8086汇编基本指令
功能上分类:
一、 数据传送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF、POPF、CBW、CWD、CWDE。
二、 算术指令:ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、DIV、DAA、DAS、AAA、AAS。
三、 逻辑指令:AND、OR、XOR、NOT、TEST、SHL、SAL、SHR、SAR、RCL、RCR、ROL、ROR。
四、 控制转移指令:JMP、Jcc、JCXZ、LOOP、LOOPZ、LOOPNZ、LOOPNE、CALL、RET、INT。
五、 串操作指令:MOVS、LODS、STOS、CMPS、SCAS。
六、 标志处理指令:CLC、STC、CLD、STD。
七、 32位CPU新增指令