我是靠谱客的博主 懵懂画板,最近开发中收集的这篇文章主要介绍汇编语言[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】

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

最后

以上就是懵懂画板为你收集整理的汇编语言[BX]和loop指令的全部内容,希望文章能够帮你解决汇编语言[BX]和loop指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部