解释汇编语言的意思$P00 45 IN 01 R1 INPUT device->R1 $P01 00 LDA 00 00

解释汇编语言的意思
$P00 45 IN 01 R1 INPUT device->R1
$P01 00 LDA 00 00 R0 (20)-> R0
$P02 20
$P03 86 MOV R1 R2 R1->R2
$P04 A8 SBC R2 R0 R2-R0-CY->R0
$P05 F5 RLC R1 R1 R1右移一位
$P06 0C BZC 00 00 00->PC
$P07 00
绍兴二 1年前 已收到1个回答 举报

Cgsbily 幼苗

共回答了21个问题采纳率:85.7% 举报

1.将ebx的值拿出来加上18,结果记为X
2.将edi的值复制给内存地址为X的空间
比如ebx = 2,ebx+18 = 20(这里姑且理解18为十进制),edi = 6
假设内存数据全是0,
内存地址 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
内存数据 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
因为edi是32位寄存器,所以edi=0x00000006,而Intel或AMD的CPU都是little endian的,little endian理解起来就是把32位按8位分组,再颠倒,比如0x12345678在内存里就是78 56 34 12,所以存入内存地址20的空间就是(占用20 21 22 23,因为一个字节8位):
内存地址 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 |20 21 22 23| 24 25
内存数据 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |06 00 00 00| 00 00
mov [ebx+18],edi在反汇编里一般就是将一个对象的成员值改为edi
相当于c++里的:
obj->shift18 = edi;
或者c里的:
arr[shift18] = edi;

1年前

1
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 1.378 s. - webmaster@yulucn.com