【汇编】SI DI 的用法

您所在的位置:网站首页 汇编语言len 【汇编】SI DI 的用法

【汇编】SI DI 的用法

#【汇编】SI DI 的用法| 来源: 网络整理| 查看: 265

一、汇编语言中,为什么SI和DI不能同时使用汇编 其实你可以想一下,这两个寄存器的意思,SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就得出了需要基址寄存器。 你要是把这两个寄存器同时使用,那你地址变化的基址都没有,你该怎么变化呢?你在谁的基础上变化(也就是地址偏移)? 对于这些汇编中的规定,其实有时并不需要书上详细的介绍,我们都应该可以从中推导出这些规则,书上的那些介绍个人认为只是用来验证我们的推测的。或是对我们所掌握的知识的进行检测,用来说明我们所掌握的是对的! 

1:数据寄存器,一般称之为通用寄存器组 

     8086 有8个8位数据寄存器,      这些8位寄存器可分别组成16位寄存器:      AH&AL=AX:累加寄存器,常用于运算;      BH&BL=BX:基址寄存器,常用于地址索引;      CH&CL=CX:计数寄存器,常用于计数;      DH&DL=DX:数据寄存器,常用于数据传递。 

   2:地址寄存器/段地址寄存器 

     为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:      CS(Code Segment):代码段寄存器;      DS(Data Segment):数据段寄存器;      SS(Stack Segment):堆栈段寄存器;      ES(Extra Segment):附加段寄存器。 

3:特殊功能的寄存器 

     IP(Instruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;      SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。      BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;      SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;      DI(Destination Index):目的变址寄存器,可用来存放相对于 ES 段之目的变址指针。 二、si,di使用的例子 SI DI是8086CPU中和bx功能相近的寄存器,SIDI不能够分成两个8位寄存器来使用. 

下面三组指令实现了相同的功能: 

(1)

MOV BX,0 MOV AX,[BX]

(2)

MOV SI,0 MOV AX,[SI]

(3)

MOV DI,0 MOV AX,[DI]

下面的三组指令也实现了相同的功能: 

(1)

MOV BX,0 MOV AX,[BX+123]

(2)

MOV SI,0 MOV AX,[SI+123]

(3)

MOV DI,0 MOV AX,[DI+123]

用寄存器SI和DI实现将字符串 'hello world!' 复制到它后面的数据区中. 

DATA SEGMENT DB 'hello world!','$' DB 13 DUP(?) DATA ENDS ASSUEME CS:CODE DS:DATA CODE SEGMENT START: MOV AX,DATA MOV DS,AX MOV SI,0 MOV DI,13 MOV CX,12 S: MOV AX,[SI] MOV [DI],AX ADD SI,2 ADD DI,2 LOOP S MOV AX,4C00H INT 21H CODE ENDS END START

简化版:

CODE SEGMENT START: MOV AX,DATA MOV DX,AX MOV SI,0 MOV CX,12 S: MOV AX,0[SI] MOV 13[AX],AX ADD SI,2 LOOP S MOV 4C00H INT 21H CODE ENDS END START

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3