汇编String&Array

汇编系列文章:
https://www.jianshu.com/nb/29822876

Primitive instructions

1
2
3
4
5
MOVSB、MOVSW、MOVSD
CMP...
SCA... (scan)
STO... (store)
LOD... (load)
  • MOVSD之前给ESI、EDI赋值(target在edi),之后ESI、EDI会自动加/减4(MOVSB自动加/减1)
    • DF用于控制方向,有CLD(clear)和STD(set),0为加
    • 重复使用rep movsd,前面给ecx赋值
  • CMPSD
    • REPE/REPZREPNE/REPNZ,配合DF和ecx
    • 之后使用jajb
  • SCA..
    • 类似TEST,可以使用jejne
  • STO..
    • EDI中的偏移量表示一个地址,可以把AL/AX/EAX的内容写进EDI中存储的偏移量代表的内存位置中(D为destination),同时EDI会递增/递减
  • LOD..
    • 从ESI指向的内存地址加载到AL/AX/EAX,S为source,ESI会递增/递减

二维数组

  • 用基址变址操作数[base+index]、基址变址偏移量操作数[base+index+displacement]或者displacement[base+index]
  • 使用的是ebx, esi,64位用rbx, rsiebx是行首地址
  • STRUCT, ENDS定义结构体