内存寻址方式

这里进行的就是

但是最上面的是32位机器 所以不需要ds*10 但是也可以把ds看作是0

那就是将ebp地址所承载的值取出dword位出来也就是4字节 给eax 如果是ax 就是word 1字节 如图

EBP地址是

所指向的值是

所以eax变成

可以看出是将地址中的值倒向放在eax中 这是因为eax是高16位加上低16位 高对高 也就是0018FF8B对应的00与eax第一位对应

loop循坏 

这里是算2的10次方

首先 给ax赋值2  然后需要一个控制循坏的变量ecx (在32位机器中 ,cx是在16位机器中)赋值九 每次循坏就会自动减一 所以

9 :4   8:8   7:16  。。。

当ecx变为0时会跳出循坏 

loop循坏后面跟要开始循坏的那个地址

2.and和or指令 xor

and就是数学中的与  or就是或  xor是异或

如果是  and FFFF,F0F0  结果就是F0F0    and 00001111b,10100011b  结果是00000011

or F000,0FF0   FFF0    xor 0010b,1011b  1001b

这里可以用来转换字母大小写  根据ASCII

可以看出小写字母和大写字母之间的二进制 有一位不同

1000001->1100001 A->a

所以可以这样通过or来实现转换

mov cx,10  //10位字符串长度

mov al,[bx]   //bx是字符串的地址 这里是将字符串取一个字符给al

or al,100000B  //进行或运算

inc bx  //然后将bx加一 指向下一个字符

loop  //循环

3.内存寻址

SI:源变址寄存器可用来存放相对于DS段之源变址指针

列如mov ax,[SI] 这里是DS*10+SI作为地址指向的那个值取出来给ax

DI:目的变址寄存器,可用来存放相对于ES段之目的变址指针
列如mov ax,[DI]:这里是ES*10+DI作为地址

CS:代码段  DS:数据段  ES:附加段

SS:存放栈的段地址

SP:堆栈寄存器SP存放栈的偏移地址

BP:基数指针寄存器BP是一个寄存器,用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才使用

SP是栈指针 内容就是 SS*10+SP 所指向的地址的内容

列如

要注意bp不能和bx在一起  一个是用ss 一个是ds 会冲突

可以的组合方式

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值