前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(二)汇编语言——寄存器

(二)汇编语言——寄存器

作者头像
小点点
发布2022-12-22 08:27:28
4970
发布2022-12-22 08:27:28
举报
文章被收录于专栏:小点点

目录

通用寄存器

汇编指令

物理地址


        接下来我们来介绍寄存器,同时会介绍一些基本的语句(mov,add等),好了,就让我们进入今天的学习吧!同时,我们以8086为例子来介绍,参考来自王爽老师的书。


        说起寄存器,我们可不陌生,在单片机中我们已经接触过了。但是这个地方的寄存器要比单片机中有点不一样,以8086为例子,一共有14个寄存器:

  • 通用寄存器:AX、BX、CX、DX;
  • 变址寄存器:SI、DI;
  • 指针寄存器:SP、BP;
  • 指令指针寄存器:IP;
  • 段寄存器:CS、SS、DS、ES;
  • 标志寄存器:PSW 

        这些我们在后面都会一一介绍,不过首先,我们来介绍一下通用寄存器。

通用寄存器

        8086所有的寄存器都是16位的,所以最大可以存放2^16 - 1,但是目前有个问题,就是8080是8位的,那么两种是否是否是完全不同的两个东西,答案是否定的,这是因为8086的寄存器,分为高位(H)和低位(L),这就相当于两个8位,不得不说,还是满巧妙地,这样也解决了我的疑问,为什么在单片机里面寄存器可以拆开来用。

汇编指令

        接下来我们来简单介绍两个汇编指令:mov 和 add,主要就是用来移动数据和加数据。 可以说非常简单了 ,就不再赘述。唯一需要注意的就是,当加法溢出之后,溢出位是直接没有的,比如16位数据相加溢出,17位的1直接消失,而如果是8位,也不会向高位溢出,也是直接舍弃。

        就像这里红色圈起来的0058,当执行add al, 93,之后,相当于,c5+93=158,然后1溢出,不会向高位进位。 

物理地址

        我们知道,8086有20位地址总线,所以寻址能力应该为1M。但是有个问题,就是8086是16位的机器,并不能一次传输20位的数据,这可怎么办呢?         解决办法就是用两个16位寄存器合成20位数据,这样就解决了问题,也就是:物理地址=段地址×16+偏移地址,接下来我们来看一看。         这样,我们表示123C8就可以直接用1230:00C8来表示,当然也可以用其他的,在此不再赘述。

 未完待续

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通用寄存器
  • 汇编指令
  • 物理地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档