基址寄存器:8086的通用寄存器,就本身而言AX,BX,CX,DX是类似的,都是数据寄存器,用来存放操作数或中间结果,以减少对存储器的访问次数。多数情况下,数据寄存器被用在算术或者逻辑指令运算中进行算术逻辑运算。在有些指令中,则有隐含的用途,如累加器,基址寄存器,计数器,数据寄存器。这也是BX叫做基址寄存器的由来。
位移量:即偏移量。计算机汇编语言中的偏移量定义为:把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为“有效地址或
什么叫基址寄存器?什么叫位移量?
通用寄存器:8个,包括数据寄存器、地址指针寄存器、变址寄存器。 数据寄存器4个:AX BX CX DX,它们又可作为8个8位的寄存器使用,即AH BH CH DH AL BL CL DL AX称为累加器,I/O指令均使用该寄存器,访问外部硬件和接口。 BX称为基址寄存器,在访问内存时用于存放基地址。 地址指针寄存器2个:SP BP SP称为堆栈指针寄存器,BP称为基址指针寄存器,在作数组和字符串运算时,用于存放内存的偏移地址。 变址寄存器2个:SI DI SI称为源变址寄存器,DI称为目的变址寄存器,用于数据块操作的内存寻址。 汇编数上这些都有的 关于位移量: 初学汇编的人,对于数据在内存中的存储十分迷茫. 其实很简单,一个连一个地存储. 除非你特别指定要空出几个字符.否则都是一个空都不落地往下存. 于是,当你连续定义了字符a、字b、双字c,当你知道了a的偏移量,你可以用这个(偏移量+2)配合段地址找到字b的高位字节,亦可同时使用DWORD PTR调用从这个字节开始的四个字节所存储的内容组成的双字的值,十分随意。 16位汇编,用于16位计算机,它们最多处理16位二进制,至于双字,不能直接处理;地址线有20条,即地址为20位二进制。 32位汇编,用于32位计算机,它们最多处理32位二进制。地址线有32条,即地址为32位二进制。 地址的位数越大,所能表示的地址值就越大,所能容纳的内存容量就越大。 若将内存作为一个整体,将程序放在它的不同位置,则每个变量都有一个相当长相当复杂的地址,不便于管理。于是将内存分成若干个段,程序的第一个字节数据就存储于这个段之后第一个字节里,第100个字节数据就存储于这个段之后第100个字节里,这100就是这个字节数据的偏移量。 其实分段存储并非起于如上便于管理的原因,相信你所看的书里有详细的解释。它一开始是为了解决地址位数(20位)和16位计算机处理的数据位数(最大16位)之间的矛盾,16位计算机无法直接生成20位的地址,于是就在内存与数据之间增加了段的概念。段值为16位,在计算最终地址时,它将被乘以2的4次方,扩展到20位,就像1,2,3,4乘以100,变成100,200,300,400,便生成了段在内存中的起始地址。段值与偏移量运算便得到各个数据在内在中的地址。
汇编语言中什么是基址变址寄存器?
基址寄存器:寄存器BX称为基地址寄存器(Base
Register),它可作为存储器指针来使用。
变址寄存器:32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。
寄存器ESI、EDI、SI和DI称为变址寄存器(Index
Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。