1、完整的描述一个内存单元,需要两种信息:(1)内存单元的地址;(2)内存单元的长度(类型)
[bx]同样也标识一个内存单元,它的偏移地址在bx中,比如下面的命令:
mov ax,[bx]
将一个内存单元中的内容送入ax,这个内存单元的长度为2个字节(字单元),存放一个字,偏移地址在bx中,段地址在ds中。
Mov al,[bx]
将一个内存单元的内容送入al,这个内存单元的长度为1个字节(字节单元),存放一个字节,偏移地址在bx中,段地址在ds中。
2、[BX]
Mov ax ,[bx]
功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中。即:(ax)=((ds)*16+(bx))。( )表示一个寄存器或一个内存单元中的内容,( )中的元素可以是3种类型:(1)寄存器名;(2)段寄存器名;(3)内存单元的物理地址
3、loop指令
cx和loop指令相配合实现循环的功能:
- 在cx中存放循环的次数
- loop指令中的标号所标识的地址要在前面
- 要循环执行的程序段没要写在标号和loop指令的中间
cx和loop指令相配合实现循环的功能的框架如下:
mov cx,循环次数
s :
循环执行的程序段
Loop s
4、段前缀
在访问内存单元的指令中显示给出内存单元的段地址所在的段寄存器,比如:
Mov ax,ds:[bx]
Mov ax,cs:[bx]
Mov ax, ss:[bx]
Mov ax, es:[bx]
这些出现在访问内存单元的指令中,用于显示地指明内存单元的段地址的“ds:”“cs:”“ss:”“es”,在汇编语言中成为段前缀。