image-20210131173209833

内存中的存储

image-20210131173340132

字型是 2 个字节!那 1 地址就是从高到低! 124E! 规律记住就行了!!!

image-20210131173654990

image-20210131173828607

DS 寄存器

image-20210131173951108

image-20210131174929632

段寄存器不能直接 mov

字的传递

image-20210131175300136

image-20210131182552957

image-20210131183918878

mov|add|sub 指令

image-20210131184004559

image-20210131184158805

image-20210131184454340

段寄存器 DS 不可以直接赋值!但是可以通过别的寄存器来回赋值!

数据段

image-20210131185108808

image-20210131201455013

image-20210131201746080

先进后出!

image-20210131202225597

image-20210131202350052

image-20210131202820020

进栈的时候!从栈低开始进去! 从高位开始读取数据! 计算机一般是上面是低位!下面是高位!

出栈时 先进后出!

AX 是 1122

BX 是 2266

CX 是 0123

CPU 怎么执行指令所在的位置!

image-20210131203238325

段寄存器 SS:SP

每次进制 SP 会先减二!

出栈 SP 会先 加二!

image-20210131203911951

当栈空的时候 SS:SP 指向的是 10010 地址!

image-20210131204550802

栈最底下是不放东西!用于 SS:SP 不说空栈!

当有一个元素时!那就是空栈地址上面那个!低一位!

SS:SP 任何时候指向栈顶元素!

image-20210131204931132

这里是字单元!看清楚!字单元是 16 位! SS:SP 指向 000E 时! 不是 000F 看清楚!

当你 POP 时,原始的数据是复制过去!

不是剪贴!所以数据还是存在的!格式化也没用!

栈顶超界

image-20210131210503807

栈溢出 (重点来了) (溢出攻击)

image-20210131210749276

栈与内存

image-20210131211332422

push|pop

image-20210131212056432

栈段地址 SS

数据的段地址 是 DS

image-20210131214349820

为啥会这样呢!

因为 SP 是 0010 所以会放到 000F 里!往后放!的

image-20210131215122347

image-20210131215138374

image-20210131215346342

image-20210131215830976

sp 会自动 - 2

image-20210131220837476

哦哦哦!懂了!

找到它栈的位置!再 push 和 pop!

栈的位置看 SS:SP

栈空的时候!SP 是要放到字单元的 + 2!你想放到 1000:0 那就 + 2 放到 1000:2 就可以了!刚刚学!记住!!🙄

image-20210201083755952

image-20210201083941165

栈段

image-20210201084325316

每次传输 16 位的数据

每次传输 16 位的数据!16*16=256B

256=2 的 16 次方! 256=64 KB

image-20210201085338389

image-20210201085641105

程序

image-20210201100911757

汇编指令和伪指令!

image-20210201101137282

end 是结束!ends 是段的结束!

image-20210201101233270

image-20210201101348723

image-20210201101725636

源程序

image-20210201101930149

image-20210201102009066

程序刚开始是以汇编指令的形式存在源程序里!

经过编译和连接后!变成机器码!变成可执行文件!.exe!

c 语言先翻译成汇编!再编译!

编写源程序

image-20210201103120279

编译就是把

伪指令和汇编指令转换成机器码!

汇编和链接

image-20210201105539129

image-20210201110021391

写好的汇编程序!

要通过编译器去编译成机器码! 可能不好直接编译!那分开编译!最后用连接器连接起来!生成可执行文件!

image-20210201110754530

就是 CPU 会从 cmd.exe 临时把权限和 1.exe 然后运行完。再返回给 cmd.exe