汇编复习-寄存器

加班再晚,该看的汇编还是得看完。if you're struggling,that means you're progressing.看书时不写废话


一个典型的CUP是由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。在CUP中:

  • 运算器进行信息处理;
  • 寄存器进行信息存储;
  • 控制器控制各个器件进行工作;
  • 内部总线连接各种器件,在它们之间进行数据的传送。

8086CPU共有14个寄存器,分别是AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。程序员通过改变各种寄存器中的内容来实现对CPU的控制。

通用寄存器(AX、BX、CX、DX)

8086CPU的所有寄存器都是16位的,和数据总线一样同为16位,可以存放两个字节AX、BX、CX、DX用于存放一般的数据,被称为通用寄存器。一个寄存器能存储的最大值为1111111111111111(二进制),65535(十进制)。
每个寄存器都能分为两个独立使用的8位寄存器来使用,例如AX可分为AH和AL。

注意16位寄存器被拆分为8位后16进制的变化

字在寄存器中的存储

8086CPU可以一次性处理以下两种尺寸的数据。1、字节(byte),一个字节由8个bit组成;2、字(word),一个字由两个字节组成。
这里说下数制,通常我们使用十六进制来表示一个数据,因为4位二进制数代表一位16进制数,这样看起问题来更为直观。比如二进制0100111000100000可表示为4(0100)、E(1110)、2(0010)、0(0000)十六进制数,如果这个数据在AX中,那么AH为4E、AL为20

几条汇编指令

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

注意:
1、当ax = 8226;bx = 8226执行指令add ax,bx把bx的数据加入ax。ax = 8226 + 8226 = 1044C,但是ax为16为寄存器,只能存放4位十六进制数据所以ax的数据位944C。如果使用的是ah、al8位寄存器,和十六位也是同理。
2、在使用汇编进行数据传送或运算时,注意指令的两个操作对象的位数应当是一致的。比如8位寄存器应该和8位寄存器或者8位寄存器最大值255的数据进行运算;16位寄存器应该和16位寄存器或者16位寄存器最大值65535的数据进行计算。

物理地址

每一个内存单元在存储空间中都有唯一的地址,我们将这个地址称为物理地址。在CPU向地址总线上发出物理地址之前,必须在内部形成这个物理地址。

16位结构的CPU

8086的CPU为16位结构的CPU,特征如下:

  • 运算器一次最多可以处理16位数据
  • 寄存器的最大宽度为16位(如AX)
  • 寄存器和运算器之间的通路为16位(数据总线16位)

8086CPU给处物理地址的方法

8086有20位地址总线,也就是达到2^20*8bit(每个内存单元的大小)=1MB的寻址能力。但是8086又是16位结构在内部一次性处理、传输、暂时存储的地址位16位地址,也就是只达到64KB的殉职能力。

8086CPU采用了地址加法器将2个16位地址合成为一个20位物理地址。

8086CPU相关部件得逻辑结构

地址加法器采用物理地址=段地址×16+偏移地址的方法合成物理地址。

打比方
从学校到图书馆的距离位2826米。

学校到图书馆的距离

当同学A用纸条告诉同学B距离时候,可以在纸条上写入2826。但是如果纸条有两张,但每张纸条只能写三个数字的时候,可以在第一张纸条写入200,第二张纸条写入826,然后约定第一张纸条×10后与第二张纸条相加,200×10+826=2826米。

段地址×16
段地址×16有个更为常用的说话是二进制左移4位,用二进制举例如下:

左移位数 二进制 十六进制 十进制
0 10 2 2
1 100 4 4
2 1000 8 8
3 10000 10 16
4 100000 20 32

故地址加法器的工作过程如下图所示:

地址加法器工作过程

段的概念

CPU使用将内存分段的方式来管理内存。例如:10000~100FF内存单元组成一个段,该段的段地址为1000H(根据公式段地址左移4位与偏移地址相加得到的物理地址)大小为100H(0~FF,为FF+1=100)

分段

因为数据可以通过不同的段地址和偏移地址指向同一物理地址(段地址2000H,偏移地址1F60H 或者 段地址2100H,偏移地址0F60H),故在描述中可以写为:

  • 数据存在内存2000:1F60单元中。
  • 数据存在内存的2000H段中的1F60H单元中。

段寄存器(CS、SS、DS、ES)

如要访问内存时需要提供段地址和偏移地址。段地址在段寄存器中存放。8086CPU有4个寄存器(CS、SS、DS、ES)

CS和IP

CS和IP时8086CPU中最关键的寄存器,CS为代码段寄存器,IP为指令指针寄存器,在任意时刻,CPU将CS:IP(CS×16+IP)指向的内容当作指令执行。
运算时运行过程如下:

1
2
3
4
5
6
7
8

在8086CPU加电启动或复位后,CS和IP被设置为CS=FFFFH, IP=0000H,即在开机启动时,CPU从内存FFFF0H单元中读取第一条指令开始执行。
如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。

修改CS、IP的指令

我们通常使用mov指令来修改通用寄存器的值,但是不能用该指令修改CS、IP的值。能够改变CS、IP的内容的指令统称为转移指令。
jmp指令

  • jmp 2AE3:3,执行后,CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。
  • 若只想修改IP的值,可以“jump 某一合法寄存器”
jmp ax AX CS IP
执行前 1000H 2000H 0003H
执行后 1000H 2000H 1000H

代码段

将若干地址连续的内存单元看作一个段,根据公式“物理地址=段地址×16+偏移地址”那么:

  • 段的起始地址一定是16的倍数。
  • 偏移地址为16位,16位地址的寻址能力为2^16=64KB,所以一个段的最大长度为64KB。

将一段内存当作代码段,仅是我们在编程时的一种安排,若要让CPU执行我们放在代码段中的指令,必须将CS:IP指向我们定义代码段的首地址。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,077评论 8 114
  • 一个典型的 CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。前面所说的总线,相对于 CPU 而言...
    刘桂良阅读 1,529评论 1 3
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,401评论 0 1
  • 组件 计算机是一种数据处理设备,它由CPU和内存以及外部设备组成。CPU负责数据处理,内存负责存储,外部设备负责数...
    哆啦灬少A梦阅读 1,560评论 1 2
  • 阿爸天父,孩子在主耶稣的名里以及圣灵的大能之中,来到你的面前。我奉耶稣的名,靠圣灵的大能求告你。你是我生命的主,是...
    余姊妹阅读 13,312评论 0 0