[BX]和Loop命令

[BX]和Loop命令

 

[BX]和内存单元的描述

*

*完整描述一个内存单元,需要两种信息

1.内存单元的地址

2.内存单元长度(类型)

*[0]:0表示单元的偏移地址,段地址默认在ds中,单元长度由具体指令的其他操作对像指出,如AX,AL

LOOP指令

*描述性符号“()”

*约定符号idata表示常量

*格式:Loop 标号

*CPU执行loop时需要执行两步操作

loop s

1.(cx)=(cx)-1;

2.判断cx中的值,不为零转至标号s,为0执行下一条指令

*loop循环框架

mov cx,次数

s:

循环程序段

loop s

在Debug中跟踪用loop指令实现的循环程序

*赋值是指让ax中的数据的值和ffff:0006单元中数据的值大小相等

*即使两个数据的长度不同,但是他们的值是相等的

如何赋值

*汇编中数据不能以字母开头,需要在前加0

*用P和G指令直接执行完循环

Debug和汇编编译器masm对指令的不同处理

1、MASM代码中默认是十进制的,而debug是十六进制。

2、MASM中mov ax,[bx]将数据寄存器dx*16+bx中的值放入ax中

     Debug中使用mov ax,[0] 将数据寄存器dx*16+0中的值放入ax中

*如要将masm像Debug一样需要加上段地址ds

Loop和[bx]联合应用

*解决类型的匹配和结果的不超界:如8位和16位可以利用一个16位寄存器做中介

 具体做法:将内存单元中的8位数据赋值到一个16位寄存器ax中,再将ax加到bx上

段前缀

*ex:mov ax [bx]中,段地址默认在ds中,ds称为一个段前缀

*可以手动更改指令中的段前缀如将ds改为es,cs等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值