汇编语言中
- 语句不区分大小写,编译软件会自动识别语句
- 用户自定义的变量和符号必须区分大小写。
8086
1.寄存器
cpu在访问存储器时,必须指明:
- 段寄存器:所访问的存储单元属于哪个段
- 偏移量:相应存储单元与段起始地址(段基址)的距离
notes : 在程序设计中,可以把一个程序划分为任意个存储段。但只要在程序运行时,最多只有四个段,它们分别由CS,DS,ES和SS指定因为我们只有四个段寄存器呀ヾ(๑╹◡╹)ノ"
IP(指令指针)的内容不能直接被访问,不能直接用指令去读IP的值,也不能用指令为其赋值。但可通过某些指令的执行去修改IP的内容
2.存储器
存储器由若干个存储单元构成
存储单元的多少就表示存储器的容量大小
每个存储单元存放相同长度的二进制数
一个存储单元的长度一般为八位二进制数,即一个字节
每个存储单元有一个唯一的编号——地址
8086有二十根地址线,即它的存储器寻址能力为2^20,即一兆字节空间
任何两个相邻字节单元就构成一个字单元٩(๑❛ᴗ❛๑)
两者遵循低对低,高对高
寻址方式
一条指令由操作码和操作数构成
- 操作码:该指令应完成的具体操作。在汇编语言中使用特定的符号来表示,称为助记符。eg:MOV,PUSH,ADD等
- 操作数:该指令的操作对象。eg:加法操作里的加数
寻址方式:寻找指令中所需操作数的各种方法,即提供指令中操作数的存放信息的方式
指令系统:计算机所能执行的各种类型的指令集合
notes:目的数只能做源操作数,不能传送给段寄存器
无操作数指令
- 指令不需要操作数,eg:暂停指令HLT
- 在指令格式中,没有显示地指明操作数,但是隐含了操作数的存放地方,eg:指令PUSHF
notes:段寄存器CS只能做源操作数,不能做目的操作数
eg:MOV AX,CS ✔
MOV CS,AX ✘
CS中存储的可是指令啊,所以不能轻易被改变~
notes :寄存器与存储单元的区分: [ ] 包括的为存储单元
notes:存储单元之间不能直接传送数据
notes:MOV指令不影响标志位
指令编码
- 一个存储单元逻辑地址表示方式 段基址:偏移量
- 段基址由某个段寄存器提供
- 偏移量表示该存储单元与段起始地址之间的距离,!也就是我们所说的有效地址EA
- 有效地址EA是位移量,基址,变值三个地址分量的组合结果,有CPU的执行单元EU计算出来
- 位移量:指令中直接给出的一个8位或16位数。一般源程序中以操作数名字(变量名或标号)的形式出现
- 基址:由基址寄存器BX或基址指针BP提供的内容
- 变址:由源变址寄存器SI或目的变址寄存器DI提供的内容
- 有效地址EA是位移量,基址,变值三个地址分量的组合结果,有CPU的执行单元EU计算出来