当前位置: 首页 > news >正文

盐城网站建设厂商最好用的手机优化软件

盐城网站建设厂商,最好用的手机优化软件,wordpress主题加密了,网站策划人员需要做哪些工作《汇编语言》- 读书笔记 - 第2章-寄存器 2.0 8086CPU 寄存器段地址:偏移地址 2.1 通用寄存器2.2 字在寄存器中的存储2.3 几条汇编指令表2.1汇编指令举例表2.2 程序段中指令的执行情况之一问题 2.1表2.3 程序段中指令的执行情况之二问题 2.2 检测点 2.12.4 物理地址2.5 16位结构…

《汇编语言》- 读书笔记 - 第2章-寄存器

  • 2.0 8086CPU 寄存器
    • 段地址:偏移地址
  • 2.1 通用寄存器
  • 2.2 字在寄存器中的存储
  • 2.3 几条汇编指令
    • 表2.1汇编指令举例
    • 表2.2 程序段中指令的执行情况之一
    • 问题 2.1
    • 表2.3 程序段中指令的执行情况之二
    • 问题 2.2
  • 检测点 2.1
  • 2.4 物理地址
  • 2.5 16位结构的CPU
  • 2.6 8086CPU给出物理地址的方法
  • 2.7 “段地址X16+偏移地址=物理地址”的本质含义
  • 2.8 段的概念
  • 内存单元地址小结
  • 检测点 2.2
  • 2.9 段寄存器
  • 2.10 CS和IP
  • 2.11 修改 CS、IP 的指令
    • 问题 2.3
  • 2.12 代码段
  • 2.9~2.12 小结
  • 检测点 2.3

CPU由运算器控制器寄存器等构成,内部总线连接这些器件,外部总线连接主板上其他器件。
对于汇编程序员来说,寄存器最主要的部件,我们能做的就是通过改变寄存器中的内容控制CPU
不同CPU的寄存器个数和结构不同。8086CPU有14个寄存器,包括:
通用寄存器:AX、BX、CX、DX
段寄存器:CS、SS、DS、ES
偏移指针寄存器:SI、DI、SP、BP、IP
标志寄存器:PSW

2.0 8086CPU 寄存器

寄存器EN全称功能
通用寄存器
AXAccumulator Register累加器,用于算术运算和数据传输。可拆成高8位ah和低8位al分开使用。
BXBase Register基地址寄存器,用于存放内存地址。可拆成高8位bh和低8位bl分开使用。
CXCount Register计数器,用于循环计数或者数据传输。可拆成高8位ch和低8位cl分开使用。
DXData Register数据寄存器,也可以用于 I/O 操作。可拆成高8位dh和低8位dl分开使用。
段寄存器
DSData Segment Register数据段寄存器,存放程序的数据的基地址。
ESExtra Segment Register附加段寄存器,存放一些额外数据的基地址。
SSStack Segment Register堆栈段寄存器,存放堆栈的基地址。
CSCode Segment Register代码段寄存器,存放当前执行指令的代码段的基地址。
偏移指针寄存器
IPInstruction Pointer指令指针,寄存器。
SPStack Pointer栈指针,指向当前堆栈顶部。
BPBase Pointer基址指针,用于访问堆栈中的参数和局部变量
SISource Pointer源变址指针,用于源操作数的偏移地址
DIDestination Pointer目的变址指针,用于目的操作数的偏移地址
标志寄存器
PSWProgram Status Word程序状态寄存器,主要用于反映处理器的状态和ALU运算结果的某些特征及控制指令的执行。

段地址:偏移地址

段地址:偏移地址说明
CS:IP指向下一条指令的物理地址
SS:SP指向当前堆栈顶部的物理地址
DS:BX指向数据的物理地址
DS:SI指向数据的物理地址。例:复制中的源
DS:DI指向数据的物理地址。例:复制中的目标

2.1 通用寄存器

8086CPU 的所有寄存器都是 16 位的,可以存放两个字节。
AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。

  • 数据在寄存器中的存储情况

在这里插入图片描述

  • 四个通用寄存器都可以拆分为高低位,分开使用。

在这里插入图片描述

2.2 字在寄存器中的存储

8bit(位)组成一个Byte(字节)。2字节组成一个
所以一个字包含两个字节。共16位。

在这里插入图片描述
我们再看个例子:9527H这个字的数据可以当作整体来用,表示:
9527H = 10010101 00100111 =38183
也可以把高低位拆开分别使用,表示:
高位:95H = 10010101B = 149
低位:27H = 00100111B = 39

进制寄存器值高位低位
169527H9527
21001010100100111B1001010100100111
103818314939

补充:10进制数直接与高低位对应很难理解。需要转为216进制分出高低位再转成10进制。

2.3 几条汇编指令

  1. 汇编指令寄存器名时,不区分大小写。
  2. 下面的两个"问题"主要是介绍了寄存器执行加法后溢出的问题。

表2.1汇编指令举例

汇编指令控制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 程序段中指令的执行情况之一

(原 AX 中的值:0000H,原 BX 中的值:0000H)

程序段中的指令指令执行后AX中的数据指令执行后BX中的数据
mov ax,4E20H4E20H0000H
add ax,1406H6226H0000H
mov bx,2000H6226H2000H
add ax,bx8226H2000H
mov bx,ax8226H8226H
add ax,bx?(参见问题2.1)8226H

问题 2.1

  • 指令执行后AX中的数据为多少?

8226H + 8226H = 1044CH
AX 只有16位(对应4个16进制数)
所以溢出了,最高位的1丢失。
最后AX中剩下的就只有044CH

表2.3 程序段中指令的执行情况之二

程序段中的指令指令执行后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?(参见问题2.2)4026H

问题 2.2

指令执行后AX中的数据为多少?

C5H + 93H = 158H
AL 只有8位(对应2个16进制数)
所以溢出了,最高位的1丢失。
最后AL中剩下的就只有58H
注意:add al,93H进行的是 8 位运算。单独使用AL时,它作为一个独立的8位寄存器,和AH无关。并不会把溢出的1放到 AH中去。

在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的,例如:

  • 正确的写法
mov ax,bx
mov bx,cx
mov ax,18H
mov al,18H
add ax,bx
add ax,20000
  • 错误的写法
mov ax,bl		 ; 在8位存器和16位存器之间传送数据
mov bh,ax		 ; 在16位寄存器和8位存器之间传送数据
mov al,20000	 ; 8位存器最大可存放值为255的数据
add al,100H		 ; 将一个高于8位的数据加到一个8位存器中

检测点 2.1

《汇编语言》- 读书笔记 - 检测点 2.1

2.4 物理地址

CPU 访问内存单元时,需要使用物理地址。
所有的内存单元构成一个线性空间,每个内存单元在其中有唯一的地址,这就是所谓的物理地址
不同的 CPU 可以采用不同的方式来形成物理地址。对于 8086CPU,在发送物理地址到地址总线之前,它需要先在内部生成物理地址。

2.5 16位结构的CPU

  • 运算器一次最多可以处理 16 位的数据;
  • 寄存器的最大宽度为 16位;
  • 寄存器和运算器之间的通路为 16 位。

8086CPU是16位结构,一次性能够处理传输暂存信息长度最大为16位。(内存单元的地址也是信息)

2.6 8086CPU给出物理地址的方法

8086CPU有20地址总线,达到1MB寻址能力。
也就是说地址总线一次能收发20辆车。
但CPU一单只能打包16车货。
如果CPU来一单,就发车。那地址总线上就要跑4辆空车。
为了不浪费。
CPU决定一次发两单,每单都少装点货,拼到一起刚好20车,至于谁多谁少,程序员可以根据自己调配。
一单是段地址,一单是偏移地址。
CPU中有一个地址加法器,它用来计算最终的物理地址:
物理地址 = 段地址x 16 + 偏移地址
在这里插入图片描述

  • 如图 2.6所示,当8086CPU 要读写内存时:
  1. CPU中的相关部件提供两个16 位的地址,一个称为段地址,另一个称为偏移地址;
  2. 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
  3. 地址加法器将两个 16 位地址合成为一个 20 位的物理地址;
  4. 地址加法器通过内部总线将 20 位物理地址送入输入输出控制电路;
  5. 输入输出控制电路将 20 位物理地址送上地址总线;
  6. 20 位物理地址被地址总线传送到存储器。

在这里插入图片描述
在这里插入图片描述

2.7 “段地址X16+偏移地址=物理地址”的本质含义

段地址x16+偏移地址=物理地址的本质含义是:CPU 在访问内存时,用一个基础地址(段地址X16)和一个相对于基础地址的偏移地址相加,得出内存单元的物理地址。
基础地址+偏移地址=物理地址这种寻址模式的一种实现方案。
例1:
在这里插入图片描述
这里如果应用 基础地址+偏移地址=物理地址的寻址模式。2000可视作基址,826可视作偏移地址。

例2:
在这里插入图片描述

2.8 段的概念

内存中没有的概念。是8086CPU使用 基础地址+偏移地址=物理地址方式寻址,来分段管理内存。
在这里插入图片描述

  1. 段地址是x16得来的。段起始地址一定是16的倍数。
  2. 偏移地址有16位,范围0000h~FFFFh。所以一个段最大为64KB
  3. 可以根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。

内存单元地址小结

  1. CPU可以用不同的段地址偏移地址组成同一个物理地址,也就是说同一个物理地址可以有很多种组合方式获得。
  2. 数据在21F60H内存单元中。对于8086PC机一般表达为:
    2.1. 数据存在内存2000:1F60单元中;
    2.2. 数据存在内存的2000H段中的1F60H单元中。

检测点 2.2

《汇编语言》- 读书笔记 - 检测点 2.2

2.9 段寄存器

8086CPU 有4 个段存器:CS、DS、SS、ES。用来存放内存单元的段地址。
见:8086CPU 寄存器

2.10 CS和IP

CS:代码段寄存器。存放当前执行指令的代码段的基地址。
IP:指令指针寄存器。保存着将要执行的指令在段中的偏移量。
CS:IP:指向接下来要执行的指令的物理地址。

在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,P=0000H,
即在 8086PC 机刚启动时,CPU 从内存 FFFFOH 单元中读取指令执行,
FFFFOH单元中的指令是8086PC机开机后执行的第一条指令。

8086机中,任意时刻,CPU将 CS:IP 指向的内容当作指令执行。.
执行过的一段信息对应的内存单元必然被 CS:IP 指向过。

图 2.10 展示了 8086CPU 读取、执行指的工作原理(图中只包括了和所要说明的问题密切相关的部件,图中数字都为十六进制)。
在这里插入图片描述
图2.10说明如下。

  1. 8086CPU当前状态:CS 中的内容为 2000HIP 中的内容为 0000H;
  2. 内存20000H~20009H单元存放着可执行的机器码;
  3. 内存20000H~20009H单元中存放的机器码对应的汇编指令如下。
地址内容长度对应汇编指令
20000H~20002HB8 23 013Bytemov ax,0123H
20003H~20005HBB 03 003Bytemov bx, 0003H
20006H~20007H89 D82Bytemov ax,bx
20008H~20009H01 D82Byteadd ax,bx

下面的一组图(图2.11~图 2.19),以图 2.10 描述的情况为初始状态,展示了8086CPU读取、执行一条指令的过程。注意每幅图中发生的变化(下面对 8086CPU 的描述,是在逻辑结构、宏观过程的层面上进行的,目的是使读者对 CPU 工作原理有一个清晰、直观的认识,为汇编语言的学习打下基础。其中隐蔽了 CPU 的物理结构以及具体的工作细节)。

在这里插入图片描述

总结 8086CPU的工作过程可以简要描述如下:

  • 首先:
    CSIP 送入地址加法器,得到CS:IP
    例:CS = 2000h, IP = 0000h
CS:IP =     CS * 16 + IP
CS:IP =  2000h * 16 + 0000h  ;16进制数 *16 等于左移1位。(进位了嘛)
CS:IP = 20000h      + 0000h
CS:IP = 20000h
  • 然后
    1、 从 CS:IP 指向的内存单元读取指令,读取的指令进入指令缓冲器;
    2、 IP=IP+本条指令的长度,从而指向下一条指令;
    3、 执行指令。转到步骤(1),重复这个过程:
  1. 20003H~20005H 获取 mov bx, 0003H 执行, IP=IP+3
  2. 20006H~20007H 获取 mov ax,bx 执行, IP=IP+2
  3. 20008H~20009H 获取 add ax,bx 执行, IP=IP+2

2.11 修改 CS、IP 的指令

在 CPU 中,程序员能够用指令读写的部件只有寄存器,通过改变寄存器中的内容实现对 CPU 的控制。程序员改变CS、IP 就实现了控制 CPU执行目标指令。

mov 不能修改 CSIP 它有专用的指令如:jmp

指令说明
jmp 2AE3:3用给定的地址修改CSIP
执行后:CS=2AE3HIP=0003H
jmp ax用寄存器ax中的值修改IP
执行前:ax=1000HCS=2000HIP=0003H
执行后:ax=1000HCS=2000HIP=1000H

CPU将从修改后的地址读取指令。

问题 2.3

内存中存放的机器码和对应的汇编指令情况如图 2.27 所示,设 CPU 初始状态:CS=2000H,IP=0000H,请写出指令执行序列。思考后看分析。
在这里插入图片描述
分析:

执行步骤内存地址
CS:IP
机器码汇编指令IP指向下一条指令执行后
寄存器变化
12000:0000B8 22 66mov ax, 6622hIP=IP+3AX = 6622h
22000:0003EA 03 00 00 10jmp 1000:3IP=IP+5CS = 1000h
IP = 0003h
31000:0003B8 00 00mov ax, 0000IP=IP+3AX = 0000h
41000:00068B D8mov bx, axIP=IP+2BX = 0000h
51000:0008FF E3jmp bxIP=IP+2IP = 0000h
61000:0000B8 23 01mov ax, 0123hIP=IP+3AX = 0123h
71000:0003转到第3步,循环了

2.12 代码段

在2.8 段的概念中我们知道了什么是段。
那么这段内存中如果存放的是指令,我们认为代是个代码段。
但它本质还只是内存中的一堆01,当CS:IP指向它,CPU就会把它当指令来执行。
例:

mov ax, 0000	(B8 00 00)
add ax, 0123H	(05 23 01)
mov bx, ax		(8B D8)
jmp bx			(FF E3)

这段长度为 10个字节的指令,存放在 123B0H~123B9H 的一组内存单元中。
假如(使用 jmp)将CS:IP设置为123B:0000 (指向了代码段中的第一条指令的首地址)。CPU就会执行它了。

2.9~2.12 小结

  1. 段地址在8086CPU的段寄存器中存放。当8086PU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址
  2. CS存放指令的段地址,IP存放指的偏移地址。8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行
  3. 8086CPU的工作过程:
    1. CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
    2. IP指向下一条指令;
    3. 执行指令。(转到步骤1,重复这个过程。)
  4. 8086CPU提供转移指令修改CS、IP的内容。

检测点 2.3

《汇编语言》- 读书笔记 - 检测点 2.3


文章转载自:
http://plasticiser.jnpq.cn
http://hawash.jnpq.cn
http://equanimousness.jnpq.cn
http://repeating.jnpq.cn
http://seromuscular.jnpq.cn
http://solan.jnpq.cn
http://erotica.jnpq.cn
http://handcraft.jnpq.cn
http://alsike.jnpq.cn
http://profuseness.jnpq.cn
http://lyallpur.jnpq.cn
http://asphaltum.jnpq.cn
http://confocal.jnpq.cn
http://briefless.jnpq.cn
http://monocoque.jnpq.cn
http://carcinology.jnpq.cn
http://luminize.jnpq.cn
http://laudative.jnpq.cn
http://melioration.jnpq.cn
http://organogeny.jnpq.cn
http://visby.jnpq.cn
http://tallboy.jnpq.cn
http://dorian.jnpq.cn
http://authority.jnpq.cn
http://toxaemia.jnpq.cn
http://fossilify.jnpq.cn
http://hystricomorphic.jnpq.cn
http://biracial.jnpq.cn
http://jamesonite.jnpq.cn
http://datival.jnpq.cn
http://insolvency.jnpq.cn
http://auditorium.jnpq.cn
http://unquenched.jnpq.cn
http://questor.jnpq.cn
http://roesti.jnpq.cn
http://butterwort.jnpq.cn
http://globefish.jnpq.cn
http://halfnote.jnpq.cn
http://muhtar.jnpq.cn
http://jape.jnpq.cn
http://weighty.jnpq.cn
http://disbound.jnpq.cn
http://laborsaving.jnpq.cn
http://met.jnpq.cn
http://mosaic.jnpq.cn
http://tenderer.jnpq.cn
http://juichin.jnpq.cn
http://superstrength.jnpq.cn
http://countermure.jnpq.cn
http://residentiary.jnpq.cn
http://haroseth.jnpq.cn
http://ramadan.jnpq.cn
http://soberminded.jnpq.cn
http://simulant.jnpq.cn
http://vitellogenous.jnpq.cn
http://patricentric.jnpq.cn
http://coralloid.jnpq.cn
http://eglestonite.jnpq.cn
http://fossilization.jnpq.cn
http://ischial.jnpq.cn
http://ephah.jnpq.cn
http://arciform.jnpq.cn
http://chockstone.jnpq.cn
http://subterhuman.jnpq.cn
http://lucite.jnpq.cn
http://atwitch.jnpq.cn
http://ostracise.jnpq.cn
http://pointedly.jnpq.cn
http://tramway.jnpq.cn
http://shown.jnpq.cn
http://cerebellar.jnpq.cn
http://crocky.jnpq.cn
http://overthrow.jnpq.cn
http://precostal.jnpq.cn
http://biform.jnpq.cn
http://ambassadorial.jnpq.cn
http://inextensible.jnpq.cn
http://calculatedly.jnpq.cn
http://hairsbreadth.jnpq.cn
http://pup.jnpq.cn
http://chromonema.jnpq.cn
http://locus.jnpq.cn
http://saditty.jnpq.cn
http://johnsonian.jnpq.cn
http://isoneph.jnpq.cn
http://turgidness.jnpq.cn
http://paal.jnpq.cn
http://stirring.jnpq.cn
http://forjudge.jnpq.cn
http://stv.jnpq.cn
http://megabuck.jnpq.cn
http://transmeridional.jnpq.cn
http://woolgathering.jnpq.cn
http://dagenham.jnpq.cn
http://uncomforting.jnpq.cn
http://chansonette.jnpq.cn
http://pitiless.jnpq.cn
http://ferrocyanide.jnpq.cn
http://wrinkle.jnpq.cn
http://waken.jnpq.cn
http://www.hrbkazy.com/news/76831.html

相关文章:

  • 网站做端口是什么市场调研的重要性
  • 重庆专业微信网站制作长沙全网推广
  • 做科学实验的网站百度seo排名优化提高流量
  • 电子商务网站建设的整体规划全国各大新闻网站投稿
  • 国土 住房与城乡建设部网站个人网站推广
  • 抚顺网站建设7113浏阳廖主任打人
  • 南昌专业做网站的竞猜世界杯
  • 郑州网站建设排名网络营销的网站建设
  • 日本韩国设计网站大全什么样的人适合做策划
  • 做网站西美花街怎么建立一个公司的网站
  • 做网站的公司不会设计app推广方案怎么写
  • 苹果cms永久免费影视建站程序网站策划书模板范文
  • 西安网站制作工作室湘潭seo公司
  • 政务大厅网站建设管理制度上海搜索排名优化公司
  • 厦门网站建设屈兴东2021年网络营销案例
  • 郑州哪里能做个人网页上海网站排名seo公司哪家好
  • 做网站交钱后以后还要教吗百度seo关键词排名优化工具
  • 贵州建设厅考试网站上海网站建设推广服务
  • 绍兴高端网站设计黄页大全
  • 深圳疫情今天最新消息郑州seo优化外包顾问阿亮
  • 图片网站 建站推广资源seo
  • 广东现在疫情最新情况怎样进行seo优化
  • 在什么网站可以接设计做网站seo推广营销
  • 公司名称域名网站站外推广方式有哪些
  • 怎么做局域网asp网站网络营销常用工具
  • 如何查询国外公司的注册信息杭州seo建站
  • ssm框架做音乐网站seo任务
  • 美食网站代做百度首页登录入口
  • 美容评测网站建设分析报告seo优化网站模板
  • 找别人做网站的注意事项列举网络推广的方式