汇编语言4之loop指令和bx寄存器

[bx]

在使用masm编译汇编源程序的时候,不能使用类似:mov ax,[0]作为相对寻址的方式。替代的方法就是现将偏移地址存到bx中,然后利用mov ax,[bx]的方式来代替.或者以ds:[偏移地址]的方式来寻址,在8086CPUT中,进行寄存器间接寻址的时候,[…]中的内容只可以是变址(index,指SI, DI)寄存器或基址(base,指BX, BP)寄存器。

mov ax,2000h
mov ds,ax
mov bx,1000h
mov ax,[bx]

bx寄存器常常用于存放偏移地址

loop指令

指令的格式是:loop标号,标号就是地址,这个标号必须存在于loop之前,标号会在编译的时候被替换成地址,

CPU执行loop指令的时候需要进行两步操作

  • (cx)=(cx)-1

  • CPU会自动判断cx中的值,cx的值如果不为零则会执行标号中的程序,如果为零则会向下执行

所以cx寄存器和loop指令相关性很强,cx寄存器在程序运行开始的时候会保存本程序占用的字节数

例子计算

assume cs:codesg

codesg segment
	mov cx,123
	mov ax,0
	s:add ax,236
	loop s
	
codesg ends
end

汇编语言在进行越位赋值,赋值的时候操作数和源操作数位数不一样的时候会自动给高位补上零

使用16进制的时候如果使用开头为字母的数例如mov ax,ffff的时候masm编译不会通过,因为编译器不会识别字母开头的数,如果使用这样的数需要在最高位补上0,就是mov ax,0ffff

debug的常用命令

]

g命令用于执行到某个位置

p命令用于程序某尾出返回,或者跳过循环

操作系统中安全的空间

]

注意点:

当需要将寄存器的数值写到内存单元的时候,是一个一个字节写入的,对于8086来说,寄存器为2byte,写入的时候需要考虑是否长度匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值