汇编语言:汇编指令,伪指令,其他符号
【CPU读写需要三个要素】:存储单元的地址(地址信息);器件的选择,读或写的命令(控制信息);读或写的数据(数据信息)
【存储器分类】:
- 随机存储器(主板上的RAM和插在扩展插槽上的RAM)
- 装有BIOS的ROM,主板上的BIOS(系统BIOS)和接口卡上的BIOS(如显卡和网卡上的BIOS)
- 接口卡上的RAM(如显存)
-
【总线分类】内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系
通用寄存器:AX,BX,CX,DX 可以分为高位和低位,例如AX可以分为AH和AL
偏移地址为16位,16位地址的寻址能力位64KB,所以一个段的长度最大为64KB
段寄存器:CS,DS,SS,ES
CS和IP:代码段寄存器和指令指针寄存器【8086CPU的工作过程】:
- 从CS:IP指向的内存单元读取指令,读取的指令放入指令缓存器
- IP=IP+所读取指令的长度,从而指向下一条指令
- IP=IP+所读取指令的长度,从而指向下一条指令
- 执行指令。转到步骤1,重复。
-
【jmp 段地址:偏移地址】:用指令中给出的段地址修改CS,偏移地址修改IP
【jmp 寄存器】:用寄存器中的值修改IP【debug】
- -r:查看CPU中各个寄存器中的内容
- -r reg:查看并修改某个寄存器的内容
- -d:查看内存中的内容(128个字节)
- -u:查看内存中的汇编指令
- -e:改写内存中的内容
- -t:执行CS:IP的指令
- -a:以汇编指令的形式在内存中写入机器指令
-
8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
mov bx, 1000H mov ds, bx mov al, [0]
上述指令会将1000:0中的数据读到al中,8086CPU不支持将数据直接送入到段寄存器
mov reg, data mov reg, reg mov reg, mem mov sreg, mem mov mem, reg mov sreg, reg mov reg, sreg
段寄存器SS和寄存器SP,【debug】的T命令在执行修改寄存器SS的指令时,下一条指令也会紧接着被执行。
可执行文件包括两部分内容:程序和数据, 相关的描述信息
伪指令:
XXX segment : : XXX ends 段可以用来存放代码,数据或者当作栈空间
end 汇编程序的结束标记
assume 将某一段寄存器和程序中的某一个使用segment...ends的段相关联,例如assume cs:codesg
程序:由计算机执行,处理的指令或数据
标号:段名称,最终会被编译,链接程序处理为一个段的段地址,如codesg
程序返回:mov ax,4c00H int 21H
masm –> [.ASM]
link –> [.OBJ]masm c:\1;
link 1;