机器语言 汇编语言
计算机可以直接读得懂的语言,因其只用01两种信号难以编写学习,才产生了汇编语言,汇编语言由汇编指令和伪代码两部分组成,汇编指令是直接对应机器语言,而伪代码则需要编译器进行编译。
CPU与储存器
储存器
以二进制形式储存数据(包括代码)
存储器被分成若干个存储单位并从0编号每个存储单位一个字节(byte)
单位换算 : 8bit=1byte
1MB=210byte
1GB=210MB
1Tb=210GB
CPU
由运算器进行信息处理;
寄存器进行信息存储;
控制器控制各种器件进行工作组成
CPU内三者由内部总线连接
寄存器
8086有十四个寄存器:
通用寄存器:AX,BX,CX,DX(数据)SP,BP,SI,DI(指针&变址)
段寄存器:CS,DS,SS,ES
指令指针:IP
标志寄存器:PSW
通用寄存器常作为两个8位使用,H表示高位 L表示低位
AX=AH+AL
BX=BH+BL
CX=BH+BL
DX=DH+DL
两者联系
CPU与存储器进行以下三类信息的交换:
1、存储单元的地址(地址信息);
2、器件的选择、读或写命令(控制信息);
3、读或写的数据(数据信息) 。
而交换的桥梁便是总线,
总线分为地址总线、数据总线、控制总线。
总线的宽度:总线由多根线组合而成,每根线可以独立地流过高平或者低频脉冲
- 地址总线:总线宽度决定了CPU的寻址能力
例如:宽度为16,可以形成216个组合,这些组合对应了存储器中存储单位的编号 - 数据总线:总线宽度决定CPU一次可以进行数据传送的量
- 控制总线:总线长度决定CPU对其他器件的控制能力
物理地址
8086CPU寄存器最大宽度为16,而其有20位地址总线,为了使达1M的寻址能力得到利用,8086CPU采用在内部用两个16位地址合成20位地址,即物理地址
物理地址=段地址*16+偏移地址
一个物理地址可以对应多个段地址&偏移地址组合
- 这里的段地址相当于一个起点,偏移地址则是一个偏移量
- 段地址存放往往存放在段寄存器中:
几个特殊寄存器组合:
CS:IP指向当前要执行的指令,在debug中是T指令执行的代码
执行完命令后IP会自加一定位数让CS:IP指向下一条命令
SS:SP指向栈顶元素,同样push pop SP会自加
基础代码
- 赋值:mov
- 加法:add
- CS:IP 数值修改:jmp
CS:IP 无法用mov赋值
格式:jmp xxxx:xxxx同时给 CS IP 赋值
jmp 合法寄存器 给 IP 赋值
( jmp还是无条件跳转命令 )
debug命令
- - R查看 改变寄存器的值 例如: -R AX
- - D查看内存中的内容 -D xxxx:xxxx or -D xxxx:xxxx x
- -E 改修内存内容 可批量改写 :-E xxxx:xxxx x 00 01 02 33 or 提问式改写
- -U 翻译并显示内存中的汇编命令
- -T 执行CS:IP下一个指令
- -A 以汇编格式写入内存