硬编码学习(五)

不确定长度编码

0x88    mov eb,gb
0x89    mov ev,gv
0x8a    mov gb,eb
0x8b    mov gv,ev

最短是2个字节,GB代表通用单字节寄存器(al到bh)
gv代表通用双/四字节寄存器
eb/ev代表内存地址或寄存器

8800 
0000 0000
00(mod) 000(opcode/reg) 000(r/m)
00 (00 01 11 10)
000(硬编码或寄存器:8个寄存器 000~111)
000(r/m 寄存器或内存单元)

            0X88
00 000 000  0x00    MOV BYTE PTR DS:[EAX],AL
00 000 001  0x01    MOV BYTE PTR DS:[ECX],AL
00 000 010  0x02    MOV BYTE PTR DS:[EDX],AL
00 000 011  0x03    MOV BYTE PTR DS:[EBX],AL
-------没按要求给出 下
00 000 100  0x04    MOV BYTE PTR DS:[ESP],AL
00 000 101  0x05    MOV BYTE PTR DS:[EBP],AL
100
101 这两个数要做特殊处理
--------没按要求给出 上
00 000 110  0x06    MOV BYTE PTR DS:[ESI],AL
00 000 111  0x07    MOV BYTE PTR DS:[EDI],AL



00 001 000  0x08    MOV BYTE PTR DS:[EAX],CL
00 010 000  0x10    MOV BYTE PTR DS:[EAX],DL

例题:
0x88 0x23
23= 0010 0011
    00 100 011
    mov byte ptr ds:[EBX],AH

0   000     al
1   001     cl  
2   010     dl
3   011     bl
4   100     ah
5   101     ch
6   110     dh
7   111     bh

01 100 011  0x63    MOV BYTE PTR DS:[EBX+3C],AH         加一个字节
10 100 011  0xa3    MOV BYTE PTR DS:[EBX+12345678],AH   加四个字节
11 100 011  0xe3    MOV bl,AH                           两个寄存器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值