目录
引言
1、[bx]和内存单元的描述
要完整地描述一个内存单元,需要两种信息:①内存单元的地址;②内存单元的长度(类型)(由具体指令中的其他操作对象指出)
[bx]也表示一个内存单元,它的偏移地址在bx中,段地址默认在ds中。
例子:
mov ax,[bx]
将一个内存单元中的内容送入ax,这个内存单元的长度为2字节(字单元),存放一个字,偏移地址在bx中,段地址在ds中。
mov al,[bx]
将一个内存单元中的内容送入al,这个内存单元的长度为1字节(字单元),存放一个字,偏移地址在bx中,段地址在ds中。
2、loop
3、描述性符号:“()”
“()”表示一个寄存器或者一个内存单元中的内容。例如(ax)=0010H表示ax中的内容为0010H;(21000H)=0010H,表示2000:1000处的内容为0010H。
“()”中的元素可以有3种类型:①寄存器名;②段寄存器名;③内存单元的物理地址(一个20位数据)。
4.约定符号idata表示常量
5.1 [BX]
mov ax,[bx]
功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中。即:(ax)=((ds)*16+(bx))。
mov [bx],ax
功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将ax中的数据送入内存SA:EA处。即:((ds)*16+(bx))=(ax)。
5.2 Loop指令
loop指令的格式是:loop标号
CPU在执行loop指令的时候,要进行两步操作:
①(cx)=(cx)-1;②判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行。
用loop指令来实现循环功能,cx中存放循环次数。
用cx和loop指令相配合实现循环功能的3个要点:
(1)在cx中存放循环次数;
(2)loop指令中的标号所标识地址要在前面;
(3)要循环执行的程序段,要写在标号和loop指令的中间。
用cx和loop指令相配合实现循环功能的程序框架如下:
mov cx,循环次数
s:
循环执行的程序段
loop s
计算2^12
assume cs:code
code segment
mov ax,2
mov cx,11
s: add,ax,ax
loop s
mov ax,4c00H;
int 21H
code ends
end
编程计算123*236,结果放在ax中