ASM16-3、4 --ALU和寄存器
ASM16
ALU 算数逻辑单元
命名:算术逻辑单元(Arithmetic&Logic Unit),简称ALU
组成:ALU有2个单元,算术单元(Arithmetic Unit)和逻辑单元(Logic Unit),算术单元负责计算机里的所有数字操作
作用:计算机中负责运算的组件,处理数字/逻辑的最基本单元
功能:
- 算术操作:加法、减法、乘法、除法等。
- 逻辑操作:AND、OR、NOT、XOR、比较等。
- 数据转换:如浮点数与整数之间的转换。
cpu内部的算数操作都可以是加法(所谓的加法、减法、乘法、除法指令)
减法:通过反码的方式来将减法转换成加法运算,通过补码的方式消除了+0和-0的歧义。而在减法的运算结果中,还需要对结果进行补码。
乘法:计算机乘法是移位和累加实现的,每位的数字代表需要移动几位
除法:计算机除法的实现是移位和累减,首先对齐除数和被除数,对齐后相减,如果结果大于等于0,则记录商1;如果结果小于0,则记录商0之后右移,结果作为下次运算的被除数,并将商左移循环这个过程,直到除数移回原位,并记录余数
什么是指令系统
- 计算机的指令系统就是指该计算机能够执行的全部指令的集合
- 每种计算机都有它支持的指令集合
- 16位8086指令系统是Intel 80x86系列微处理器指令系统的基础
调试程序DEBUG
DEBUG是常用的汇编语言级调试工具,为汇编语言的程序员提供了分析指令、跟踪程序的有效手段
常用命令:
-A汇编
-U反汇编
-T单步执行
-G断点执行
-D数据显示
-R寄存器
8086的寄存器组
- 对程序员来说,8086内部结构的最重要的是其寄存器组
- 8个通用寄存器
- 1个指令指针寄存器
- 1个标志寄存器
- 4个段寄存器
8086的通用寄存器
8086的16位通用寄存器是:AX BX CX DX
SP BP SI DI
其中前4个数据寄存器都还可以分成高8位和低8位两个独立的寄存器
8086的8位通用寄存器是:AH BH CH DH
AL BL CL DL
对其中某8位的操作,并不影响另外对应8位的数据
数据寄存器
- 数据寄存器用来存放计算的结果和操作数,也可以存放地址
- 每个寄存器又有它们各自的专用目的
- AX——累加器,使用频率最高,用于算术。逻辑运算以及与外设传送信息等
- BX——基址寄存器,常用做存放存储器地址
- CX——计数器,作为循环和串操作等指令中的隐含计数器
- DX——数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址
变址寄存器
变址寄存器常用于存储器寻址时提供地址
- SI是源变址寄存器(Source)
- DI是目的变址寄存器(Destination)
串操作类指令中,SI和DI具有特别的功能
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如公式所示。
指针寄存器
- 指针寄存器用于寻址内存堆栈内的数据
- SP为堆栈指针寄存器,指示栈顶的偏移地址
- SP不能再用于其他目的,具有专用目的
- BP为基址指针寄存器,表示数据在堆栈段中的基地址
- SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址
堆栈(Stack)
- 堆栈是主存中一个特殊的区域
- 它采用先进后出FILO(First In Last Out)或后进先出LIFO(Last In First Out)的原则进行存取操作,而不是随机存取操作方式
- 堆栈通常由处理器自动维持。在8086中,由堆栈段寄存器SS和堆栈指针寄存器SP共同指示