汇编语言笔记(一)

1  通用寄存器:AX,BX,CX,DX。由于8086上一代寄存器是8位的,所以为了向上兼容,AX又分为AH和AL,分别为底8位和高8位。

2  进行mov操作时,源操作数要与目的操作数的位数一致。比如mov ax,al是错误的,因为把8位赋值给了16位寄存器。

3  8086的cpu内部地址是16位,物理地址是20位。寻址公式为 物理地址=段地址*16+偏移地址。也可以说“段地址左移了4位”。这种寻址方式的本质就是:基地址+偏移地址。

4  段的概念。内存并没有被划分为段,而是CPU使用划分段的方式来管理物理内存。因此,可以根据编程的需要将连续的内存划分为段。但是一个段是有限制的,段只能是16的整数倍,而且段最大为64KB。

   (1) 观察下面地址

    物理地址      段地址      偏移地址

   21F60H      2000H      1F60H

                     2100H        F60H

   结论就是:CPU可以使用不同的段地址和偏移地址找到同一个物理地址,只要满足寻址公式就可以了。

   (2) 数据存储在内存单元21F60H中,这句话的准确含义是什么?

    由于存储单元用两个元素来进行描述,所以对PC机而言有两种表达方法

          (a)数据存储在2000:1F60(2100:F60)中

          (b)数据存储在内存2000段中的1F60单元中

5  存储段地址的寄存器称为段寄存器,8086中分别是CS,DS,ES,SS。

6  最重要的寄存器,CS和IP。在8086中,假设任意时刻,CS的内容为M,IP的内容为N,那么下一条指令的存储地址为M*16+N。这表示CPU将从该地址读取指令并执行。当从内存中读出一条指令之后,IP的内容会根据指令的大小自动增加,到底增加多少字节可以查Intel的白皮书。由于指令和数据都是二进制数据,那么CPU在工作的时候怎样区分指令和数据呢?结论就是,CS:IP指向的内存就是指令,凡是被CS:IP执行过的二进制都是指令。

7  如何修改CS和IP中的数值呢?mov cs,2000  mov ip,1F60可以吗?注意,不能使用mov指令来修改CS和IP中的数值。修改CS和IP中的数值只能使用跳转指令。

    (1)如果想要同时修改CS和IP中的数值,可以使用"jmp 段地址:偏移地址"。执行后,CS=段地址,IP=偏移地址。

    (2)如果仅仅修改IP中的数值,可以使用"jmp 某一个合法寄存器的地址"。注意,只能是寄存器地址,不能是内存地址。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值