汇编语言[BX]和loop指令

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】

以上就是段前缀的一些概念。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值