汇编之之之之13-14

裸函数

函数体内没有任何代码的函数
但是. 编译后的汇编代码还是会 进行压栈,填充数据,保护现场
恢复现场等操作

在这里插入图片描述

练习

需要熟悉堆栈结构,参数,局部变量的位置. 返回值的存储位置

调用约定

不同调用的 堆栈平衡,参数压栈 都是谁来做

在这里插入图片描述
win os 中使用的是 stdcal 的方式 对函数进行编译

ret 8

ret 8. 相当于 ret esp + 8.

在函数结束时,esp 出栈8个字节. 俩个内存单元.

程序入口

在这里插入图片描述

main 方法是 KERNEL.7c816d4f 进行调用. 调用了 mainCRTstartup
在调用了 main 方法.

真正的函数入口是 main

修改入口点

修改后的结果.
在这里插入图片描述
mainCRTStartup() 被拦截了 . 但做了很多工作
在这里插入图片描述
找到上面 函数之后,在找到一个 有三个参数的函数. 就是main 入口函数

数据类型

数据类型在汇编中是怎样表示

包括了存储格式和数据宽度

在这里插入图片描述
在这里插入图片描述

符号数据

有符号数和无符号数

jle: 小于等于
jbe: 大于等于

浮点数

整数

整数部分转为  二进制数.

小数

小数部分 乘 2.  知道尾数为0为止

在这里插入图片描述
科学计数

整数和小数部分组合: 1100.1. 在使用科学计数法表示这个数字
1100.1 == 1.1001 * 10^3. 这里的指数是3

浮点数格式

0: 符号位. 正数的话值为0. 负数值为1
00000000: 8位指数为
0000 0000 0000 0000 0000 000: 23位数据位

这时

将科学计数法的小数部分存入到 数据位

0 0000 0000 1001 0000 0000 0000 0000 000

在这里插入图片描述
另外

127 + x. x代表 指数. 如果指数是3,那么x就是3.指数是-3,x就是-3

计算

这里的 127 + 3= 130 == 0x82 == 1000 0010

之后,将 得出来的数字放到指数位即可
0 1000 0010 1001 0000 0000 0000 0000 000
在这里插入图片描述
最后,浮点数存储遵守 IEEE 规范

编码

将字符,汉字等转为 编码形式的数字,进行存储
在这里插入图片描述

ASCII

在这里插入图片描述

GB2312

在这里插入图片描述

GB2312-80

将俩个8位字节==16字节 存放一个字

在这里插入图片描述
ASCII 字节最高位都是0 GB2312最高位都是 1

那么将数据读取出来的时候,去查对应的表.

乱码

一些编码 别的国家也在用. 就会产生乱码问题

数组


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值