(五)汇编语言——[bx]和loop指令

导读:本篇文章讲解 (五)汇编语言——[bx]和loop指令,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

[…]与(…)

[…]

(…)

idata

Loop指令

段前缀

总结


[…]与(…)

[…]

        这个我们其实见过,代表的是一个内存单元,段地址在DS中,偏移地址就是[bx]。

(…)

        这个是表示一个内存单元或寄存器中的内容,但是千万要注意,这个是人为规定的,不是汇编语法,上面那个是汇编语法。

        比如:movax,[2],这个指令,用()来表示就是:(ax)=((ds)*16+2)。

idata

       我们规定,符号idata表示常量。

Loop指令

        功能就是实现循环,有点类似与C语言的for循环,我们一起来看一看这到底是这么用的吧! 

        这个计数,靠的就是cx寄存器,cx寄存器里的数就是循环次数,然后标号就是执行的语句。接下来我们来看一看汇编代码。

  1. (cx)=(cx)-1;
  2. 判断cx中的值不为零则转至标号处执行程序如果为零则向下执行。
assume cs:code
code segment
	mov ax,2;
	mov cx,11
     s: add ax,ax
	loop s

	mov ax,4c00h
	int 21h
code ends
end

段前缀

        我们可以看到这个代码,本来很正常,但是经过编译之后,就变了,变成把00这个数放到AL寄存器里面了。 所以,我们需要使用段前缀来表示。

assume cs:code
code segment
	mov ax,2000h
	mov ds,ax
	mov al,[0]
	mov bl,[1]
	mov cl,[2]
	mov dl,[3]

	mov ax,4c00h
	int 21h
code ends
end

(五)汇编语言——[bx]和loop指令

        关于段前缀,使用方法还是比较简单的,就是在地址前加上段地址,如下。

mov ax,2000h
mov ds,ax
mov bx,0
mov al,ds:[bx]

总结

        比较简单,继续学习。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82327.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!