第五章 [BX]和loop指令
1.[bx]和内存单元描述
要完整描述一个内存单元需要 1)内存单元的地址; 2)内存单元的长度(类型)
bx也可以表示一个内存单元,偏移地址存在BX中
mov ax, [bx]
2. loop
循环指令
3. 我们定义的描述性符号 ()
(ax) 表示ax中的内容
(al) 表示al中的内容
((ds)*16 + (bx))
()中的元素可以有三种类型 1)寄存器名; 2)段寄存器名; 3)内存单元的物理地址(一个20位数据)
1)比如ax中的内容为0010h,描述为 (ax) = 0010H
2)2000:1000处的内容为0010H 描述为 (21000)=0010H
3)mov ax,[2]的功能 可以这样描述 (ax) = ((ds)*16 + 2)
4)mov [2], ax的功能 可描述为: ((ds)*16+2) = (ax)
5) 对于add ax,2可以描述为 (ax) = (ax) + 2;
6) 对于add ax, bx 可以描述为 (ax) = (ax) + (bx);
7)对于push ax 可以描述为 (sp) = (sp) - 2
((ss)*16 + (sp)) = (ax)
8)pop ax 可以描述为
(ax) = ((ss)*16 + (sp))
(sp) = (sp) + 2
() 表示的数据类型有两种 字节,字。是哪种类型由寄存器名或具体运算决定。
4. 约定符号 idata表示常量
例如 mov ax, [idata]
mov bx, idata
5.1 [BX]
mov ax, [bx] ; (ax) = ((ds)*16 + (bx))
mov [bx], ax ; ((ds) * 16 + (bx)) = (ax)
5.2 Loop指令
cpu执行loop指令的时候,要进行两部操作
1) (cx) = (cx) - 1
2) 判断(cx)不为0 则转至 标号处执行 为0 则向下执行
通常cx中存放循环次数