汇编语言中的间接寻址、跳转与循环指令详解
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 数组与间接操作数
间接操作数是遍历数组的理想工具
超级会员免费看
订阅专栏 解锁全文
2069

被折叠的 条评论
为什么被折叠?



