美文网首页想法简友广场
汇编每天1分钟 (4) | 寄存器 AX、BX、CX、DX

汇编每天1分钟 (4) | 寄存器 AX、BX、CX、DX

作者: GTR车头 | 来源:发表于2020-06-22 16:55 被阅读0次

    我们从前面几篇文章了解到数据、指令大部分是存储在内存的,那么CPU的寄存器是充当什么角色呢?

    寄存器就是你的口袋。身上只有那么几个,只装最常用或者马上要用的东西。
    内存就是你的背包。有时候拿点什么放到口袋里,有时候从口袋里拿出点东西放
    在背包里。
    —— 来自某乎网友的回答

    额,放错图了

    汇编语言中的AX、BX、CX、DX作为CPU内部的通用寄存器中的数据寄存器助记符,用来存放参与运算的数据或是存储运算的结果。

    AX:寄存器称为累加器,常用于存放算术、逻辑运算中的操作数或结果。另外,所有的I/O指令都要使用累加器与外设接口传递数据。
    BX:寄存器称为基址寄存器,常用来存放访问内存时的地址。
    CX:寄存器称为计数寄存器,在循环、串操作指令中用作计数器。
    DX:寄存器称为数据寄存器,在寄存器间接寻址中的I/O指令中存放I/O端口的地址。

    AX、BX、CX、DX每个寄存器可以将高、低8位分别作为独立的8位寄存器使用。其中的高8位用AH、BH、CH、DH表示,低8位用AL、BL、CL、DL表示。

    AX = AH + AL
    BX = BH + BL
    CX = CH + CL
    DX = DX + DL

    H是英文单词high(高)的简写,L是LOW(低)的简写,因此AH表示高8位寄存器,AL位为低8位寄存器。

    图1-1

    如图1-1所示,寄存器AX中的数据为1B01H,其中1B存放在AH(高8位),01存放在AL(低8位)。

    为什么要区别高低位寄存器?

    简单的单片机的寄存器只能放下8位(bit),即1byte。区分低8位和高8位,可以兼容简单的单片机。

    下面我们通过debug工具来进行一些基础的寄存器操作:

    挂载masm5目录,并执行debug:

    图1-2

    在debug命令下,执行r命令观察ax寄存器的值:

    图1-3

    执行a命令,输入mov ax,1B01,准备把1B01赋值给ax:

    图1-4

    执行t命令,确认执行mov ax,1B01:

    图1-5

    如图1-5所示,ax的数据由0000变更为1B01。

    继续a命令,我们尝试给AH、AL赋值:

    图1-6

    如图1-6所示,我们给AH赋值1F,AL赋值02,最终AX的值由1B01变更为1F02。

    从上文知晓AH、AL为8位寄存器(一个字节,8bit),我们来试试将16位赋值给AH、AL看看会出现什么情况:

    图1-7

    如图1-7所示,执行过程中报了错误,AX的值没有发生变更。因此得出结论,8位寄存器只允许进行8位的赋值。

    相关文章

      网友评论

        本文标题:汇编每天1分钟 (4) | 寄存器 AX、BX、CX、DX

        本文链接:https://www.haomeiwen.com/subject/wzzxfktx.html