[BX]和Loop
BX
- [bx]类似[0]也表示一个内存单元,偏移地址默认在ds中。
- eg:mov ax,[bx]表示将长度为2个字节的内存单元内容送人ax, mov al,[bx]表示将长度为1个字节的内存单元内容送人ax。
Loop
- loop指令格式:CPU执行到loop指令时,要进行两步:cx中值减一;判断cx值,不为零则转至编号处执行。
- eg:s为标志
code segment
mov ax,0
mov cx,236
s:add ax,123
loop s
rnov ax,4c00h
int 21h
code ends
end
补充指令和注意点
- inc bx表示bx内容加1
- 汇编源程序中,数据不能以字母开头。比如A000h在汇编中要写为0A000h
- 在汇编源程序中,如果用指令访问一个内存单元, 则在指令中必须用“ [...] ” 来
表示内存单元,如果在“ [] ” 里用一个常量idata 直接给出内存单元的偏移地址, 就要在
“ [] ” 的前面显式地给出段地址所在的段寄存器。比如
mov al,ds: [0]
如果没有在“ [] ” 的前面显式地给出段地址所在的段寄存器, 比如
mov al, [0]
那么, 编译器1nasm将把指令中的“ [idata] ” 解释为“idata” 。
如果在“ [] ” 里用寄存器, 比如bx, 间接给出内存单元的偏移地址, 则段地址默
认在ds中。当然, 也可以显式地给出段地址所在的段寄存器。