概述
1.使用bx来描述内存单元
我们知道mov ax,[0],是将偏移0的地址的值给寄存器ax,我们可以使用寄存器bx来动态的访问,比如:
mov ax,1000
mov ds,ax
mov bx,0000
mov cx,[bx]
这样就把地址:1000:0000地址的值给cx寄存器。
当我们要访问下一个地址的时候,我们可以使用inc指令,比如:
mov ax,1000
mov ds,ax
mov bx,0000
mov cx,[bx]
inc bx
inc bx
mov cx,[bx]
执行一个inc指令,bx的值就会加1,也就是偏移地址加1。以上程序移动了2次。
这样,我们可以使用【bx】动态的访问内存了。
2.循环指令loop
loop是一个循环指令。
loop的工作过程:
1.cx=cx-1
2.cx的值是否为0,如果不为0跳转到标准处,否则向下执行。
结论:所以,cx的值影响着loop指令。
看程序:
mov ax,2;首先,ax的值为2。
add cx,11;然后,cx的值为11.
s:;设置一个s标志
add ax,ax;设置一个s标志
loop s;最后loop指令查看cx的值是否为0,如果不为0,跳转到s:处,
;否则,向下执行程序mov bx,100
mov bx,100
x
以上程序成功的执行了2^12.
结论:
loop指令的执行过程,
1.cx=cx-1
2.判断cx是否为0,如果不为0,跳转到标志处,否则向下执行指令。
cx影响着loop的循环次数。
3.段前缀
比如指令:
mov ax,1000
mov ds,ax
mov bx,[0]
这个程序读出1000:0000地址的值给寄存器bx,我们知道ds是数据段,[bx]是偏移量,段前缀就是在前面加个前缀,看程序:
mov ax,1000
mov ds,ax
mov bx,ds:[0]
比如一下就是各个段的前缀。
mov ax,ds:[bx]
数据段ds和偏移[bx]
mov ax,cs:[bx]
代码段cs:偏移[bx]
mov ax,ss:[bx]
栈段ss和栈偏移【bx】
以上就是段前缀的一些概念。
最后
以上就是懵懂画板为你收集整理的汇编语言[BX]和loop指令的全部内容,希望文章能够帮你解决汇编语言[BX]和loop指令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复