视频投票网站怎么做的,济南网站备案程序,专门做名片的网站,东莞市新闻通用寄存器
AX#xff0c;BX#xff0c;CX#xff0c;DX#xff0c;是四种通用寄存器#xff0c;用于保存数据#xff0c;是数据寄存器四种寄存器容量都为两个字节#xff0c;是十六位寄存器#xff0c;表示范围0-65535#xff0c;216上述四种寄存器都可以分割成对应…通用寄存器
AXBXCXDX是四种通用寄存器用于保存数据是数据寄存器四种寄存器容量都为两个字节是十六位寄存器表示范围0-65535216上述四种寄存器都可以分割成对应的2个8位寄存器 AX AH AL高八位成为AH寄存器H是high的意思低八位是AL寄存器L是low的意思BX BH BLCX CH CLDX DH DL 上述的八位寄存器表示范围0-255 将16位寄存器分为两种寄存器 为了兼容性低位寄存器是为了保证原先的八位的就程序也能够读取原先的CPU仅仅有八位寄存器去书写程序8X86CPU一共有16条数据线一次可以处理8位数据和16位数据两种数据 8位数据字节型数据 byte 8 bits16位数据字型数据2 byte 16bits一个字型数据有两个字节型数据构成分别是高位字节和低位字节高位字节存在AH,BH,CH,DH,低位字节存放在AL,BL,CL,DL
寄存位实验
寄存器实验1移动数据
在用寄存器移动数据时数据的位数要和寄存器的容量相适应AX寄存器是16位寄存器对应的应该是四个16位进制的数字不能够将AL八位寄存器的数据转移到十六位寄存器中去同样的也不可以将AX16位寄存器中的数据直接传给AL8位寄存器中去
寄存器实验二加法
八位寄存器进行八位运算并不会将多出来的位进到高位寄存器中去仅仅只会自动清零然后再接着运算
总结
寄存器是相互独立的并不会出现进位的如果八位计算超出了八位那就仅仅保存最后的八位多余的消失。寄存器的加法是与位数相关的八位寄存器和八位寄存器相加十六位寄存器和十六位寄存器相加。八位相加出现多于八位仅保留八位。基本操作 a——输入基本的指令 * r——展示寄存器的值
地址寄存器
基本操作 摁“r”然后在摁“d”显示出对应的寄存器 073F0100》》段地址偏移地址 段地址DS,ES,CS,SS偏移地址SP,BP,SI,DI,IP,BX 寄存器的位数是16位但是CPU是有20根地址线寄存器的表达局限性限制了CPU的寻址能力为了让16位能够表达二十位就出现了地址加法器地址的计算方式将十六位表达变成二十位表达。 地址加法器段地址 X 16 十进制的1610H在十六进制之下 偏移地址 物理地址段地址 X 16 基础地址就是往后移了一位扩大了一位使之能够满足二十位的需求基础地址 偏移地址 物理地址 实际操作一个最终的物理地址只要满足公式都可以找到同样的物理地址段地址的范围是0 - ffff只要满足公式那么最终到达的物理地址都是相同的。
练习题
有一个数据放在内存为20000H的单元格现在给段地址位SA若想将偏移地址寻找到此单元格则SA应该满足的条件最小10H最大1001H这是一个问题十六位的范围0 - FFFF始终少了一个一而整除的时候会自动舍弃末位的1所以不可取。
CPU如何区分数据和指令
u指令将某个内存地址开始的字节全部当作指令d指令将某个内存地址开始的字节全部当作数据 两次相同的地址但是是完全不同的指令显示的结果也不同 r 空格 ds修改对应的段地址寄存器的值r 显示CPU中所有寄存器的值。虽说内存中的数据和指令是一致的但是CPU还是能够区分出来CPU是将CSIP地址所指向的内容全部当作指令来执行。 在8086CPU在任意时刻CPU将CSIP所指向的内容全部当作指令去执行
实验——CPU区分指令和数据 将我输入的对应的二进制代码变成对应的命令去执行修改CSIP的地址让其去执行对应的输入的代码用e指令修改20000的地址使其为下列相关的地址去执行。
执行之后指令行左侧地址已经改变读取地址就按照地址里的数据进行执行问题在于平常读取数据难道会切换吗 为什么每一次u都是不一样的难道再写入数据吗
指令执行的过程
CPU从CSIP所指向的内存单元中读取指令存放到指令缓存器中去IP IP 所读指令的长度从而指向下一条指令执行指令缓存器中的内容回到步骤一
IP寄存器指令的长度关系 在20000中输入如下的数字 修改控制寄存器的命令然后进行运算。第一次运算是以b8204e作为第一个控制指令开始计算的mov占了三个字节下一次执行ip的值就会加3。 分别对应的是 CSIP 当前控制符的对应的字符串 控制指令 操作的数据 问题是操作的数据从哪里来 第一次执行 第二次执行
下述显示的是073F0100对应的数据形式 下述显示的是073F0100对应的汇编指令的形式 下述时开始运行
未运行时
JMP指令
转移指令可以修改CS和IP这两个寄存器决定了CPU从哪里读取数据