常量、变量、数据类型与数组操作详解
1. 一维数组的索引寻址模式
在 x86 - 64 架构中,索引寻址模式非常适合访问一维数组的元素。其语法甚至暗示了数组访问的操作。需要牢记的是,必须将索引乘以元素的大小,否则会产生错误的结果。
示例中假设索引变量是 64 位的值,但实际上,数组的整数索引通常是 32 位整数或 32 位无符号整数。因此,通常使用以下指令将索引值加载到 RBX 中:
mov ebx, index ; Zero - extends into RBX
由于将 32 位值加载到通用寄存器时会自动将该寄存器零扩展到 64 位,所以期望 64 位索引值的指令序列在使用 32 位整数作为数组索引时仍然可以正常工作。
2. 数组值排序
冒泡排序是一种常见的排序算法,适用于短数据列表和接近有序的列表,但对于其他情况效率较低。以下是一个简单的冒泡排序示例代码:
; Listing 4 - 7
; A simple bubble sort example.
; Note: This example must be assembled
; and linked with LARGEADDRESSAWARE:NO.
option casemap:none
nl = 10
maxLen = 256
true = 1
false = 0
bool typedef ptr byte
.const
ttl
超级会员免费看
订阅专栏 解锁全文

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



