13、汇编语言中的间接寻址、跳转与循环指令详解

汇编语言中的间接寻址、跳转与循环指令详解

1. 间接寻址相关概念

在处理数组时,直接寻址通常不太实用,因为使用常量偏移量来访问多个数组元素不太现实。因此,我们使用寄存器作为指针(即间接寻址),并操作寄存器的值。当操作数使用间接寻址时,它被称为间接操作数。

1.1 间接操作数

在保护模式下,间接操作数可以是任何被方括号包围的32位通用寄存器(如EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)。假设寄存器包含某些数据的地址。例如:

.data
byteVal BYTE 10h
.code
mov esi,OFFSET byteVal
mov al,[esi] ; AL = 10h

若目的操作数使用间接寻址,则会将新值放入寄存器所指向的内存位置。例如:

mov [esi],bl

当使用间接操作数时,操作数的大小可能不明确。例如以下指令会使汇编器生成“操作数必须有大小”的错误消息:

inc [esi] ; error: operand must have size

此时,PTR运算符可确认操作数的大小:

inc BYTE PTR [esi]
1.2 数组与间接操作数

间接操作数是遍历数组的理想工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值