汇编

指令和数据的表示



总线 地址总线 - 寻址能力 数据总线 - 数据传送能力 控制总线 - 多少种控制 - 控制能力

cpu对存储器的读写



ram 有 主板上的ram 扩展槽上的ram 内存条 显卡上的ram |主板上的ram | 扩展槽上的ram | |- 内存条 -|- 显卡上的ram-|
统一编写地址


8086pc为例


ms dos dos虚拟机
推荐 dos模拟器

访问寄存器和内存

寄存器


最大FFFF



ax- ah al



字长 - 字 word -16位
mov add

汇编不区分大小写

溢出问题
mov ah 0 …

八位加八位 进位的话直接丢掉 不会进到前面
物理地址

都是十六位寄存器 那么他的内部存储 暂存 传输能力也就是16位 - 64KB


20位 物理地址=段地址*16 偏移地址


段地址–内存没有分段 端的划分是cpu做的!!-他自己用的时候怎么分都行


CS DS SS ES
中文名. 代码段寄存器. 外文名. Code Segment. 在CPU执行指令时,通过代码段寄存器(CS,Code Segment)和指令指针寄存器( IP,Instruction Pointer)来确定要执行的下一条指令的内存地址。 在CPU中类似的寄存器有: DS:是 Data Segment 的缩写,翻译为“数据段寄存器”; SS:是 Stack Segment 的缩写,翻译为“堆栈段寄存器”; ES:是 Extra Segment 的缩写,翻译为“附加段寄存器”。

debug 调试程序 看cpu各种寄存器


Debug 神仙


rax ffff改ax
d

一行16B 一次列出128B

d 2000:0 2f 从0到2f

e改变内存neirong


e改变内存
u 将内存中的机器指令翻译为汇编指令 u 地址


手写汇编@@@!!!

A 一汇编格式在内存中写入机器指令 -常用

t执行cs:ip ;;;q退出debug
代码的执行






跳转指令jmp-用户不可能debug来做 必须要有这个指令

jmp 3:0b16同时修改cs ip 也可只修改ip


内存中的字 64位=64位一个字–寄存器大小


注意:4e 20在内存中的存放–低字节在低地址 高字节在高地址 存放为20 4e—读的时候先读高地址单元 在读低地址单元



这样看起来读起来更顺 反过来画内存就可以从上往下读了

错误做法

字单元–对于16位机器-两个连续地址的内存单元组成

ds和【address】配合实现字的传送,从内存中读数据

默认 段地址是ds-----------电路设计


注意 这是电路设计 不能用上一种方式



上面是CS与代码段的问题
下面开始DS与数据段的问题







