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个段寄存器

image-20240722220134643-17221825467123

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)的内容之和。其有效地址的计算公式如公式所示。
    img

指针寄存器

  • 指针寄存器用于寻址内存堆栈内的数据
  • SP为堆栈指针寄存器,指示栈顶的偏移地址
  • SP不能再用于其他目的,具有专用目的
  • BP为基址指针寄存器,表示数据在堆栈段中的基地址
  • SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址

堆栈(Stack)

  • 堆栈是主存中一个特殊的区域
  • 它采用先进后出FILO(First In Last Out)后进先出LIFO(Last In First Out)的原则进行存取操作,而不是随机存取操作方式
  • 堆栈通常由处理器自动维持。在8086中,由堆栈段寄存器SS和堆栈指针寄存器SP共同指示