汇编语言的一些疑问

来源:百度知道 编辑:UC知道 时间:2024/05/31 12:40:53
有几个问题一直没搞懂想问下。

1、存储器划分成段。每一个段大小可达64kb。是怎么算的?

00000 00001 00002……0000f

2、对于立即寻址,书上说它的操作数作为指令的一部分存在代码段中,既然是代码段(代码段是寄存器)那么它没有物理地址啊?代码段是,存储器?寄存器?有些混淆了?P108 3.8 (1)

4、LES DI,[BX] (DS)=B000H, [BX]=080AH (080AH)=05AFH (0B080CH)=4000H

指令执行后(ES)=? 怎么求?

5、乘法指令是怎么运算的 2个二进制数怎么乘?还有除法。具体的计算不知道怎么来,比如说给一个值算它的结果。

1.存储器分段是因为寄存器是16位表示的最大长度为64KB。地址线20位,存储器位数不够用,所以有逻辑地址和物理地址转换。
2.立即寻址是操作数在指令中,意思就是说操作数要在指令中给出,而指令部分是代码段中的。代码段在执行时放在RAM存储器中,执行的时候是有地址的,当然有对应物理地址。代码段既不是存储器,也不是寄存器。它是你编写的功能代码部分。它操作的对象可以是内、外存储器也可以是寄存器,更可以是IO端口……代码段执行时要被调入RAM

4.……
5.

1、存储器每个段的大小(容量)是根据寄存器的位数算出来的。因为每个寄存器都是16位(Bits),2的16次幂(2^16)是65536,也就是65KB(Bytes)。

2、立即寻址方式,操作数是一个具体的数,作为指令的一部分与指令一起存在代码段中,是有物理地址的,但因为已经和指令在一起,就不必知道它的物理地址了。所谓寻址,就是寻找操作数的地址。既然就在身边,还要找吗?
存储器就是内存条的空间,而寄存器则是CPU中的固定存储空间。代码段是存储器中用于存放指令代码的部分空间。

4、指令LES的功能是把源操作数的低位字赋给目的操作数指定的寄存器、把高位字赋给附加段寄存器ES。那么,本指令执行后,DI=05AFH,ES=4000H。这两个数不是计算出来的,而是取出来的。

5、乘法运算在计算机中实际上是作乘数次被乘数的自身相加,除法则是用被除数减去除数,做减法的次数就是商。至于带小数的乘除法具体是怎么做的,我就不知道了,咱们作为用户也不必知道的那么多。

64KB是存储芯片(分页)大小,可以改变的,16条地址线(也可能少于16条,其它条数生成片选信号).立即数只能是源操作数.代码在汇编后已被一段连续RAM存储.乘法运算可化为移位和加法运算.浮点数二进制格式(三种)由IEEE754标准定义.

1.存储器分段是因为寄存器是16位表示的最大长度为64KB。地址线20位,存储器位数不够用,所以有逻辑地址和物理地址转换。