关于8086 的寻址问题

8086 中有4个段寄存器 分别为 ES CS DS SS 每一个都存放一个段基址 假如每个逻辑段的逻辑空间为64K 一共为 256K。 会不会有一种情况是 要访问的数据部在逻辑段中!这样的情况如何处理? 是不是要改变段寄存器的内容 如何改?现在学习汇编!更希望有一位大侠能够热心的提供一份 关于一个简单汇编程序在计算机中 的全部执行细节!!

如果有有的话可以发到我邮箱谢谢:278014133@qq.com
可能是我表达的不够清楚 我的意思是 一个程序从开始运行分配内存之后 就只是分配出4个逻辑段 ?段基地址可以改变 具体的如何操作 可以给我介绍点详细资料么?谢谢

第1个回答  2010-12-13
建议你看一下80x86汇编的基础,了解寻址方式,除了段地址寄存器,还有通用寄存器等其他寄存器
如把ES段,地址偏移200的数据时读到AX中,可以
mov bx,200
mov ax,ES:[bx]

8086是非常老的指令集了,CS,DS,ES,SS段寄存器可以批向一个段(COM文件运行时,默认在一个段中)也可以批向不同段,原来是PUSH和POP指令,改变段地址
MOV AX,新段地址
PUSH AX
POP ES
后来应该在80x86指令中直接给段地址寄存器付值

MOV ES,BX
mov SS,0x5678
第2个回答  2010-12-05
每一个地址空间都要有一组编码,这组编码就是所谓的地址。假设只有一根地址线,那么这跟地址线上只能是高电平或者低电平才可以被微机识别。高电平为1,低电平为0。那么这一根地址线可以识别两个地址单元。同理,两根可识别4个地址单元。也就是2^n(2的n次方)。2的20次方就是1024=1M。又因为一般8086的存储器单元由8个位组成,所以一个单元为8bit=1bytes=1字节。综上所述,20根地址线可表示1M字节
第3个回答  2010-12-04
调试啊debug里面 -t 分步执行,就可以看到执行每一步时各个寄存器中的内容了本回答被提问者和网友采纳

8086指令系统的寻址方式有哪些???
1.立即寻址方式 功能:操作数紧跟在操作码之后,直接把操作数从内存里送进寄存器;操作数直接存放在指令中,它作为指令的一部分存放在代码段里,这种操作数称为立即数;立即寻址方式用来表示常数,它经常用于给寄存器赋初值,并且只能用于源操作数字段,不能用于目的操作数字段;格式:mov al,1h 把1h...

8086\/8088指令系统中,源操作数有几种寻地址方式
1. 在8086\/8088指令系统中,源操作数有七种寻址方式:1. 立即数寻址方式:操作数直接嵌入指令中,如 `mov ax, 41h`。这种方式不执行总线周期,因此执行速度快。2. 寄存器寻址方式:使用寄存器的内容作为操作数,如 `mov ax, cx`。由于操作数在CPU内部,因此也不需要执行总线周期。3. 直接寻址方式...

8086\/8088cpu直接寻址多大的内存单元和外设?
1. 8086\/8088 CPU能够直接寻址1MB的内存单元和64KB的I\/O端口。2. 1979年,英特尔公司推出了8086\/8088芯片,这是一款16位微处理器,内部集成了29000个晶体管,运行频率为4.77MHz。3. 该芯片具有20位的地址总线,因此能够访问高达1MB的内存空间。4. 在早期,8086\/8088 CPU可以直接寻址1MB的内存空间,...

为什么8086\/8088的寻址能力为64KB?
8086\/8088为16位CPU,其内部的ALU、相关的地址寄存器(如SP、IP以及BX、BP、SI、DI)等都是16位的,因而对存储器地址的处理也只能是16位操作,即8086\/8088的直接寻址能力在64KB范围内。而实际上8086\/8088有20条地址线,它的最大寻址空间为1MB。这就产生了一个矛盾,即如何用16位的地址寄存器去表示...

关于8086寻址方式
寻址方式 是指在指令中用以说明操作数所在地址(位置)的方法。段超越 不是按照系统的约定,而是在指令中指定某一段寄存器作为存储器操作数的段地址。[注]8086\/8086指令系统对存储单元的访问,其段地址都是从系统事先约定好的段寄存器中获取,若不遵循系统的约定,则要制定段寄存器,即段超越。2. 与...

寻址方式与用于寻址的寄存器小结(8086)
在8086\/8088处理器中,内存寻址方式多样化,包括直接寻址、寄存器间接寻址、寄存器相对寻址、基址间址寻址和相对基址间址寻址。每种方式都有其独特的特点和应用场景。首先,直接寻址以立即数形式给出地址,方便定位,但不具备动态地址变换能力。比如,汇编指令 MOV AX, [3],其中的内存地址3是直接嵌入在...

8086的段地址为什么是16位的
因为段寄存器DS,ES,SS,CD是16位呗,也就段基址16位。理论上段地址越大直接可寻址空间越大。8086直接可寻址1M。即20位。物理地址=段基址*16(也就是10h)+偏移量。相妆16位再加4个0也就是20位了。什么原因?硬件这样呗。因为它就是十六位呗在8086中呗。

汇编8086寻址基础问题
存储区可以分为数据段、附加段、堆栈段和代码段,其中前三种都可以用来存储数据,最后一种存储指令的代码。在直接寻址方式中,你没有写段超越前缀的话,默认是数据段,所以数据的物理地址是32000H,同时由于8086存储是以字节为单位的,所以低地址存放低字节,高地址存放高字节,所以组合成一个字就是1234...

???8086的地址总线有20根,寻址范围为( 1M )字节。??
8086CPU地址总线有20根,能寻址1MB的存储单元。8086CPU通过16条数据总线、20条地址总线和若干条控制总线与外部进行数据交换。由于地址总线有20条,所以CPU可以访问的存储单元数为2的20次方,即1M个存储单元。每个存储单元存放8位二进制数,即一个字节,且这些存储单元都是顺序排列的,每个单元用唯一的一个...

8086\/8088存储器的物理地址是如何形成的?
8086寻址采用“段:偏移”的方式(如SS:BP),段地址寄存器和偏移地址寄存器都是16位长的,实际的线性地址是20位,由“(段 << 4) + 偏移”得到。32位CPU一般寻址空间也是32位线,直接产生32位的线性地址(不考虑描述符、分页等机制),因此不存在上述现象。另外,相关地,80286后就有了实模式与保护...

相似回答