Assembly-(二)

寄存器

众所周知 一个CPU的构成是由运算器 控制器 寄存器等器件构成的,比如静待你的8086CPU中,有14个寄存器,每个寄存器都有一个名称:AX,BX,CX,DX,SI,DI,SP,BP,IP,CSSS,DS,ES,PSW

2.1通用寄存器

8086CPU的寄存器都是16位的可以存放两个字节,每一位都可以是0和1,比较常用的,用来存放一般数据的寄存器叫做通用寄存器,如8086CPU里面的AX,BX.CX.DX.

以AX为例,如图所示,其逻辑结构如图所示:

在这里插入图片描述

每一位都可以存放两个数字,所以其表示的最大值是16位全1,也就是2的16次方 64k

但是在8086的上一代CPU的寄存器都是8位的,所以8086的一个通用寄存器可以拆成两部分来用,第8位,也就是第0-第7位 叫做AL ,高8位:也就是第8位-第15位叫做AH;

根据上面所计算的一个8位的通用寄存器可以存放的最大数值为2的八次方 也就是 256bit

举个例子:在一个16位的寄存器里面存放的数字是:

100111000100000

将其拆解为 8位的 从低8位开始拆解:00100000 这就是AL表示的值:32 (20H)

其高8位的值位 01001110 这就是AH表示的值:78 (4EH)

16位总的表示为:20000(4E20H)

2.2 几条汇编指令

汇编指令控制CPU完成的动作用高级语言的语法描述
mov ax,18将18送入寄存器axax=18
mov ah,78将78送入寄存器AHAH=78
add ax,8将ax中的数值加上8ax=ax+8
mov ax,bx将bx中的值送入axax=bx
add ax,bx将ax中的值与bx中的值相加结果存在ax中AX=AX+BX

2.2.1 简单的计算:

假设AX中初始值为:0000H,BX:0000H
程序段中的指令指令执行后AX中的数据指令执行后BX中的数据
mov ax,4E20H4E20H0000H
add ax,1406H6226H0000H
mov bx,2000H6226H2000H
add ax,bx8226H2000H
mov bx,ax8226H8226H
add ax,bx?8226H
来让我们计算一下 ?应该填多少?
1044BH
是不是很简单?简单的16进制加分!

2.2.2进阶简单的计算:

还是以AX:0000H BX:0000H
程序段中的指令指令执行后AX中的数据指令执行后BX中的数据
mov ax,001AH001AH0000H
mov bx,0026H001AH0026H
add al,bl0040H0026H
add ah,bl2640H0026H
add bh,al2640H4026H
mov ah,00040H4026H
add al,85H00C5H4026H
add al,93H?4026H
来求一下?吧

00158H 错咯~

由于这里的寄存器只有16位 也就是说 158(AL与93H相加之后的低位)只能容纳第2位,所以1被舍去,所以这里保留58H 所以答案是 0058H ! 这里的1其实并没有被CPU丢弃哦(这里以后再讲)

注: 在进行汇编指令的编写时,要注意操作对象的位数要一致:
如: mov ax,bl mov ax,bh mov ah,bx mov al 2000,mov al,100H等都是错误的

下一篇讲解8086的寻址方法以及其他寄存器~!

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值