广州建网站哪儿济南兴田德润简介,建设类建设机械证官方网站,企点下载官网,凡人网站建设8086CPU存储分段管理
问题1#xff1a;8086是16位cpu#xff0c;最多可访问#xff08;寻址#xff09;多大内存#xff1f;
运算器一次最多处理16位的数据。地址寄存器的最大宽度为16位。访问的最大内存为#xff1a;216 64K 即 0000 - FFFF。
问题2#xff1a;808… 8086CPU存储分段管理
问题18086是16位cpu最多可访问寻址多大内存
运算器一次最多处理16位的数据。地址寄存器的最大宽度为16位。访问的最大内存为216 64K 即 0000 - FFFF。
问题28086允许最大内存1M如何实现访问寻址到所有内存
8086CPU有20位地址总线可以传输20位地址达到1M寻址能力但8086CPU是16位构造。8086CPU采用一种在内部使用两个16位地址合成的方式来形成一个20位的物理地址。
在8086cpu中对存储器的管理是采用分段管理的方式。将内存划分成多段通过段基址 段偏移 方式访问。 8086CPU有20条地址线
最大可寻址控件为2 20 1MB物理地址范围从 00000H ~ FFFFFH
8086CPU 将1MB控件分成许多逻辑段
每个段最大限制为64K段地址的低4位为0000B 物理地址和逻辑地址
物理地址对应每个物理储存单元都有唯一的20位地址编号就是物理地址从 00000H ~ FFFFFH。逻辑地址分段后在用户编程时采用的逻辑地址形式为段基地址段内偏移地址
注意
一个物理地址可以由任意个逻辑地址表示。虽然一个物理地址可以由多个逻辑地址表示但基于分段原则一般编程中不会碰到。
逻辑地址解析
段地址说明逻辑段在主存中的起始位置。8086规定端地址必须是模16的地址。为什么因为这样处理器就不用多一次不必要的运算。偏移地址说明主存单元距离短起始位置的偏移量每段不超过64KB偏移地址也可用16位数据表示。 逻辑地址与物理地址的转换
将逻辑地址中的端地址左移4位加上偏移地址就得到20位物理地址
一个物理地址可以有多个逻辑地址
内存地址 段基址 * 10H4 段偏移
逻辑地址1460 : 100、 1380 : F00
物理地址14700H 、 14700H
例子
段基址073F,段偏移0100 内存地址073F0 100 074F0;段基址063F,段偏移1200 内存地址063F0 1200 075F0;段基址043F,段偏移0120 内存地址043F0 120 04510;
注意
段基址 段偏移 的方式一般写作 段地址:段偏移称为逻辑地址。偏移地址称为 EA。effective address通过逻辑地址计算出来的内存地址称作为物理地址。一个段最大是64K一个段最小是0即是不存在 段与段之间重叠1M内存最多可以划分65535个段 段与段之间不重叠1M内存最多可以划分 1M/64k 16 个段 段划分的原则
段大小可以不是64K。段与段之间不能有重叠。
注意
8086不会管分配dos系统不会管分配内存分段靠自己。
程序员可用内存dos系统中编程应用程序可用内存约600K。 段寄存器
8086中段基地址都是存储在段寄存器中段偏移可以用立即数或者通用寄存器指明。 DS 数据段默认使用DXSI, DI CS 代码段保存的是代码绑定CSIP使用 SS 堆栈段用作函数栈绑定SSSP使用 默认使用BP ES 扩展段常用于字符串操作 跨段访问
在DOXBOX的Debuug环境下
没有段超越的指令实例
MOV AX,[2000H] ; AX - DS:[2000H]
从默认的DS数据段取出数据
采用段超越前缀的指令实例
MOV AXES[2000H] AX -- ES:[2000H]
从指定的ES附加段取出数据
使用A,U命令默认是CS段使用D,E命令默认是DS段。 地址加法器
8086有20根地址线16根数据线其中数据线与地址线的低16位复用。内部通过地址加法器计算地址。 访问16位内存20位地址内存谁更快
访问16位地址内存块。因为不用经过地址加法器直接到20根地址总线。 机器码
汇编指令的组成
指令由操作码和操作数两部分组成。
操作码说明计算机要执行哪种操作如传送运算移位、跳转等操作它是指令不可缺少的部分。操作数是指令的参与者既各种操作的对象有些指令不需要操作数通常的指令都是一个或两个操作数也有个别指令是3个操作数甚至4个操作数。指令系统设计了很多操作数的来源寻找操作数的过程就是操作数的寻址操作数采取哪一种寻址方式会影响机器运行的速度和效率 机器码的分析
问题
内存中存储的是机器码是一些16进制的数字计算机是如何知道 多长的十六进制数字是代表一段执行机器码的如何知道机器码有多长如何知道操作数和源操作数的 操作码 操作数1操作数2注释
操作数2称为源操作数 src它表示参与指令操作的一个对象操作数1称为目的操作数dest它不仅可以作为指令操作的对象还可以用来存放指令操作的结果分号后的内容是对指令的解释 给出如下代码分析mov
89C3 MOV BX,AX 1000 1001 1100 0011
89CB MOV BX,CX 1000 1001 1100 1011
89D3 MOV BX,DX 1000 1001 1101 0011
89DB MOV BX,BX 1000 1001 1101 1011
89E3 MOV BX,SP 1000 1001 1110 0011
89EB MOV BX,BP 1000 1001 1110 1011
89F3 MOV BX,SI 1000 1001 1111 0011
89FB MOV BX,DI 1000 1001 1111 101189C3 MOV BX,AX 1000 100 1 11 000 011
89CB MOV BX,CX 1000 100 1 11 001 011
89D3 MOV BX,DX 1000 100 1 11 010 011
89DB MOV BX,BX 1000 100 1 11 011 011
89E3 MOV BX,SP 1000 100 1 11 100 011
89EB MOV BX,BP 1000 100 1 11 101 011
89F3 MOV BX,SI 1000 100 1 11 110 011
89FB MOV BX,DI 1000 100 1 11 111 011
如上可以得出结论
16位寄存器是按位存储的
ax - 000、 cx - 001、 dx - 010、 bx - 011、sp - 100、 bp - 101、 si - 110、 di - 111
mov si, di
1000 1001 1111 1110 89fe88C7 MOV BH,AL 1000 1000 1100 0111
88E7 MOV BH,AH 1000 1000 1110 0111
88DF MOV BH,BL 1000 1000 1101 1111
88FF MOV BH,BH 1000 1000 1111 1111
88CF MOV BH,CL 1000 1000 1100 1111
88EF MOV BH,CH 1000 1000 1110 1111
88D7 MOV BH,DL 1000 1000 1101 0111
88F7 MOV BH,DH 1000 1000 1111 011188C7 MOV BH,AL 1000 100 0 11 000 111
88E7 MOV BH,AH 1000 100 0 11 100 111
88DF MOV BH,BL 1000 100 0 11 011 111
88FF MOV BH,BH 1000 100 0 11 111 111
88CF MOV BH,CL 1000 100 0 11 001 111
88EF MOV BH,CH 1000 100 0 11 101 111
88D7 MOV BH,DL 1000 100 0 11 010 111
88F7 MOV BH,DH 1000 100 0 11 110 111
如上可得出结论
8位寄存期也是按照位来存储的分别如下
al - 000、 cl - 001、 dl - 010、 bl - 011、 ah - 100、 ch - 101、 dh - 110、 bh - 111 89FE MOV SI,DI 1000 1001
88FE MOV DH,BH 1000 100089C3 MOV BX,AX 1000 10 0 1 11 000 011
89CB MOV BX,CX 1000 10 0 1 11 001 011
89D3 MOV BX,DX 1000 10 0 1 11 010 011
89DB MOV BX,BX 1000 10 0 1 11 011 011
89E3 MOV BX,SP 1000 10 0 1 11 100 011
89EB MOV BX,BP 1000 10 0 1 11 101 011
89F3 MOV BX,SI 1000 10 0 1 11 110 011
89FB MOV BX,DI 1000 10 0 1 11 111 011
88C7 MOV BH,AL 1000 10 0 0 11 000 111
88E7 MOV BH,AH 1000 10 0 0 11 100 111
88DF MOV BH,BL 1000 10 0 0 11 011 111
88FF MOV BH,BH 1000 10 0 0 11 111 111
88CF MOV BH,CL 1000 10 0 0 11 001 111
88EF MOV BH,CH 1000 10 0 0 11 101 111
88D7 MOV BH,DL 1000 10 0 0 11 010 111
88F7 MOV BH,DH 1000 10 0 0 11 110 1118B07 MOV AX,[BX] 1000 10 1 1 00 000 111 1000 10 d w mod rrr rrr/mmm
8B05 MOV AX,[DI] 1000 10 1 1 00 000 101
8B03 MOV AX,[BPDI] 1000 10 1 1 00 000 011
8B00 MOV AX,[BXSI] 1000 10 1 1 00 000 000
8B4212 MOV AX,[BPSI12] 1000 10 1 1 01 000 010 disp8
8B825634 MOV AX,[BPSI3456] 1000 10 1 1 10 000 010 disp16
8A825634 MOV AL,[BPSI3456] 1000 10 1 0 10 000 010 disp16
8B817856 MOV AX,[BXDI5678] 1000 10 1 1 10 000 001 disp16
89817856 MOV [BXDI5678],AX 1000 10 0 1 10 000 001 disp16
如上可得出结论
前面6位是操作码
d代表源操作数是寄存器还是内存
0从寄存器里面取值1从内存里面取值
w目的操作数宽度
oo模式
11寄存器到寄存器10DISP 16位01DISP 8 位00内存到寄存器没有偏移 89FE MOV SI,DI 1000 1001
88FE MOV DH,BH 1000 100089C3 MOV BX,AX 1000 10 0 1 11 000 011
89CB MOV BX,CX 1000 10 0 1 11 001 011
89D3 MOV BX,DX 1000 10 0 1 11 010 011
89DB MOV BX,BX 1000 10 0 1 11 011 011
89E3 MOV BX,SP 1000 10 0 1 11 100 011
89EB MOV BX,BP 1000 10 0 1 11 101 011
89F3 MOV BX,SI 1000 10 0 1 11 110 011
89FB MOV BX,DI 1000 10 0 1 11 111 011
88C7 MOV BH,AL 1000 10 0 0 11 000 111
88E7 MOV BH,AH 1000 10 0 0 11 100 111
88DF MOV BH,BL 1000 10 0 0 11 011 111
88FF MOV BH,BH 1000 10 0 0 11 111 111
88CF MOV BH,CL 1000 10 0 0 11 001 111
88EF MOV BH,CH 1000 10 0 0 11 101 111
88D7 MOV BH,DL 1000 10 0 0 11 010 111
88F7 MOV BH,DH 1000 10 0 0 11 110 1118B07 MOV AX,[BX] 1000 10 1 1 00 000 111 1000 10 d w mod rrr rrr/mmm
8B05 MOV AX,[DI] 1000 10 1 1 00 000 101
8B03 MOV AX,[BPDI] 1000 10 1 1 00 000 011
8B00 MOV AX,[BXSI] 1000 10 1 1 00 000 000
8B4212 MOV AX,[BPSI12] 1000 10 1 1 01 000 010 disp8
8B825634 MOV AX,[BPSI3456] 1000 10 1 1 10 000 010 disp16
8A825634 MOV AL,[BPSI3456] 1000 10 1 0 10 000 010 disp16
8B817856 MOV AX,[BXDI5678] 1000 10 1 1 10 000 001 disp16
89817856 MOV [BXDI5678],AX 1000 10 0 1 10 000 001 disp16 8E1E1200 mov bx,[0012] 1000 1110 0001 1110 0001 0002 0000 0000
8A1E1200 mov bx,[ds12]8B078B058B038B008B42128B8256348A8256348B81785689817856*******立即数 到寄存器*********
BB3412 MOV BX,1234 1011 1 0 11 0011 0100 0001 0010
BB1200 mov bx,12 1011 1 0 11
BE1200 mov si,12 1011 1 111 BB1200 mov bx,12
BB3412 MOV BX,1234
B712 mov bh,12*******立即数 到 内存********* 1100 011 w oo 000 mmm 立即数
C60712 mov byte ptr [bx],12 1100 011 0 00 000 111 0001 0010
C60012 mov byte ptr [BXSI],12 1100 011 0 00 000 000 0001 0010
C60212 mov byte ptr [BPSI],12 1100 011 0 00 000 010 0001 0010C60712C60012C60212
****** 内存 到 段寄存器*****
8E1F mov ds,[bx]*******寄存器 到 段寄存器*****
8ED8 mov ds,ax 1000 1110 11 011 000
8CC8 mov ax,cs 1000 1100 11 001 000 段寄存器编号分析
8EC8 mov cs,ax 1000 1110 11 001 000
8ED8 mov ds,ax 1000 1110 11 011 000
8EC0 mov es,ax 1000 1110 11 000 000
8ED0 mov ss,ax 1000 1110 11 010 000es,cs,ss,ds