1 完整表示内存单元需要两个信息:内存单元地址+内存单元长度.
2 (ax)=((ds)*16+2)====>mov ax,[2]
3 ((ds)*16+2)=(ax)====>mov [2],ax
4 (ax)=(ax)+2====>add ax,2
5 ax与[ax]的区别?mov bx,ax<==>(bx)=(ax) mov bx,[ax]<==>(bx)=((ds)*16+(ax))
[x]表示x作为偏移地址,默认ds作为段地址
比如:
[ax]表示ax存储内容是偏移地址,默认ds是段地址
[100]表示偏移地址是100H,默认ds是段地址。为什么不能说成“100H处存储的内容是偏移地址”?因为“100H”是一个内存偏移量,不能像ax寄存器一样存储数据。为什么不能说成“ax表示是偏移地址”?因为“ax”是一个寄存器,它存储内容表示偏移量,字符“ax”怎能表示偏移量呀。
6 ()表示寄存器或者是一个内存单元内容
简单表示就是“()”表示“存储内容”,非常类似“变量名”,那么为什么不使用“变量名”直接取代“存储内容”呢?
“变量名”是高级程序设计语言中的基本概念,但是在汇编语言中使用“变量名”描述寄存器(ax,bx,cx,dx......)就不合适了,汇编语言中没有定义变量名称的语法,所有通用寄存器名称都不能改变。
7 loop指令执行时,需要寄存器cx配合使用。在执行loop指令时,cx中存放循环次数,每次减1,直到0退出循环。